You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apex.apache.org by da...@apache.org on 2015/11/30 22:06:07 UTC

[01/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Repository: incubator-apex-malhar
Updated Branches:
  refs/heads/master 1f5676b45 -> 6aa1357a1


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.cc
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.cc b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.cc
deleted file mode 100644
index 560ef50..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.cc
+++ /dev/null
@@ -1,177 +0,0 @@
-#include <node.h>
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h>
-#include <v8.h>
-#include <node_buffer.h>
-#include <cstring>
-#include <cmath>
-#include <cstdlib>
-#include <iostream>
-#include <limits>
-
-#define SECURITY_WIN32 1
-
-#include "security_buffer_descriptor.h"
-#include "security_buffer.h"
-
-static Handle<Value> VException(const char *msg) {
-  HandleScope scope;
-  return ThrowException(Exception::Error(String::New(msg)));
-};
-
-Persistent<FunctionTemplate> SecurityBufferDescriptor::constructor_template;
-
-SecurityBufferDescriptor::SecurityBufferDescriptor() : ObjectWrap() {
-}
-
-SecurityBufferDescriptor::SecurityBufferDescriptor(Persistent<Array> arrayObject) : ObjectWrap() {
-  SecurityBuffer *security_obj = NULL;
-  // Safe reference to array
-  this->arrayObject = arrayObject;
-
-  // Unpack the array and ensure we have a valid descriptor
-  this->secBufferDesc.cBuffers = arrayObject->Length();
-  this->secBufferDesc.ulVersion = SECBUFFER_VERSION;
-
-  if(arrayObject->Length() == 1) {
-    // Unwrap  the buffer
-    security_obj = ObjectWrap::Unwrap<SecurityBuffer>(arrayObject->Get(0)->ToObject());
-    // Assign the buffer
-    this->secBufferDesc.pBuffers = &security_obj->sec_buffer;
-  } else {
-    this->secBufferDesc.pBuffers = new SecBuffer[arrayObject->Length()];
-    this->secBufferDesc.cBuffers = arrayObject->Length();
-    
-    // Assign the buffers
-    for(uint32_t i = 0; i < arrayObject->Length(); i++) {
-      security_obj = ObjectWrap::Unwrap<SecurityBuffer>(arrayObject->Get(i)->ToObject());
-      this->secBufferDesc.pBuffers[i].BufferType = security_obj->sec_buffer.BufferType;
-      this->secBufferDesc.pBuffers[i].pvBuffer = security_obj->sec_buffer.pvBuffer;
-      this->secBufferDesc.pBuffers[i].cbBuffer = security_obj->sec_buffer.cbBuffer;
-    }
-  }
-}
-
-SecurityBufferDescriptor::~SecurityBufferDescriptor() {
-}
-
-size_t SecurityBufferDescriptor::bufferSize() {
-  SecurityBuffer *security_obj = NULL;
-
-  if(this->secBufferDesc.cBuffers == 1) {
-    security_obj = ObjectWrap::Unwrap<SecurityBuffer>(arrayObject->Get(0)->ToObject());
-    return security_obj->size;
-  } else {
-    int bytesToAllocate = 0;
-
-    for(unsigned int i = 0; i < this->secBufferDesc.cBuffers; i++) {
-      bytesToAllocate += this->secBufferDesc.pBuffers[i].cbBuffer;
-    }
-
-    // Return total size
-    return bytesToAllocate;
-  }
-}
-
-char *SecurityBufferDescriptor::toBuffer() {
-  SecurityBuffer *security_obj = NULL;
-  char *data = NULL;
-
-  if(this->secBufferDesc.cBuffers == 1) {
-    security_obj = ObjectWrap::Unwrap<SecurityBuffer>(arrayObject->Get(0)->ToObject());
-    data = (char *)malloc(security_obj->size * sizeof(char));
-    memcpy(data, security_obj->data, security_obj->size);
-  } else {
-    size_t bytesToAllocate = this->bufferSize();
-    char *data = (char *)calloc(bytesToAllocate, sizeof(char));
-    int offset = 0;
-
-    for(unsigned int i = 0; i < this->secBufferDesc.cBuffers; i++) {
-      memcpy((data + offset), this->secBufferDesc.pBuffers[i].pvBuffer, this->secBufferDesc.pBuffers[i].cbBuffer);
-      offset +=this->secBufferDesc.pBuffers[i].cbBuffer;
-    }
-
-    // Return the data
-    return data;
-  }
-
-  return data;
-}
-
-Handle<Value> SecurityBufferDescriptor::New(const Arguments &args) {
-  HandleScope scope;  
-  SecurityBufferDescriptor *security_obj;
-  Persistent<Array> arrayObject;
-
-  if(args.Length() != 1)
-    return VException("There must be 1 argument passed in where the first argument is a [int32 or an Array of SecurityBuffers]");
-
-  if(!args[0]->IsInt32() && !args[0]->IsArray())
-    return VException("There must be 1 argument passed in where the first argument is a [int32 or an Array of SecurityBuffers]");
-
-  if(args[0]->IsArray()) {
-    Handle<Array> array = Handle<Array>::Cast(args[0]);
-    // Iterate over all items and ensure we the right type
-    for(uint32_t i = 0; i < array->Length(); i++) {
-      if(!SecurityBuffer::HasInstance(array->Get(i))) {
-        return VException("There must be 1 argument passed in where the first argument is a [int32 or an Array of SecurityBuffers]");
-      }
-    }
-  }
-
-  // We have a single integer
-  if(args[0]->IsInt32()) {
-    // Create new SecurityBuffer instance
-    Local<Value> argv[] = {Int32::New(0x02), args[0]};
-    Handle<Value> security_buffer = SecurityBuffer::constructor_template->GetFunction()->NewInstance(2, argv);    
-    // Create a new array
-    Local<Array> array = Array::New(1);
-    // Set the first value
-    array->Set(0, security_buffer);
-    // Create persistent handle
-    arrayObject = Persistent<Array>::New(array);
-    // Create descriptor
-    security_obj = new SecurityBufferDescriptor(arrayObject);
-  } else {
-    arrayObject = Persistent<Array>::New(Handle<Array>::Cast(args[0]));
-    security_obj = new SecurityBufferDescriptor(arrayObject);
-  }
-
-  // Wrap it
-  security_obj->Wrap(args.This());
-  // Return the object
-  return args.This();    
-}
-
-Handle<Value> SecurityBufferDescriptor::ToBuffer(const Arguments &args) {
-  HandleScope scope; 
-
-  // Unpack the Security Buffer object
-  SecurityBufferDescriptor *security_obj = ObjectWrap::Unwrap<SecurityBufferDescriptor>(args.This());
-
-  // Get the buffer
-  char *buffer_data = security_obj->toBuffer();
-  size_t buffer_size = security_obj->bufferSize();
-
-  // Create a Buffer
-  Buffer *buffer = Buffer::New(buffer_data, buffer_size);
-
-  // Return the buffer
-  return scope.Close(buffer->handle_);  
-}
-
-void SecurityBufferDescriptor::Initialize(Handle<Object> target) {
-  // Grab the scope of the call from Node
-  HandleScope scope;
-  // Define a new function template
-  Local<FunctionTemplate> t = FunctionTemplate::New(New);
-  constructor_template = Persistent<FunctionTemplate>::New(t);
-  constructor_template->InstanceTemplate()->SetInternalFieldCount(1);
-  constructor_template->SetClassName(String::NewSymbol("SecurityBufferDescriptor"));
-
-  // Set up method for the Kerberos instance
-  NODE_SET_PROTOTYPE_METHOD(constructor_template, "toBuffer", ToBuffer);
-
-  target->Set(String::NewSymbol("SecurityBufferDescriptor"), constructor_template->GetFunction());
-}


[80/98] [abbrv] incubator-apex-malhar git commit: Add @since tags and update change log for release 3.2.0

Posted by da...@apache.org.
Add @since tags and update change log for release 3.2.0


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/a2e3a730
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/a2e3a730
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/a2e3a730

Branch: refs/heads/master
Commit: a2e3a7309474e047411de75baed2c03c17ec114d
Parents: 29de890
Author: Thomas Weise <th...@datatorrent.com>
Authored: Thu Nov 5 23:43:09 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Thu Nov 5 23:43:09 2015 -0800

----------------------------------------------------------------------
 CHANGELOG.md                                    | 49 ++++++++++++++++++++
 .../contrib/converter/Converter.java            |  1 +
 .../contrib/schema/formatter/CsvFormatter.java  |  1 +
 .../contrib/schema/formatter/Formatter.java     |  1 +
 .../contrib/schema/formatter/JsonFormatter.java |  1 +
 .../contrib/schema/formatter/XmlFormatter.java  |  1 +
 .../contrib/schema/parser/CsvParser.java        |  1 +
 .../contrib/schema/parser/JsonParser.java       |  1 +
 .../contrib/schema/parser/Parser.java           |  1 +
 .../contrib/schema/parser/XmlParser.java        |  1 +
 .../datatorrent/demos/pi/NamedValueList.java    |  1 +
 .../demos/wordcount/FileWordCount.java          |  2 +
 .../lib/appdata/query/WindowBoundedService.java |  2 +
 .../lib/appdata/schemas/CustomTimeBucket.java   |  2 +
 .../lib/io/fs/AbstractFileSplitter.java         |  2 +
 .../datatorrent/lib/io/fs/FileSplitterBase.java |  2 +
 16 files changed, 69 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..3bf8a6b
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,49 @@
+Apex Malhar Changelog
+========================================================================================================================
+
+
+Version 3.2.0-incubating - 2015-11-08
+------------------------------------------------------------------------------------------------------------------------
+
+### Sub-task
+* [MLHR-1870] - JsonParser unit test failing
+* [MLHR-1872] - Add license headers in unit tests of parsers and formatters
+* [MLHR-1886] - Optimize recovery of files which are not corrupted
+* [MLHR-1889] - AbstractFileOutputOperator should have rename method to do rename operation
+
+### Bug
+* [MLHR-1799] - Cassandra Pojo input operator is broken
+* [MLHR-1820] - Fix NPE in SnapshotServer
+* [MLHR-1823] - AbstractFileOutputOperator not finalizing the file after the recovery
+* [MLHR-1825] - AbstractFileOutputOperator throwing FileNotFoundException during the recovery
+* [MLHR-1830] - Fix Backword Compatibility Errors
+* [MLHR-1835] - WebSocketInputOperator Creates More And More Zombie Threads As It Runs
+* [MLHR-1837] - AbstractFileOutputOperator writing to same temp file after the recovery
+* [MLHR-1839] - Configure All The Twitter Demos To Use Embeddable Query
+* [MLHR-1841] - AbstractFileOutputOperator rotation interval not working when there is no processing
+* [MLHR-1852] - File Splitter Test Failing On My Machine
+* [MLHR-1856] - Make Custom Time Buckets Sortable
+* [MLHR-1860] - Check for null fileName in new wordcount app in wrong place
+* [MLHR-1864] - Some Times Expired Queries Are processed
+* [MLHR-1866] - Travis-ci build integration
+* [MLHR-1876] - WindowBoundedService Can Block The Shutdown Of A Container
+* [MLHR-1880] - Incorrect documentation for maxLength property on AbstractFileOutputOperator
+* [MLHR-1885] - Adding getter methods to the variables of KafkaMessage
+
+### Task
+* [MLHR-1857] - Apache license headers and related files
+* [MLHR-1869] - Update Maven coordinates for ASF release
+* [MLHR-1871] - Expand checks in CI build
+* [MLHR-1891] - Skip install/deploy of source archives
+
+### Improvement
+* [MLHR-1803] - Add Embeddable Query To AppDataSnapshotServer
+* [MLHR-1804] - Enable FileSplitter to be used as a non-input operator
+* [MLHR-1805] - Ability to supply additional file meta information in FileSplitter
+* [MLHR-1806] - Ability to supply additional block meta information in FileSplitter
+* [MLHR-1824] - Convert Pi Demo to support Query Operator
+* [MLHR-1836] - Integrate schema with Jdbc POJO operators
+* [MLHR-1862] - Clean up code for Machine Data Demo
+* [MLHR-1863] - Make Custom Time Bucket Comparable
+* [MLHR-1868] - Improve GPOUtils hashcode function
+

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java b/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java
index ebf2925..601268d 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.classification.InterfaceStability;
  * 
  * @param <INPUT>
  * @param <OUTPUT>
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public interface Converter<INPUT, OUTPUT>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java
index 924acc6..490c4f2 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java
@@ -53,6 +53,7 @@ import com.datatorrent.netlet.util.DTThrowable;
  * @displayName CsvFormatter
  * @category Formatter
  * @tags pojo csv formatter
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public class CsvFormatter extends Formatter<String>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java
index 19a78e0..77fa630 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java
@@ -44,6 +44,7 @@ import com.datatorrent.contrib.converter.Converter;
  * @displayName Parser
  * @tags parser converter
  * @param <INPUT>
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public abstract class Formatter<OUTPUT> extends BaseOperator implements Converter<Object, OUTPUT>,

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java
index 344ac60..5f7bce6 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java
@@ -42,6 +42,7 @@ import com.datatorrent.netlet.util.DTThrowable;
  * @displayName JsonFormatter
  * @category Formatter
  * @tags pojo json formatter
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public class JsonFormatter extends Formatter<String>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java
index b387031..40fef69 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java
@@ -38,6 +38,7 @@ import com.thoughtworks.xstream.io.xml.XppDriver;
  * @displayName XmlParser
  * @category Formatter
  * @tags xml pojo formatter
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public class XmlFormatter extends Formatter<String>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java
index 4fd39fb..991f6eb 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java
@@ -59,6 +59,7 @@ import com.datatorrent.netlet.util.DTThrowable;
  * @displayName CsvParser
  * @category Parsers
  * @tags csv pojo parser
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public class CsvParser extends Parser<String>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
index d01e436..513be15 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
@@ -42,6 +42,7 @@ import com.datatorrent.netlet.util.DTThrowable;
  * @displayName JsonParser
  * @category Parsers
  * @tags json pojo parser
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public class JsonParser extends Parser<String>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java
index e5ff7f5..3c1df8f 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java
@@ -44,6 +44,7 @@ import com.datatorrent.contrib.converter.Converter;
  * @displayName Parser
  * @tags parser converter
  * @param <INPUT>
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public abstract class Parser<INPUT> extends BaseOperator implements Converter<INPUT, Object>,

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java
index 4931497..9e1c8be 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java
@@ -41,6 +41,7 @@ import com.datatorrent.api.Context;
  * @displayName XmlParser
  * @category Parsers
  * @tags xml pojo parser
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public class XmlParser extends Parser<String>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/demos/pi/src/main/java/com/datatorrent/demos/pi/NamedValueList.java
----------------------------------------------------------------------
diff --git a/demos/pi/src/main/java/com/datatorrent/demos/pi/NamedValueList.java b/demos/pi/src/main/java/com/datatorrent/demos/pi/NamedValueList.java
index f884994..ce5ef9d 100644
--- a/demos/pi/src/main/java/com/datatorrent/demos/pi/NamedValueList.java
+++ b/demos/pi/src/main/java/com/datatorrent/demos/pi/NamedValueList.java
@@ -37,6 +37,7 @@ import com.datatorrent.api.Context.OperatorContext;
  * <p>
  * @displayNamed Value
  * @tags count
+ * @since 3.2.0
  */
 public class NamedValueList<T> extends BaseOperator
 {

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/demos/wordcount/src/main/java/com/datatorrent/demos/wordcount/FileWordCount.java
----------------------------------------------------------------------
diff --git a/demos/wordcount/src/main/java/com/datatorrent/demos/wordcount/FileWordCount.java b/demos/wordcount/src/main/java/com/datatorrent/demos/wordcount/FileWordCount.java
index 51539dc..ee9439e 100644
--- a/demos/wordcount/src/main/java/com/datatorrent/demos/wordcount/FileWordCount.java
+++ b/demos/wordcount/src/main/java/com/datatorrent/demos/wordcount/FileWordCount.java
@@ -54,6 +54,8 @@ import com.datatorrent.common.util.BaseOperator;
  * to a different snapshot server.
  *
  * Since the EOF is received by a single operator, this operator cannot be partitionable
+ *
+ * @since 3.2.0
  */
 public class FileWordCount extends BaseOperator
 {

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java b/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java
index 4f653a3..ea9d54b 100644
--- a/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java
+++ b/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java
@@ -43,6 +43,8 @@ import com.datatorrent.netlet.util.DTThrowable;
  * <br/><br/>
  * <b>Note:</b> This service cannot be used in operators which allow checkpointing within an
  * application window.
+ *
+ * @since 3.2.0
  */
 public class WindowBoundedService implements Component<OperatorContext>
 {

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/library/src/main/java/com/datatorrent/lib/appdata/schemas/CustomTimeBucket.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/appdata/schemas/CustomTimeBucket.java b/library/src/main/java/com/datatorrent/lib/appdata/schemas/CustomTimeBucket.java
index f50bb4b..3075da5 100644
--- a/library/src/main/java/com/datatorrent/lib/appdata/schemas/CustomTimeBucket.java
+++ b/library/src/main/java/com/datatorrent/lib/appdata/schemas/CustomTimeBucket.java
@@ -28,6 +28,8 @@ import com.google.common.base.Preconditions;
 
 /**
  * This represents a {@link TimeBucket} which can be a multiple of a time unit.
+ *
+ * @since 3.2.0
  */
 public class CustomTimeBucket implements Serializable, Comparable<CustomTimeBucket>
 {

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileSplitter.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileSplitter.java b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileSplitter.java
index e7551a5..6ef9684 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileSplitter.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileSplitter.java
@@ -41,6 +41,8 @@ import com.datatorrent.lib.io.block.BlockMetadata;
 
 /**
  * An abstract File Splitter.
+ *
+ * @since 3.2.0
  */
 public abstract class AbstractFileSplitter extends BaseOperator
 {

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a2e3a730/library/src/main/java/com/datatorrent/lib/io/fs/FileSplitterBase.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/FileSplitterBase.java b/library/src/main/java/com/datatorrent/lib/io/fs/FileSplitterBase.java
index ebf3739..17a3bb6 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/FileSplitterBase.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/FileSplitterBase.java
@@ -36,6 +36,8 @@ import com.datatorrent.api.Operator;
 
 /**
  * A file splitter that receives its input from an upstream operator.
+ *
+ * @since 3.2.0
  */
 public class FileSplitterBase extends AbstractFileSplitter implements Operator.IdleTimeHandler
 {


[52/98] [abbrv] incubator-apex-malhar git commit: MLHR-1838 Added pojo parsers and formatters(csv, json, xml)

Posted by da...@apache.org.
MLHR-1838  Added pojo parsers and formatters(csv,json,xml)


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/3f4fe186
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/3f4fe186
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/3f4fe186

Branch: refs/heads/master
Commit: 3f4fe18665c59dadb8ad289f696df983bdc451ce
Parents: e1a4550
Author: shubham <sh...@github.com>
Authored: Fri Sep 11 16:26:03 2015 +0530
Committer: shubham <sh...@github.com>
Committed: Wed Oct 14 10:53:12 2015 +0530

----------------------------------------------------------------------
 contrib/pom.xml                                 |  12 +
 .../contrib/converter/Converter.java            |  43 +++
 .../contrib/schema/formatter/CsvFormatter.java  | 285 +++++++++++++++++
 .../contrib/schema/formatter/Formatter.java     | 101 ++++++
 .../contrib/schema/formatter/JsonFormatter.java | 109 +++++++
 .../contrib/schema/formatter/XmlFormatter.java  | 172 ++++++++++
 .../contrib/schema/parser/CsvParser.java        | 314 +++++++++++++++++++
 .../contrib/schema/parser/JsonParser.java       | 106 +++++++
 .../contrib/schema/parser/Parser.java           | 102 ++++++
 .../contrib/schema/parser/XmlParser.java        | 141 +++++++++
 .../schema/formatter/CsvFormatterTest.java      | 147 +++++++++
 .../schema/formatter/JsonFormatterTest.java     | 186 +++++++++++
 .../schema/formatter/XmlFormatterTest.java      | 226 +++++++++++++
 .../contrib/schema/parser/CsvParserTest.java    | 172 ++++++++++
 .../contrib/schema/parser/JsonParserTest.java   | 212 +++++++++++++
 .../contrib/schema/parser/XmlParserTest.java    | 254 +++++++++++++++
 16 files changed, 2582 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/pom.xml
----------------------------------------------------------------------
diff --git a/contrib/pom.xml b/contrib/pom.xml
index abed040..91ef5c7 100755
--- a/contrib/pom.xml
+++ b/contrib/pom.xml
@@ -606,5 +606,17 @@
       <version>${dt.framework.version}</version>
       <type>jar</type>
     </dependency>
+    <dependency>
+      <!-- required by Xml parser and formatter -->
+      <groupId>com.thoughtworks.xstream</groupId>
+      <artifactId>xstream</artifactId>
+      <version>1.4.8</version>
+    </dependency>
+    <dependency>
+      <!-- required by Csv parser and formatter -->
+      <groupId>net.sf.supercsv</groupId>
+      <artifactId>super-csv-joda</artifactId>
+      <version>2.3.1</version>
+    </dependency>
   </dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java b/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java
new file mode 100644
index 0000000..ebf2925
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java
@@ -0,0 +1,43 @@
+/**
+ * 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 com.datatorrent.contrib.converter;
+
+import org.apache.hadoop.classification.InterfaceStability;
+
+/**
+ * Operators that are converting tuples from one format to another must
+ * implement this interface. Eg. Parsers or formatters , that parse data of
+ * certain format and convert them to another format.
+ * 
+ * @param <INPUT>
+ * @param <OUTPUT>
+ */
+@InterfaceStability.Evolving
+public interface Converter<INPUT, OUTPUT>
+{
+  /**
+   * Provide the implementation for converting tuples from one format to the
+   * other
+   * 
+   * @param INPUT
+   *          tuple of certain format
+   * @return OUTPUT tuple of converted format
+   */
+  public OUTPUT convert(INPUT tuple);
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java
new file mode 100644
index 0000000..924acc6
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java
@@ -0,0 +1,285 @@
+/**
+ * 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 com.datatorrent.contrib.schema.formatter;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.ArrayList;
+
+import javax.validation.constraints.NotNull;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.supercsv.cellprocessor.FmtDate;
+import org.supercsv.cellprocessor.Optional;
+import org.supercsv.cellprocessor.ift.CellProcessor;
+import org.supercsv.exception.SuperCsvException;
+import org.supercsv.io.CsvBeanWriter;
+import org.supercsv.io.ICsvBeanWriter;
+import org.supercsv.prefs.CsvPreference;
+
+import org.apache.hadoop.classification.InterfaceStability;
+
+import com.datatorrent.api.Context;
+import com.datatorrent.netlet.util.DTThrowable;
+
+/**
+ * Operator that converts POJO to CSV string <br>
+ * Assumption is that each field in the delimited data should map to a simple
+ * java type.<br>
+ * <br>
+ * <b>Properties</b> <br>
+ * <b>fieldInfo</b>:User need to specify fields and their types as a comma
+ * separated string having format &lt;NAME&gt;:&lt;TYPE&gt;|&lt;FORMAT&gt; in
+ * the same order as incoming data. FORMAT refers to dates with dd/mm/yyyy as
+ * default e.g name:string,dept:string,eid:integer,dateOfJoining:date|dd/mm/yyyy
+ * 
+ * @displayName CsvFormatter
+ * @category Formatter
+ * @tags pojo csv formatter
+ */
+@InterfaceStability.Evolving
+public class CsvFormatter extends Formatter<String>
+{
+
+  private ArrayList<Field> fields;
+  @NotNull
+  protected String classname;
+  @NotNull
+  protected int fieldDelimiter;
+  protected String lineDelimiter;
+
+  @NotNull
+  protected String fieldInfo;
+
+  public enum FIELD_TYPE
+  {
+    BOOLEAN, DOUBLE, INTEGER, FLOAT, LONG, SHORT, CHARACTER, STRING, DATE
+  };
+
+  protected transient String[] nameMapping;
+  protected transient CellProcessor[] processors;
+  protected transient CsvPreference preference;
+
+  public CsvFormatter()
+  {
+    fields = new ArrayList<Field>();
+    fieldDelimiter = ',';
+    lineDelimiter = "\r\n";
+
+  }
+
+  @Override
+  public void setup(Context.OperatorContext context)
+  {
+    super.setup(context);
+
+    //fieldInfo information
+    fields = new ArrayList<Field>();
+    String[] fieldInfoTuple = fieldInfo.split(",");
+    for (int i = 0; i < fieldInfoTuple.length; i++) {
+      String[] fieldTuple = fieldInfoTuple[i].split(":");
+      Field field = new Field();
+      field.setName(fieldTuple[0]);
+      String[] typeFormat = fieldTuple[1].split("\\|");
+      field.setType(typeFormat[0].toUpperCase());
+      if (typeFormat.length > 1) {
+        field.setFormat(typeFormat[1]);
+      }
+      getFields().add(field);
+    }
+    preference = new CsvPreference.Builder('"', fieldDelimiter, lineDelimiter).build();
+    int countKeyValue = getFields().size();
+    nameMapping = new String[countKeyValue];
+    processors = new CellProcessor[countKeyValue];
+    initialise(nameMapping, processors);
+
+  }
+
+  private void initialise(String[] nameMapping, CellProcessor[] processors)
+  {
+    for (int i = 0; i < getFields().size(); i++) {
+      FIELD_TYPE type = getFields().get(i).type;
+      nameMapping[i] = getFields().get(i).name;
+      if (type == FIELD_TYPE.DATE) {
+        String dateFormat = getFields().get(i).format;
+        processors[i] = new Optional(new FmtDate(dateFormat == null ? "dd/MM/yyyy" : dateFormat));
+      } else {
+        processors[i] = new Optional();
+      }
+    }
+
+  }
+
+  @Override
+  public void activate(Context context)
+  {
+
+  }
+
+  @Override
+  public void deactivate()
+  {
+
+  }
+
+  @Override
+  public String convert(Object tuple)
+  {
+    try {
+      StringWriter stringWriter = new StringWriter();
+      ICsvBeanWriter beanWriter = new CsvBeanWriter(stringWriter, preference);
+      beanWriter.write(tuple, nameMapping, processors);
+      beanWriter.flush();
+      beanWriter.close();
+      return stringWriter.toString();
+    } catch (SuperCsvException e) {
+      logger.debug("Error while converting tuple {} {}",tuple,e.getMessage());
+    } catch (IOException e) {
+      DTThrowable.rethrow(e);
+    }
+    return null;
+  }
+
+  public static class Field
+  {
+    String name;
+    String format;
+    FIELD_TYPE type;
+
+    public String getName()
+    {
+      return name;
+    }
+
+    public void setName(String name)
+    {
+      this.name = name;
+    }
+
+    public FIELD_TYPE getType()
+    {
+      return type;
+    }
+
+    public void setType(String type)
+    {
+      this.type = FIELD_TYPE.valueOf(type);
+    }
+
+    public String getFormat()
+    {
+      return format;
+    }
+
+    public void setFormat(String format)
+    {
+      this.format = format;
+    }
+  }
+
+  /**
+   * Gets the array list of the fields, a field being a POJO containing the name
+   * of the field and type of field.
+   * 
+   * @return An array list of Fields.
+   */
+  public ArrayList<Field> getFields()
+  {
+    return fields;
+  }
+
+  /**
+   * Sets the array list of the fields, a field being a POJO containing the name
+   * of the field and type of field.
+   * 
+   * @param fields
+   *          An array list of Fields.
+   */
+  public void setFields(ArrayList<Field> fields)
+  {
+    this.fields = fields;
+  }
+
+  /**
+   * Gets the delimiter which separates fields in incoming data.
+   * 
+   * @return fieldDelimiter
+   */
+  public int getFieldDelimiter()
+  {
+    return fieldDelimiter;
+  }
+
+  /**
+   * Sets the delimiter which separates fields in incoming data.
+   * 
+   * @param fieldDelimiter
+   */
+  public void setFieldDelimiter(int fieldDelimiter)
+  {
+    this.fieldDelimiter = fieldDelimiter;
+  }
+
+  /**
+   * Gets the delimiter which separates lines in incoming data.
+   * 
+   * @return lineDelimiter
+   */
+  public String getLineDelimiter()
+  {
+    return lineDelimiter;
+  }
+
+  /**
+   * Sets the delimiter which separates line in incoming data.
+   * 
+   * @param lineDelimiter
+   */
+  public void setLineDelimiter(String lineDelimiter)
+  {
+    this.lineDelimiter = lineDelimiter;
+  }
+
+  /**
+   * Gets the name of the fields with type and format in data as comma separated
+   * string in same order as incoming data. e.g
+   * name:string,dept:string,eid:integer,dateOfJoining:date|dd/mm/yyyy
+   * 
+   * @return fieldInfo
+   */
+  public String getFieldInfo()
+  {
+    return fieldInfo;
+  }
+
+  /**
+   * Sets the name of the fields with type and format in data as comma separated
+   * string in same order as incoming data. e.g
+   * name:string,dept:string,eid:integer,dateOfJoining:date|dd/mm/yyyy
+   * 
+   * @param fieldInfo
+   */
+  public void setFieldInfo(String fieldInfo)
+  {
+    this.fieldInfo = fieldInfo;
+  }
+
+  private static final Logger logger = LoggerFactory.getLogger(CsvFormatter.class);
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java
new file mode 100644
index 0000000..19a78e0
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java
@@ -0,0 +1,101 @@
+/**
+ * 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 com.datatorrent.contrib.schema.formatter;
+
+import org.apache.hadoop.classification.InterfaceStability;
+
+import com.datatorrent.api.Context;
+import com.datatorrent.api.Context.PortContext;
+import com.datatorrent.api.DefaultInputPort;
+import com.datatorrent.api.DefaultOutputPort;
+import com.datatorrent.api.Operator.ActivationListener;
+import com.datatorrent.api.annotation.InputPortFieldAnnotation;
+import com.datatorrent.api.annotation.OutputPortFieldAnnotation;
+import com.datatorrent.common.util.BaseOperator;
+import com.datatorrent.contrib.converter.Converter;
+
+/**
+ * Abstract class that implements Converter interface. This is a schema enabled
+ * Formatter <br>
+ * Sub classes need to implement the convert method <br>
+ * <b>Port Interface</b><br>
+ * <b>in</b>: expects &lt;Object&gt; this is a schema enabled port<br>
+ * <b>out</b>: emits &lt;OUTPUT&gt; <br>
+ * <b>err</b>: emits &lt;Object&gt; error port that emits input tuple that could
+ * not be converted<br>
+ * <br>
+ * 
+ * @displayName Parser
+ * @tags parser converter
+ * @param <INPUT>
+ */
+@InterfaceStability.Evolving
+public abstract class Formatter<OUTPUT> extends BaseOperator implements Converter<Object, OUTPUT>,
+    ActivationListener<Context>
+{
+  protected transient Class<?> clazz;
+
+  @OutputPortFieldAnnotation
+  public transient DefaultOutputPort<OUTPUT> out = new DefaultOutputPort<OUTPUT>();
+
+  @OutputPortFieldAnnotation(optional = true)
+  public transient DefaultOutputPort<Object> err = new DefaultOutputPort<Object>();
+
+  @InputPortFieldAnnotation(schemaRequired = true)
+  public transient DefaultInputPort<Object> in = new DefaultInputPort<Object>()
+  {
+    public void setup(PortContext context)
+    {
+      clazz = context.getValue(Context.PortContext.TUPLE_CLASS);
+    }
+
+    @Override
+    public void process(Object inputTuple)
+    {
+      OUTPUT tuple = convert(inputTuple);
+      if (tuple == null && err.isConnected()) {
+        err.emit(inputTuple);
+        return;
+      }
+      if (out.isConnected()) {
+        out.emit(tuple);
+      }
+    }
+  };
+
+  /**
+   * Get the class that needs to be formatted
+   * 
+   * @return Class<?>
+   */
+  public Class<?> getClazz()
+  {
+    return clazz;
+  }
+
+  /**
+   * Set the class of tuple that needs to be formatted
+   * 
+   * @param clazz
+   */
+  public void setClazz(Class<?> clazz)
+  {
+    this.clazz = clazz;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java
new file mode 100644
index 0000000..344ac60
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java
@@ -0,0 +1,109 @@
+/**
+ * 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 com.datatorrent.contrib.schema.formatter;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+
+import org.codehaus.jackson.JsonGenerationException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.ObjectWriter;
+import org.codehaus.jackson.map.SerializationConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.hadoop.classification.InterfaceStability;
+
+import com.datatorrent.api.Context;
+import com.datatorrent.netlet.util.DTThrowable;
+
+/**
+ * Operator that converts POJO to JSON string <br>
+ * <b>Properties</b> <br>
+ * <b>dateFormat</b>: date format e.g dd/MM/yyyy
+ * 
+ * @displayName JsonFormatter
+ * @category Formatter
+ * @tags pojo json formatter
+ */
+@InterfaceStability.Evolving
+public class JsonFormatter extends Formatter<String>
+{
+  private transient ObjectWriter writer;
+  protected String dateFormat;
+
+  @Override
+  public void activate(Context context)
+  {
+    try {
+      ObjectMapper mapper = new ObjectMapper();
+      if (dateFormat != null) {
+        mapper.setDateFormat(new SimpleDateFormat(dateFormat));
+      }
+      writer = mapper.writerWithType(clazz);
+      mapper.configure(SerializationConfig.Feature.AUTO_DETECT_FIELDS, true);
+      mapper.configure(SerializationConfig.Feature.AUTO_DETECT_GETTERS, true);
+      mapper.configure(SerializationConfig.Feature.AUTO_DETECT_IS_GETTERS, true);
+    } catch (Throwable e) {
+      throw new RuntimeException("Unable find provided class");
+    }
+  }
+
+  @Override
+  public void deactivate()
+  {
+
+  }
+
+  @Override
+  public String convert(Object tuple)
+  {
+    try {
+      return writer.writeValueAsString(tuple);
+    } catch (JsonGenerationException | JsonMappingException e) {
+      logger.debug("Error while converting tuple {} {}",tuple,e.getMessage());
+    } catch (IOException e) {
+      DTThrowable.rethrow(e);
+    }
+    return null;
+  }
+
+  /**
+   * Get the date format
+   * 
+   * @return Date format string
+   */
+  public String getDateFormat()
+  {
+    return dateFormat;
+  }
+
+  /**
+   * Set the date format
+   * 
+   * @param dateFormat
+   */
+  public void setDateFormat(String dateFormat)
+  {
+    this.dateFormat = dateFormat;
+  }
+
+  private static final Logger logger = LoggerFactory.getLogger(JsonFormatter.class);
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java
new file mode 100644
index 0000000..b387031
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java
@@ -0,0 +1,172 @@
+/**
+ * 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 com.datatorrent.contrib.schema.formatter;
+
+import java.io.Writer;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.hadoop.classification.InterfaceStability;
+
+import com.datatorrent.api.Context;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.XStreamException;
+import com.thoughtworks.xstream.converters.basic.DateConverter;
+import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
+import com.thoughtworks.xstream.io.xml.CompactWriter;
+import com.thoughtworks.xstream.io.xml.XppDriver;
+
+/**
+ * @displayName XmlParser
+ * @category Formatter
+ * @tags xml pojo formatter
+ */
+@InterfaceStability.Evolving
+public class XmlFormatter extends Formatter<String>
+{
+
+  private transient XStream xstream;
+
+  protected String alias;
+  protected String dateFormat;
+  protected boolean prettyPrint;
+
+  public XmlFormatter()
+  {
+    alias = null;
+    dateFormat = null;
+  }
+
+  @Override
+  public void activate(Context context)
+  {
+    if (prettyPrint) {
+      xstream = new XStream();
+    } else {
+      xstream = new XStream(new XppDriver()
+      {
+        @Override
+        public HierarchicalStreamWriter createWriter(Writer out)
+        {
+          return new CompactWriter(out, getNameCoder());
+        }
+      });
+    }
+    if (alias != null) {
+      try {
+        xstream.alias(alias, clazz);
+      } catch (Throwable e) {
+        throw new RuntimeException("Unable find provided class");
+      }
+    }
+    if (dateFormat != null) {
+      xstream.registerConverter(new DateConverter(dateFormat, new String[] {}));
+    }
+  }
+
+  @Override
+  public void deactivate()
+  {
+
+  }
+
+  @Override
+  public String convert(Object tuple)
+  {
+    try {
+      return xstream.toXML(tuple);
+    } catch (XStreamException e) {
+      logger.debug("Error while converting tuple {} {} ",tuple,e.getMessage());
+      return null;
+    }
+  }
+
+  /**
+   * Gets the alias This is an optional step. Without it XStream would work
+   * fine, but the XML element names would contain the fully qualified name of
+   * each class (including package) which would bulk up the XML a bit.
+   * 
+   * @return alias.
+   */
+  public String getAlias()
+  {
+    return alias;
+  }
+
+  /**
+   * Sets the alias This is an optional step. Without it XStream would work
+   * fine, but the XML element names would contain the fully qualified name of
+   * each class (including package) which would bulk up the XML a bit.
+   * 
+   * @param alias
+   *          .
+   */
+  public void setAlias(String alias)
+  {
+    this.alias = alias;
+  }
+
+  /**
+   * Gets the date format e.g dd/mm/yyyy - this will be how a date would be
+   * formatted
+   * 
+   * @return dateFormat.
+   */
+  public String getDateFormat()
+  {
+    return dateFormat;
+  }
+
+  /**
+   * Sets the date format e.g dd/mm/yyyy - this will be how a date would be
+   * formatted
+   * 
+   * @param dateFormat
+   *          .
+   */
+  public void setDateFormat(String dateFormat)
+  {
+    this.dateFormat = dateFormat;
+  }
+
+  /**
+   * Returns true if pretty print is enabled.
+   * 
+   * @return prettyPrint
+   */
+  public boolean isPrettyPrint()
+  {
+    return prettyPrint;
+  }
+
+  /**
+   * Sets pretty print option.
+   * 
+   * @param prettyPrint
+   */
+  public void setPrettyPrint(boolean prettyPrint)
+  {
+    this.prettyPrint = prettyPrint;
+  }
+
+  private static final Logger logger = LoggerFactory.getLogger(XmlFormatter.class);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java
new file mode 100644
index 0000000..4fd39fb
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java
@@ -0,0 +1,314 @@
+/**
+ * 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 com.datatorrent.contrib.schema.parser;
+
+import java.io.IOException;
+import java.util.ArrayList;
+
+import javax.validation.constraints.NotNull;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.supercsv.cellprocessor.Optional;
+import org.supercsv.cellprocessor.ParseBool;
+import org.supercsv.cellprocessor.ParseChar;
+import org.supercsv.cellprocessor.ParseDate;
+import org.supercsv.cellprocessor.ParseDouble;
+import org.supercsv.cellprocessor.ParseInt;
+import org.supercsv.cellprocessor.ParseLong;
+import org.supercsv.cellprocessor.ift.CellProcessor;
+import org.supercsv.io.CsvBeanReader;
+import org.supercsv.prefs.CsvPreference;
+
+import org.apache.hadoop.classification.InterfaceStability;
+
+import com.datatorrent.api.Context;
+import com.datatorrent.api.Context.OperatorContext;
+import com.datatorrent.lib.util.ReusableStringReader;
+import com.datatorrent.netlet.util.DTThrowable;
+
+/**
+ * Operator that converts CSV string to Pojo <br>
+ * Assumption is that each field in the delimited data should map to a simple
+ * java type.<br>
+ * <br>
+ * <b>Properties</b> <br>
+ * <b>fieldInfo</b>:User need to specify fields and their types as a comma
+ * separated string having format &lt;NAME&gt;:&lt;TYPE&gt;|&lt;FORMAT&gt; in
+ * the same order as incoming data. FORMAT refers to dates with dd/mm/yyyy as
+ * default e.g name:string,dept:string,eid:integer,dateOfJoining:date|dd/mm/yyyy <br>
+ * <b>fieldDelimiter</b>: Default is comma <br>
+ * <b>lineDelimiter</b>: Default is '\r\n'
+ * 
+ * @displayName CsvParser
+ * @category Parsers
+ * @tags csv pojo parser
+ */
+@InterfaceStability.Evolving
+public class CsvParser extends Parser<String>
+{
+
+  private ArrayList<Field> fields;
+  @NotNull
+  protected int fieldDelimiter;
+  protected String lineDelimiter;
+
+  @NotNull
+  protected String fieldInfo;
+
+  protected transient String[] nameMapping;
+  protected transient CellProcessor[] processors;
+  private transient CsvBeanReader csvReader;
+
+  public enum FIELD_TYPE
+  {
+    BOOLEAN, DOUBLE, INTEGER, FLOAT, LONG, SHORT, CHARACTER, STRING, DATE
+  };
+
+  @NotNull
+  private transient ReusableStringReader csvStringReader = new ReusableStringReader();
+
+  public CsvParser()
+  {
+    fields = new ArrayList<Field>();
+    fieldDelimiter = ',';
+    lineDelimiter = "\r\n";
+  }
+
+  @Override
+  public void setup(OperatorContext context)
+  {
+    super.setup(context);
+
+    logger.info("field info {}", fieldInfo);
+    fields = new ArrayList<Field>();
+    String[] fieldInfoTuple = fieldInfo.split(",");
+    for (int i = 0; i < fieldInfoTuple.length; i++) {
+      String[] fieldTuple = fieldInfoTuple[i].split(":");
+      Field field = new Field();
+      field.setName(fieldTuple[0]);
+      String[] typeFormat = fieldTuple[1].split("\\|");
+      field.setType(typeFormat[0].toUpperCase());
+      if (typeFormat.length > 1) {
+        field.setFormat(typeFormat[1]);
+      }
+      getFields().add(field);
+    }
+
+    CsvPreference preference = new CsvPreference.Builder('"', fieldDelimiter, lineDelimiter).build();
+    csvReader = new CsvBeanReader(csvStringReader, preference);
+    int countKeyValue = getFields().size();
+    logger.info("countKeyValue {}", countKeyValue);
+    nameMapping = new String[countKeyValue];
+    processors = new CellProcessor[countKeyValue];
+    initialise(nameMapping, processors);
+  }
+
+  private void initialise(String[] nameMapping, CellProcessor[] processors)
+  {
+    for (int i = 0; i < getFields().size(); i++) {
+      FIELD_TYPE type = getFields().get(i).type;
+      nameMapping[i] = getFields().get(i).name;
+      if (type == FIELD_TYPE.DOUBLE) {
+        processors[i] = new Optional(new ParseDouble());
+      } else if (type == FIELD_TYPE.INTEGER) {
+        processors[i] = new Optional(new ParseInt());
+      } else if (type == FIELD_TYPE.FLOAT) {
+        processors[i] = new Optional(new ParseDouble());
+      } else if (type == FIELD_TYPE.LONG) {
+        processors[i] = new Optional(new ParseLong());
+      } else if (type == FIELD_TYPE.SHORT) {
+        processors[i] = new Optional(new ParseInt());
+      } else if (type == FIELD_TYPE.STRING) {
+        processors[i] = new Optional();
+      } else if (type == FIELD_TYPE.CHARACTER) {
+        processors[i] = new Optional(new ParseChar());
+      } else if (type == FIELD_TYPE.BOOLEAN) {
+        processors[i] = new Optional(new ParseBool());
+      } else if (type == FIELD_TYPE.DATE) {
+        String dateFormat = getFields().get(i).format;
+        processors[i] = new Optional(new ParseDate(dateFormat == null ? "dd/MM/yyyy" : dateFormat));
+      }
+    }
+  }
+
+  @Override
+  public void activate(Context context)
+  {
+
+  }
+
+  @Override
+  public void deactivate()
+  {
+
+  }
+
+  @Override
+  public Object convert(String tuple)
+  {
+    try {
+      csvStringReader.open(tuple);
+      return csvReader.read(clazz, nameMapping, processors);
+    } catch (IOException e) {
+      logger.debug("Error while converting tuple {} {}",tuple,e.getMessage());
+      return null;
+    }
+  }
+
+  @Override
+  public void teardown()
+  {
+    try {
+      if (csvReader != null) {
+        csvReader.close();
+      }
+    } catch (IOException e) {
+      DTThrowable.rethrow(e);
+    }
+  }
+
+  public static class Field
+  {
+    String name;
+    String format;
+    FIELD_TYPE type;
+
+    public String getName()
+    {
+      return name;
+    }
+
+    public void setName(String name)
+    {
+      this.name = name;
+    }
+
+    public FIELD_TYPE getType()
+    {
+      return type;
+    }
+
+    public void setType(String type)
+    {
+      this.type = FIELD_TYPE.valueOf(type);
+    }
+
+    public String getFormat()
+    {
+      return format;
+    }
+
+    public void setFormat(String format)
+    {
+      this.format = format;
+    }
+
+  }
+
+  /**
+   * Gets the array list of the fields, a field being a POJO containing the name
+   * of the field and type of field.
+   * 
+   * @return An array list of Fields.
+   */
+  public ArrayList<Field> getFields()
+  {
+    return fields;
+  }
+
+  /**
+   * Sets the array list of the fields, a field being a POJO containing the name
+   * of the field and type of field.
+   * 
+   * @param fields
+   *          An array list of Fields.
+   */
+  public void setFields(ArrayList<Field> fields)
+  {
+    this.fields = fields;
+  }
+
+  /**
+   * Gets the delimiter which separates fields in incoming data.
+   * 
+   * @return fieldDelimiter
+   */
+  public int getFieldDelimiter()
+  {
+    return fieldDelimiter;
+  }
+
+  /**
+   * Sets the delimiter which separates fields in incoming data.
+   * 
+   * @param fieldDelimiter
+   */
+  public void setFieldDelimiter(int fieldDelimiter)
+  {
+    this.fieldDelimiter = fieldDelimiter;
+  }
+
+  /**
+   * Gets the delimiter which separates lines in incoming data.
+   * 
+   * @return lineDelimiter
+   */
+  public String getLineDelimiter()
+  {
+    return lineDelimiter;
+  }
+
+  /**
+   * Sets the delimiter which separates line in incoming data.
+   * 
+   * @param lineDelimiter
+   */
+  public void setLineDelimiter(String lineDelimiter)
+  {
+    this.lineDelimiter = lineDelimiter;
+  }
+
+  /**
+   * Gets the name of the fields with type and format ( for date ) as comma
+   * separated string in same order as incoming data. e.g
+   * name:string,dept:string,eid:integer,dateOfJoining:date|dd/mm/yyyy
+   * 
+   * @return fieldInfo
+   */
+  public String getFieldInfo()
+  {
+    return fieldInfo;
+  }
+
+  /**
+   * Sets the name of the fields with type and format ( for date ) as comma
+   * separated string in same order as incoming data. e.g
+   * name:string,dept:string,eid:integer,dateOfJoining:date|dd/mm/yyyy
+   * 
+   * @param fieldInfo
+   */
+  public void setFieldInfo(String fieldInfo)
+  {
+    this.fieldInfo = fieldInfo;
+  }
+
+  private static final Logger logger = LoggerFactory.getLogger(CsvParser.class);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
new file mode 100644
index 0000000..db45b33
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
@@ -0,0 +1,106 @@
+/**
+ * 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 com.datatorrent.contrib.schema.parser;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.ObjectReader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.hadoop.classification.InterfaceStability;
+
+import com.datatorrent.api.Context;
+import com.datatorrent.netlet.util.DTThrowable;
+
+/**
+ * Operator that converts JSON string to Pojo <br>
+ * <b>Properties</b> <br>
+ * <b>dateFormat</b>: date format e.g dd/MM/yyyy
+ * 
+ * @displayName JsonParser
+ * @category Parsers
+ * @tags json pojo parser
+ */
+@InterfaceStability.Evolving
+public class JsonParser extends Parser<String>
+{
+
+  private transient ObjectReader reader;
+  protected String dateFormat;
+
+  @Override
+  public void activate(Context context)
+  {
+    try {
+      ObjectMapper mapper = new ObjectMapper();
+      mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+      if (dateFormat != null) {
+        mapper.setDateFormat(new SimpleDateFormat(dateFormat));
+      }
+      reader = mapper.reader(clazz);
+    } catch (Throwable e) {
+      throw new RuntimeException("Unable find provided class");
+    }
+  }
+
+  @Override
+  public void deactivate()
+  {
+  }
+
+  @Override
+  public Object convert(String tuple)
+  {
+    try {
+      return reader.readValue(tuple);
+    } catch (JsonProcessingException e) {
+      logger.debug("Error while converting tuple {} {}",tuple,e.getMessage());
+    } catch (IOException e) {
+      DTThrowable.rethrow(e);
+    }
+    return null;
+  }
+
+  /**
+   * Get the date format
+   * 
+   * @return Date format string
+   */
+  public String getDateFormat()
+  {
+    return dateFormat;
+  }
+
+  /**
+   * Set the date format
+   * 
+   * @param dateFormat
+   */
+  public void setDateFormat(String dateFormat)
+  {
+    this.dateFormat = dateFormat;
+  }
+
+  private static final Logger logger = LoggerFactory.getLogger(JsonParser.class);
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java
new file mode 100644
index 0000000..e5ff7f5
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java
@@ -0,0 +1,102 @@
+/**
+ * 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 com.datatorrent.contrib.schema.parser;
+
+import org.apache.hadoop.classification.InterfaceStability;
+
+import com.datatorrent.api.Context;
+import com.datatorrent.api.Context.PortContext;
+import com.datatorrent.api.DefaultInputPort;
+import com.datatorrent.api.DefaultOutputPort;
+import com.datatorrent.api.Operator.ActivationListener;
+import com.datatorrent.api.annotation.OutputPortFieldAnnotation;
+import com.datatorrent.common.util.BaseOperator;
+import com.datatorrent.contrib.converter.Converter;
+
+/**
+ * Abstract class that implements Converter interface. This is a schema enabled
+ * Parser <br>
+ * Sub classes need to implement the convert method <br>
+ * <br>
+ * <b>Port Interface</b><br>
+ * <b>in</b>: expects &lt;INPUT&gt;<br>
+ * <b>out</b>: emits &lt;Object&gt; this is a schema enabled port<br>
+ * <b>err</b>: emits &lt;INPUT&gt; error port that emits input tuple that could
+ * not be converted<br>
+ * <br>
+ * 
+ * @displayName Parser
+ * @tags parser converter
+ * @param <INPUT>
+ */
+@InterfaceStability.Evolving
+public abstract class Parser<INPUT> extends BaseOperator implements Converter<INPUT, Object>,
+    ActivationListener<Context>
+{
+  protected transient Class<?> clazz;
+
+  @OutputPortFieldAnnotation(schemaRequired = true)
+  public transient DefaultOutputPort<Object> out = new DefaultOutputPort<Object>()
+  {
+    public void setup(PortContext context)
+    {
+      clazz = context.getValue(Context.PortContext.TUPLE_CLASS);
+    }
+  };
+
+  @OutputPortFieldAnnotation(optional = true)
+  public transient DefaultOutputPort<INPUT> err = new DefaultOutputPort<INPUT>();
+
+  public transient DefaultInputPort<INPUT> in = new DefaultInputPort<INPUT>()
+  {
+    @Override
+    public void process(INPUT inputTuple)
+    {
+      Object tuple = convert(inputTuple);
+      if (tuple == null && err.isConnected()) {
+        err.emit(inputTuple);
+        return;
+      }
+      if (out.isConnected()) {
+        out.emit(tuple);
+      }
+    }
+  };
+
+  /**
+   * Get the class that needs to be formatted
+   * 
+   * @return Class<?>
+   */
+  public Class<?> getClazz()
+  {
+    return clazz;
+  }
+
+  /**
+   * Set the class of tuple that needs to be formatted
+   * 
+   * @param clazz
+   */
+  public void setClazz(Class<?> clazz)
+  {
+    this.clazz = clazz;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java
new file mode 100644
index 0000000..4931497
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java
@@ -0,0 +1,141 @@
+/**
+ * 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 com.datatorrent.contrib.schema.parser;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.hadoop.classification.InterfaceStability;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.XStreamException;
+import com.thoughtworks.xstream.converters.basic.DateConverter;
+
+import com.datatorrent.api.Context;
+
+/**
+ * Operator that converts XML string to Pojo <br>
+ * <b>Properties</b> <br>
+ * <b>alias</b>:This maps to the root element of the XML string. If not
+ * specified, parser would expect the root element to be fully qualified name of
+ * the Pojo Class. <br>
+ * <b>dateFormats</b>: Comma separated string of date formats e.g
+ * dd/mm/yyyy,dd-mmm-yyyy where first one would be considered default
+ * 
+ * @displayName XmlParser
+ * @category Parsers
+ * @tags xml pojo parser
+ */
+@InterfaceStability.Evolving
+public class XmlParser extends Parser<String>
+{
+
+  private transient XStream xstream;
+  protected String alias;
+  protected String dateFormats;
+
+  public XmlParser()
+  {
+    alias = null;
+    dateFormats = null;
+  }
+
+  @Override
+  public void activate(Context context)
+  {
+    xstream = new XStream();
+    if (alias != null) {
+      try {
+        xstream.alias(alias, clazz);
+      } catch (Throwable e) {
+        throw new RuntimeException("Unable find provided class");
+      }
+    }
+    if (dateFormats != null) {
+      String[] dateFormat = dateFormats.split(",");
+      xstream.registerConverter(new DateConverter(dateFormat[0], dateFormat));
+    }
+  }
+
+  @Override
+  public void deactivate()
+  {
+
+  }
+
+  @Override
+  public Object convert(String tuple)
+  {
+    try {
+      return xstream.fromXML(tuple);
+    } catch (XStreamException e) {
+      logger.debug("Error while converting tuple {} {}", tuple,e.getMessage());
+      return null;
+    }
+  }
+
+  /**
+   * Gets the alias
+   * 
+   * @return alias.
+   */
+  public String getAlias()
+  {
+    return alias;
+  }
+
+  /**
+   * Sets the alias This maps to the root element of the XML string. If not
+   * specified, parser would expect the root element to be fully qualified name
+   * of the Pojo Class.
+   * 
+   * @param alias
+   *          .
+   */
+  public void setAlias(String alias)
+  {
+    this.alias = alias;
+  }
+
+  /**
+   * Gets the comma separated string of date formats e.g dd/mm/yyyy,dd-mmm-yyyy
+   * where first one would be considered default
+   * 
+   * @return dateFormats.
+   */
+  public String getDateFormats()
+  {
+    return dateFormats;
+  }
+
+  /**
+   * Sets the comma separated string of date formats e.g dd/mm/yyyy,dd-mmm-yyyy
+   * where first one would be considered default
+   * 
+   * @param dateFormats
+   *          .
+   */
+  public void setDateFormats(String dateFormats)
+  {
+    this.dateFormats = dateFormats;
+  }
+
+  private static final Logger logger = LoggerFactory.getLogger(XmlParser.class);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/CsvFormatterTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/CsvFormatterTest.java b/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/CsvFormatterTest.java
new file mode 100644
index 0000000..8ecc088
--- /dev/null
+++ b/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/CsvFormatterTest.java
@@ -0,0 +1,147 @@
+package com.datatorrent.contrib.schema.formatter;
+
+import java.util.Date;
+
+import org.joda.time.DateTime;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestWatcher;
+import org.junit.runner.Description;
+
+import com.datatorrent.contrib.schema.formatter.CsvFormatter;
+import com.datatorrent.lib.testbench.CollectorTestSink;
+import com.datatorrent.lib.util.TestUtils;
+
+public class CsvFormatterTest
+{
+
+  CsvFormatter operator;
+  CollectorTestSink<Object> validDataSink;
+  CollectorTestSink<String> invalidDataSink;
+
+  @Rule
+  public Watcher watcher = new Watcher();
+
+  public class Watcher extends TestWatcher
+  {
+
+    @Override
+    protected void starting(Description description)
+    {
+      super.starting(description);
+      operator = new CsvFormatter();
+      operator.setFieldInfo("name:string,dept:string,eid:integer,dateOfJoining:date");
+      operator.setLineDelimiter("\r\n");
+      validDataSink = new CollectorTestSink<Object>();
+      invalidDataSink = new CollectorTestSink<String>();
+      TestUtils.setSink(operator.out, validDataSink);
+      TestUtils.setSink(operator.err, invalidDataSink);
+    }
+
+    @Override
+    protected void finished(Description description)
+    {
+      super.finished(description);
+      operator.teardown();
+    }
+
+  }
+
+  @Test
+  public void testPojoReaderToCsv()
+  {
+    operator.setup(null);
+    EmployeeBean emp = new EmployeeBean();
+    emp.setName("john");
+    emp.setDept("cs");
+    emp.setEid(1);
+    emp.setDateOfJoining(new DateTime().withDate(2015, 1, 1).toDate());
+    operator.in.process(emp);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    String csvOp = (String)validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(csvOp);
+    Assert.assertEquals("john,cs,1,01/01/2015" + operator.getLineDelimiter(), csvOp);
+  }
+
+  @Test
+  public void testPojoReaderToCsvMultipleDate()
+  {
+    operator.setFieldInfo("name:string,dept:string,eid:integer,dateOfJoining:date,dateOfBirth:date|dd-MMM-yyyy");
+    operator.setup(null);
+    EmployeeBean emp = new EmployeeBean();
+    emp.setName("john");
+    emp.setDept("cs");
+    emp.setEid(1);
+    emp.setDateOfJoining(new DateTime().withDate(2015, 1, 1).toDate());
+    emp.setDateOfBirth(new DateTime().withDate(2015, 1, 1).toDate());
+    operator.in.process(emp);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    String csvOp = (String)validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(csvOp);
+    Assert.assertEquals("john,cs,1,01/01/2015,01-Jan-2015" + operator.getLineDelimiter(), csvOp);
+  }
+
+  public static class EmployeeBean
+  {
+
+    private String name;
+    private String dept;
+    private int eid;
+    private Date dateOfJoining;
+    private Date dateOfBirth;
+
+    public String getName()
+    {
+      return name;
+    }
+
+    public void setName(String name)
+    {
+      this.name = name;
+    }
+
+    public String getDept()
+    {
+      return dept;
+    }
+
+    public void setDept(String dept)
+    {
+      this.dept = dept;
+    }
+
+    public int getEid()
+    {
+      return eid;
+    }
+
+    public void setEid(int eid)
+    {
+      this.eid = eid;
+    }
+
+    public Date getDateOfJoining()
+    {
+      return dateOfJoining;
+    }
+
+    public void setDateOfJoining(Date dateOfJoining)
+    {
+      this.dateOfJoining = dateOfJoining;
+    }
+
+    public Date getDateOfBirth()
+    {
+      return dateOfBirth;
+    }
+
+    public void setDateOfBirth(Date dateOfBirth)
+    {
+      this.dateOfBirth = dateOfBirth;
+    }
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/JsonFormatterTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/JsonFormatterTest.java b/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/JsonFormatterTest.java
new file mode 100644
index 0000000..4040c63
--- /dev/null
+++ b/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/JsonFormatterTest.java
@@ -0,0 +1,186 @@
+package com.datatorrent.contrib.schema.formatter;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.joda.time.DateTime;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.Description;
+
+import com.datatorrent.lib.io.fs.AbstractFileOutputOperatorTest.FSTestWatcher;
+import com.datatorrent.lib.testbench.CollectorTestSink;
+import com.datatorrent.lib.util.TestUtils;
+import com.datatorrent.lib.util.TestUtils.TestInfo;
+import com.google.common.collect.Lists;
+
+public class JsonFormatterTest
+{
+  JsonFormatter operator;
+  CollectorTestSink<Object> validDataSink;
+  CollectorTestSink<String> invalidDataSink;
+
+  final ByteArrayOutputStream myOut = new ByteArrayOutputStream();
+
+  public JsonFormatterTest()
+  {
+    // So that the output is cleaner.
+    System.setErr(new PrintStream(myOut));
+  }
+
+  @Rule
+  public TestInfo testMeta = new FSTestWatcher()
+  {
+    private void deleteDirectory()
+    {
+      try {
+        FileUtils.deleteDirectory(new File(getDir()));
+      } catch (IOException ex) {
+        throw new RuntimeException(ex);
+      }
+    }
+
+    @Override
+    protected void starting(Description descriptor)
+    {
+      super.starting(descriptor);
+      deleteDirectory();
+
+      operator = new JsonFormatter();
+
+      validDataSink = new CollectorTestSink<Object>();
+      invalidDataSink = new CollectorTestSink<String>();
+      TestUtils.setSink(operator.out, validDataSink);
+      TestUtils.setSink(operator.err, invalidDataSink);
+      operator.setup(null);
+      operator.activate(null);
+
+      operator.beginWindow(0);
+    }
+
+    @Override
+    protected void finished(Description description)
+    {
+      operator.endWindow();
+      operator.teardown();
+
+      deleteDirectory();
+      super.finished(description);
+    }
+  };
+
+  @Test
+  public void testJSONToPOJO()
+  {
+    Test1Pojo pojo = new Test1Pojo();
+    pojo.a = 123;
+    pojo.b = 234876274;
+    pojo.c = "HowAreYou?";
+    pojo.d = Lists.newArrayList("ABC", "PQR", "XYZ");
+
+    operator.in.put(pojo);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    String expectedJSONString = "{\"a\":123,\"b\":234876274,\"c\":\"HowAreYou?\",\"d\":[\"ABC\",\"PQR\",\"XYZ\"],\"date\":null}";
+    Assert.assertEquals(expectedJSONString, validDataSink.collectedTuples.get(0));
+  }
+
+  @Test
+  public void testJSONToPOJODate()
+  {
+    Test1Pojo pojo = new Test1Pojo();
+    pojo.a = 123;
+    pojo.b = 234876274;
+    pojo.c = "HowAreYou?";
+    pojo.d = Lists.newArrayList("ABC", "PQR", "XYZ");
+    pojo.date = new DateTime().withYear(2015).withMonthOfYear(9).withDayOfMonth(15).toDate();
+    operator.setDateFormat("dd-MM-yyyy");
+    operator.setup(null);
+    operator.activate(null);
+    operator.in.put(pojo);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    String expectedJSONString = "{\"a\":123,\"b\":234876274,\"c\":\"HowAreYou?\",\"d\":[\"ABC\",\"PQR\",\"XYZ\"],\"date\":\"15-09-2015\"}";
+    Assert.assertEquals(expectedJSONString, validDataSink.collectedTuples.get(0));
+  }
+
+  @Test
+  public void testJSONToPOJONullFields()
+  {
+    Test1Pojo pojo = new Test1Pojo();
+    pojo.a = 123;
+    pojo.b = 234876274;
+    pojo.c = "HowAreYou?";
+    pojo.d = null;
+
+    operator.in.put(pojo);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    String expectedJSONString = "{\"a\":123,\"b\":234876274,\"c\":\"HowAreYou?\",\"d\":null,\"date\":null}";
+    Assert.assertEquals(expectedJSONString, validDataSink.collectedTuples.get(0));
+  }
+
+  @Test
+  public void testJSONToPOJOEmptyPOJO()
+  {
+    Test1Pojo pojo = new Test1Pojo();
+    operator.in.put(pojo);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    String expectedJSONString = "{\"a\":0,\"b\":0,\"c\":null,\"d\":null,\"date\":null}";
+    System.out.println(validDataSink.collectedTuples.get(0));
+    Assert.assertEquals(expectedJSONString, validDataSink.collectedTuples.get(0));
+  }
+
+  @Test
+  public void testJSONToPOJONullPOJO()
+  {
+    operator.in.put(null);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    String expectedJSONString = "null";
+    Assert.assertEquals(expectedJSONString, validDataSink.collectedTuples.get(0));
+  }
+
+  @Test
+  public void testJSONToPOJONoFieldPOJO()
+  {
+    operator.endWindow();
+    operator.teardown();
+    operator.setClazz(Test2Pojo.class);
+    operator.setup(null);
+    operator.beginWindow(1);
+
+    Test2Pojo o = new Test2Pojo();
+    operator.in.put(o);
+    Assert.assertEquals(0, validDataSink.collectedTuples.size());
+    Assert.assertEquals(1, invalidDataSink.collectedTuples.size());
+    Assert.assertEquals(o, invalidDataSink.collectedTuples.get(0));
+  }
+
+  public static class Test1Pojo
+  {
+    public int a;
+    public long b;
+    public String c;
+    public List<String> d;
+    public Date date;
+
+    @Override
+    public String toString()
+    {
+      return "Test1Pojo [a=" + a + ", b=" + b + ", c=" + c + ", d=" + d + ", date=" + date + "]";
+    }
+  }
+
+  public static class Test2Pojo
+  {
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/XmlFormatterTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/XmlFormatterTest.java b/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/XmlFormatterTest.java
new file mode 100644
index 0000000..2bc1aec
--- /dev/null
+++ b/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/XmlFormatterTest.java
@@ -0,0 +1,226 @@
+package com.datatorrent.contrib.schema.formatter;
+
+import java.util.Date;
+
+import org.joda.time.DateTime;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestWatcher;
+import org.junit.runner.Description;
+
+import com.datatorrent.contrib.schema.formatter.XmlFormatter;
+import com.datatorrent.lib.testbench.CollectorTestSink;
+import com.datatorrent.lib.util.TestUtils;
+
+public class XmlFormatterTest
+{
+
+  XmlFormatter operator;
+  CollectorTestSink<Object> validDataSink;
+  CollectorTestSink<String> invalidDataSink;
+
+  @Rule
+  public Watcher watcher = new Watcher();
+
+  public class Watcher extends TestWatcher
+  {
+
+    @Override
+    protected void starting(Description description)
+    {
+      super.starting(description);
+      operator = new XmlFormatter();
+      operator.setClazz(EmployeeBean.class);
+      operator.setDateFormat("yyyy-MM-dd");
+      validDataSink = new CollectorTestSink<Object>();
+      invalidDataSink = new CollectorTestSink<String>();
+      TestUtils.setSink(operator.out, validDataSink);
+      TestUtils.setSink(operator.err, invalidDataSink);
+    }
+
+    @Override
+    protected void finished(Description description)
+    {
+      super.finished(description);
+      operator.teardown();
+    }
+
+  }
+
+  @Test
+  public void testPojoToXmlWithoutAlias()
+  {
+    EmployeeBean e = new EmployeeBean();
+    e.setName("john");
+    e.setEid(1);
+    e.setDept("cs");
+    e.setDateOfJoining(new DateTime().withYear(2015).withMonthOfYear(1).withDayOfYear(1).toDate());
+
+    operator.setup(null);
+    operator.activate(null);
+    operator.in.process(e);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    String expected = "<com.datatorrent.contrib.schema.formatter.XmlFormatterTest_-EmployeeBean>" + "<name>john</name>"
+        + "<dept>cs</dept>" + "<eid>1</eid>" + "<dateOfJoining>2015-01-01</dateOfJoining>"
+        + "</com.datatorrent.contrib.schema.formatter.XmlFormatterTest_-EmployeeBean>";
+    Assert.assertEquals(expected, validDataSink.collectedTuples.get(0));
+  }
+
+  @Test
+  public void testXmlToPojoWithAlias()
+  {
+    EmployeeBean e = new EmployeeBean();
+    e.setName("john");
+    e.setEid(1);
+    e.setDept("cs");
+    e.setDateOfJoining(new DateTime().withYear(2015).withMonthOfYear(1).withDayOfYear(1).toDate());
+
+    operator.setAlias("EmployeeBean");
+    operator.setup(null);
+    operator.activate(null);
+    operator.in.process(e);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    String expected = "<EmployeeBean>" + "<name>john</name>" + "<dept>cs</dept>" + "<eid>1</eid>"
+        + "<dateOfJoining>2015-01-01</dateOfJoining>" + "</EmployeeBean>";
+    Assert.assertEquals(expected, validDataSink.collectedTuples.get(0));
+  }
+
+  @Test
+  public void testXmlToPojoWithPrettyPrint()
+  {
+    EmployeeBean e = new EmployeeBean();
+    e.setName("john");
+    e.setEid(1);
+    e.setDept("cs");
+    e.setDateOfJoining(new DateTime().withYear(2015).withMonthOfYear(1).withDayOfYear(1).toDate());
+
+    operator.setAlias("EmployeeBean");
+    operator.setPrettyPrint(true);
+    operator.setup(null);
+    operator.activate(null);
+    operator.in.process(e);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    String expected = "<EmployeeBean>\n" + "  <name>john</name>\n" + "  <dept>cs</dept>\n" + "  <eid>1</eid>\n"
+        + "  <dateOfJoining>2015-01-01</dateOfJoining>\n" + "</EmployeeBean>";
+    Assert.assertEquals(expected, validDataSink.collectedTuples.get(0));
+  }
+
+  @Test
+  public void testPojoToXmlWithoutAliasHeirarchical()
+  {
+    EmployeeBean e = new EmployeeBean();
+    e.setName("john");
+    e.setEid(1);
+    e.setDept("cs");
+    e.setDateOfJoining(new DateTime().withYear(2015).withMonthOfYear(1).withDayOfYear(1).toDate());
+    Address address = new Address();
+    address.setCity("new york");
+    address.setCountry("US");
+    e.setAddress(address);
+
+    operator.setup(null);
+    operator.activate(null);
+    operator.in.process(e);
+    System.out.println(validDataSink.collectedTuples.get(0));
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    String expected = "<com.datatorrent.contrib.schema.formatter.XmlFormatterTest_-EmployeeBean>" + "<name>john</name>"
+        + "<dept>cs</dept>" + "<eid>1</eid>" + "<dateOfJoining>2015-01-01</dateOfJoining>" + "<address>"
+        + "<city>new york</city>" + "<country>US</country>" + "</address>"
+        + "</com.datatorrent.contrib.schema.formatter.XmlFormatterTest_-EmployeeBean>";
+    Assert.assertEquals(expected, validDataSink.collectedTuples.get(0));
+  }
+
+  public static class EmployeeBean
+  {
+
+    private String name;
+    private String dept;
+    private int eid;
+    private Date dateOfJoining;
+    private Address address;
+
+    public String getName()
+    {
+      return name;
+    }
+
+    public void setName(String name)
+    {
+      this.name = name;
+    }
+
+    public String getDept()
+    {
+      return dept;
+    }
+
+    public void setDept(String dept)
+    {
+      this.dept = dept;
+    }
+
+    public int getEid()
+    {
+      return eid;
+    }
+
+    public void setEid(int eid)
+    {
+      this.eid = eid;
+    }
+
+    public Date getDateOfJoining()
+    {
+      return dateOfJoining;
+    }
+
+    public void setDateOfJoining(Date dateOfJoining)
+    {
+      this.dateOfJoining = dateOfJoining;
+    }
+
+    public Address getAddress()
+    {
+      return address;
+    }
+
+    public void setAddress(Address address)
+    {
+      this.address = address;
+    }
+  }
+
+  public static class Address
+  {
+
+    private String city;
+    private String country;
+
+    public String getCity()
+    {
+      return city;
+    }
+
+    public void setCity(String city)
+    {
+      this.city = city;
+    }
+
+    public String getCountry()
+    {
+      return country;
+    }
+
+    public void setCountry(String country)
+    {
+      this.country = country;
+    }
+
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/test/java/com/datatorrent/contrib/schema/parser/CsvParserTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/schema/parser/CsvParserTest.java b/contrib/src/test/java/com/datatorrent/contrib/schema/parser/CsvParserTest.java
new file mode 100644
index 0000000..3c31ad0
--- /dev/null
+++ b/contrib/src/test/java/com/datatorrent/contrib/schema/parser/CsvParserTest.java
@@ -0,0 +1,172 @@
+package com.datatorrent.contrib.schema.parser;
+
+import java.util.Date;
+
+import org.joda.time.DateTime;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestWatcher;
+import org.junit.runner.Description;
+
+import com.datatorrent.contrib.schema.parser.CsvParser;
+import com.datatorrent.lib.testbench.CollectorTestSink;
+import com.datatorrent.lib.util.TestUtils;
+
+public class CsvParserTest
+{
+
+  CsvParser operator;
+  CollectorTestSink<Object> validDataSink;
+  CollectorTestSink<String> invalidDataSink;
+
+  @Rule
+  public Watcher watcher = new Watcher();
+
+  public class Watcher extends TestWatcher
+  {
+
+    @Override
+    protected void starting(Description description)
+    {
+      super.starting(description);
+      operator = new CsvParser();
+      operator.setClazz(EmployeeBean.class);
+      operator.setFieldInfo("name:string,dept:string,eid:integer,dateOfJoining:date");
+      validDataSink = new CollectorTestSink<Object>();
+      invalidDataSink = new CollectorTestSink<String>();
+      TestUtils.setSink(operator.out, validDataSink);
+      TestUtils.setSink(operator.err, invalidDataSink);
+    }
+
+    @Override
+    protected void finished(Description description)
+    {
+      super.finished(description);
+      operator.teardown();
+    }
+
+  }
+
+  @Test
+  public void testCsvToPojoWriterDefault()
+  {
+    operator.setup(null);
+    String tuple = "john,cs,1,01/01/2015";
+    operator.in.process(tuple);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    Object obj = validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(obj);
+    Assert.assertEquals(EmployeeBean.class, obj.getClass());
+    EmployeeBean pojo = (EmployeeBean)obj;
+    Assert.assertEquals("john", pojo.getName());
+    Assert.assertEquals("cs", pojo.getDept());
+    Assert.assertEquals(1, pojo.getEid());
+    Assert.assertEquals(new DateTime().withDate(2015, 1, 1).withMillisOfDay(0).withTimeAtStartOfDay(), new DateTime(
+        pojo.getDateOfJoining()));
+  }
+
+  @Test
+  public void testCsvToPojoWriterDateFormat()
+  {
+    operator.setFieldInfo("name:string,dept:string,eid:integer,dateOfJoining:date|dd-MMM-yyyy");
+    operator.setup(null);
+    String tuple = "john,cs,1,01-JAN-2015";
+    operator.in.process(tuple);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    Object obj = validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(obj);
+    Assert.assertEquals(EmployeeBean.class, obj.getClass());
+    EmployeeBean pojo = (EmployeeBean)obj;
+    Assert.assertEquals("john", pojo.getName());
+    Assert.assertEquals("cs", pojo.getDept());
+    Assert.assertEquals(1, pojo.getEid());
+    Assert.assertEquals(new DateTime().withDate(2015, 1, 1).withMillisOfDay(0).withTimeAtStartOfDay(), new DateTime(
+        pojo.getDateOfJoining()));
+  }
+
+  @Test
+  public void testCsvToPojoWriterDateFormatMultiple()
+  {
+    operator.setFieldInfo("name:string,dept:string,eid:integer,dateOfJoining:date|dd-MMM-yyyy,dateOfBirth:date");
+    operator.setup(null);
+    String tuple = "john,cs,1,01-JAN-2015,01/01/2015";
+    operator.in.process(tuple);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    Object obj = validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(obj);
+    Assert.assertEquals(EmployeeBean.class, obj.getClass());
+    EmployeeBean pojo = (EmployeeBean)obj;
+    Assert.assertEquals("john", pojo.getName());
+    Assert.assertEquals("cs", pojo.getDept());
+    Assert.assertEquals(1, pojo.getEid());
+    Assert.assertEquals(new DateTime().withDate(2015, 1, 1).withMillisOfDay(0).withTimeAtStartOfDay(), new DateTime(
+        pojo.getDateOfJoining()));
+    Assert.assertEquals(new DateTime().withDate(2015, 1, 1).withMillisOfDay(0).withTimeAtStartOfDay(), new DateTime(
+        pojo.getDateOfBirth()));
+  }
+
+  public static class EmployeeBean
+  {
+
+    private String name;
+    private String dept;
+    private int eid;
+    private Date dateOfJoining;
+    private Date dateOfBirth;
+
+    public String getName()
+    {
+      return name;
+    }
+
+    public void setName(String name)
+    {
+      this.name = name;
+    }
+
+    public String getDept()
+    {
+      return dept;
+    }
+
+    public void setDept(String dept)
+    {
+      this.dept = dept;
+    }
+
+    public int getEid()
+    {
+      return eid;
+    }
+
+    public void setEid(int eid)
+    {
+      this.eid = eid;
+    }
+
+    public Date getDateOfJoining()
+    {
+      return dateOfJoining;
+    }
+
+    public void setDateOfJoining(Date dateOfJoining)
+    {
+      this.dateOfJoining = dateOfJoining;
+    }
+
+    public Date getDateOfBirth()
+    {
+      return dateOfBirth;
+    }
+
+    public void setDateOfBirth(Date dateOfBirth)
+    {
+      this.dateOfBirth = dateOfBirth;
+    }
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/test/java/com/datatorrent/contrib/schema/parser/JsonParserTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/schema/parser/JsonParserTest.java b/contrib/src/test/java/com/datatorrent/contrib/schema/parser/JsonParserTest.java
new file mode 100644
index 0000000..b453508
--- /dev/null
+++ b/contrib/src/test/java/com/datatorrent/contrib/schema/parser/JsonParserTest.java
@@ -0,0 +1,212 @@
+package com.datatorrent.contrib.schema.parser;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.joda.time.DateTime;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.Description;
+
+import com.datatorrent.lib.io.fs.AbstractFileOutputOperatorTest.FSTestWatcher;
+import com.datatorrent.lib.testbench.CollectorTestSink;
+import com.datatorrent.lib.util.TestUtils;
+import com.datatorrent.lib.util.TestUtils.TestInfo;
+
+public class JsonParserTest
+{
+  JsonParser operator;
+  CollectorTestSink<Object> validDataSink;
+  CollectorTestSink<String> invalidDataSink;
+
+  final ByteArrayOutputStream myOut = new ByteArrayOutputStream();
+
+  public JsonParserTest()
+  {
+    // So that the output is cleaner.
+    System.setErr(new PrintStream(myOut));
+  }
+
+  @Rule
+  public TestInfo testMeta = new FSTestWatcher()
+  {
+    private void deleteDirectory()
+    {
+      try {
+        FileUtils.deleteDirectory(new File(getDir()));
+      } catch (IOException ex) {
+        throw new RuntimeException(ex);
+      }
+    }
+
+    @Override
+    protected void starting(Description descriptor)
+    {
+
+      super.starting(descriptor);
+      deleteDirectory();
+
+      operator = new JsonParser();
+      operator.setClazz(Test1Pojo.class);
+      validDataSink = new CollectorTestSink<Object>();
+      invalidDataSink = new CollectorTestSink<String>();
+      TestUtils.setSink(operator.out, validDataSink);
+      TestUtils.setSink(operator.err, invalidDataSink);
+      operator.setup(null);
+      operator.activate(null);
+
+      operator.beginWindow(0);
+    }
+
+    @Override
+    protected void finished(Description description)
+    {
+      operator.endWindow();
+      operator.teardown();
+
+      deleteDirectory();
+      super.finished(description);
+    }
+  };
+
+  @Test
+  public void testJSONToPOJO()
+  {
+    String tuple = "{\"a\":123,\"b\":234876274,\"c\":\"HowAreYou?\",\"d\":[\"ABC\",\"PQR\",\"XYZ\"]}";
+    operator.in.put(tuple);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    Object obj = validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(obj);
+    Assert.assertEquals(Test1Pojo.class, obj.getClass());
+    Test1Pojo pojo = (Test1Pojo)obj;
+    Assert.assertEquals(123, pojo.a);
+    Assert.assertEquals(234876274, pojo.b);
+    Assert.assertEquals("HowAreYou?", pojo.c);
+    Assert.assertEquals(3, pojo.d.size());
+    Assert.assertEquals("ABC", pojo.d.get(0));
+    Assert.assertEquals("PQR", pojo.d.get(1));
+    Assert.assertEquals("XYZ", pojo.d.get(2));
+  }
+
+  @Test
+  public void testJSONToPOJODate()
+  {
+    String tuple = "{\"a\":123,\"b\":234876274,\"c\":\"HowAreYou?\",\"d\":[\"ABC\",\"PQR\",\"XYZ\"],\"date\":\"15-09-2015\"}";
+    operator.setDateFormat("dd-MM-yyyy");
+    operator.setup(null);
+    operator.activate(null);
+    operator.in.put(tuple);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    Object obj = validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(obj);
+    Assert.assertEquals(Test1Pojo.class, obj.getClass());
+    Test1Pojo pojo = (Test1Pojo)obj;
+    Assert.assertEquals(123, pojo.a);
+    Assert.assertEquals(234876274, pojo.b);
+    Assert.assertEquals("HowAreYou?", pojo.c);
+    Assert.assertEquals(3, pojo.d.size());
+    Assert.assertEquals("ABC", pojo.d.get(0));
+    Assert.assertEquals("PQR", pojo.d.get(1));
+    Assert.assertEquals("XYZ", pojo.d.get(2));
+    Assert.assertEquals(2015, new DateTime(pojo.date).getYear());
+    Assert.assertEquals(9, new DateTime(pojo.date).getMonthOfYear());
+    Assert.assertEquals(15, new DateTime(pojo.date).getDayOfMonth());
+  }
+
+  @Test
+  public void testJSONToPOJOInvalidData()
+  {
+    String tuple = "{\"a\":123\"b\":234876274,\"c\":\"HowAreYou?\"}";
+    operator.in.put(tuple);
+    Assert.assertEquals(0, validDataSink.collectedTuples.size());
+    Assert.assertEquals(1, invalidDataSink.collectedTuples.size());
+    Assert.assertEquals(tuple, invalidDataSink.collectedTuples.get(0));
+  }
+
+  @Test
+  public void testJSONToPOJOUnknownFields()
+  {
+    String tuple = "{\"a\":123,\"b\":234876274,\"c\":\"HowAreYou?\",\"asd\":433.6}";
+    operator.in.put(tuple);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    Object obj = validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(obj);
+    Assert.assertEquals(Test1Pojo.class, obj.getClass());
+    Test1Pojo pojo = (Test1Pojo)obj;
+    Assert.assertEquals(123, pojo.a);
+    Assert.assertEquals(234876274, pojo.b);
+    Assert.assertEquals("HowAreYou?", pojo.c);
+    Assert.assertEquals(null, pojo.d);
+  }
+
+  @Test
+  public void testJSONToPOJOMismatchingFields()
+  {
+    String tuple = "{\"a\":123,\"c\":234876274,\"b\":\"HowAreYou?\",\"d\":[\"ABC\",\"PQR\",\"XYZ\"]}";
+    operator.in.put(tuple);
+    Assert.assertEquals(0, validDataSink.collectedTuples.size());
+    Assert.assertEquals(1, invalidDataSink.collectedTuples.size());
+    Assert.assertEquals(tuple, invalidDataSink.collectedTuples.get(0));
+  }
+
+  @Test
+  public void testJSONToPOJOEmptyString()
+  {
+    String tuple = "";
+    operator.in.put(tuple);
+    Assert.assertEquals(0, validDataSink.collectedTuples.size());
+    Assert.assertEquals(1, invalidDataSink.collectedTuples.size());
+    Assert.assertEquals(tuple, invalidDataSink.collectedTuples.get(0));
+  }
+
+  @Test
+  public void testJSONToPOJOEmptyJSON()
+  {
+    String tuple = "{}";
+    operator.in.put(tuple);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    Object obj = validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(obj);
+    Assert.assertEquals(Test1Pojo.class, obj.getClass());
+    Test1Pojo pojo = (Test1Pojo)obj;
+    Assert.assertEquals(0, pojo.a);
+    Assert.assertEquals(0, pojo.b);
+    Assert.assertEquals(null, pojo.c);
+    Assert.assertEquals(null, pojo.d);
+  }
+
+  @Test
+  public void testJSONToPOJOArrayInJson()
+  {
+    String tuple = "{\"a\":123,\"c\":[234,65,23],\"b\":\"HowAreYou?\",\"d\":[\"ABC\",\"PQR\",\"XYZ\"]}";
+    operator.in.put(tuple);
+    Assert.assertEquals(0, validDataSink.collectedTuples.size());
+    Assert.assertEquals(1, invalidDataSink.collectedTuples.size());
+    Assert.assertEquals(tuple, invalidDataSink.collectedTuples.get(0));
+  }
+
+  public static class Test1Pojo
+  {
+    public int a;
+    public long b;
+    public String c;
+    public List<String> d;
+    public Date date;
+
+    @Override
+    public String toString()
+    {
+      return "Test1Pojo [a=" + a + ", b=" + b + ", c=" + c + ", d=" + d + ", date=" + date + "]";
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/3f4fe186/contrib/src/test/java/com/datatorrent/contrib/schema/parser/XmlParserTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/schema/parser/XmlParserTest.java b/contrib/src/test/java/com/datatorrent/contrib/schema/parser/XmlParserTest.java
new file mode 100644
index 0000000..4298951
--- /dev/null
+++ b/contrib/src/test/java/com/datatorrent/contrib/schema/parser/XmlParserTest.java
@@ -0,0 +1,254 @@
+package com.datatorrent.contrib.schema.parser;
+
+import java.util.Date;
+
+import org.joda.time.DateTime;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestWatcher;
+import org.junit.runner.Description;
+
+import com.datatorrent.lib.testbench.CollectorTestSink;
+import com.datatorrent.lib.util.TestUtils;
+
+public class XmlParserTest
+{
+  XmlParser operator;
+  CollectorTestSink<Object> validDataSink;
+  CollectorTestSink<String> invalidDataSink;
+
+  @Rule
+  public Watcher watcher = new Watcher();
+
+  public class Watcher extends TestWatcher
+  {
+
+    @Override
+    protected void starting(Description description)
+    {
+      super.starting(description);
+      operator = new XmlParser();
+      operator.setClazz(EmployeeBean.class);
+      operator.setDateFormats("yyyy-MM-dd"); //setting default date pattern
+      validDataSink = new CollectorTestSink<Object>();
+      invalidDataSink = new CollectorTestSink<String>();
+      TestUtils.setSink(operator.out, validDataSink);
+      TestUtils.setSink(operator.err, invalidDataSink);
+    }
+
+    @Override
+    protected void finished(Description description)
+    {
+      super.finished(description);
+      operator.teardown();
+    }
+
+  }
+
+  @Test
+  public void testXmlToPojoWithoutAlias()
+  {
+    String tuple = "<com.datatorrent.contrib.schema.parser.XmlParserTest_-EmployeeBean>" + "<name>john</name>"
+        + "<dept>cs</dept>" + "<eid>1</eid>" + "<dateOfJoining>2015-01-01</dateOfJoining>"
+        + "</com.datatorrent.contrib.schema.parser.XmlParserTest_-EmployeeBean>";
+
+    operator.setup(null);
+    operator.activate(null);
+    operator.in.process(tuple);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    Object obj = validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(obj);
+    Assert.assertEquals(EmployeeBean.class, obj.getClass());
+    EmployeeBean pojo = (EmployeeBean)obj;
+    Assert.assertEquals("john", pojo.getName());
+    Assert.assertEquals("cs", pojo.getDept());
+    Assert.assertEquals(1, pojo.getEid());
+    Assert.assertEquals(2015, new DateTime(pojo.getDateOfJoining()).getYear());
+    Assert.assertEquals(1, new DateTime(pojo.getDateOfJoining()).getMonthOfYear());
+    Assert.assertEquals(1, new DateTime(pojo.getDateOfJoining()).getDayOfMonth());
+  }
+
+  @Test
+  public void testXmlToPojoWithAliasDateFormat()
+  {
+    String tuple = "<EmployeeBean>" + "<name>john</name>" + "<dept>cs</dept>" + "<eid>1</eid>"
+        + "<dateOfJoining>2015-JAN-01</dateOfJoining>" + "</EmployeeBean>";
+
+    operator.setAlias("EmployeeBean");
+    operator.setDateFormats("yyyy-MM-dd,yyyy-MMM-dd");
+    operator.setup(null);
+    operator.activate(null);
+    operator.in.process(tuple);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    Object obj = validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(obj);
+    Assert.assertEquals(EmployeeBean.class, obj.getClass());
+    EmployeeBean pojo = (EmployeeBean)obj;
+    Assert.assertEquals("john", pojo.getName());
+    Assert.assertEquals("cs", pojo.getDept());
+    Assert.assertEquals(1, pojo.getEid());
+    Assert.assertEquals(2015, new DateTime(pojo.getDateOfJoining()).getYear());
+    Assert.assertEquals(1, new DateTime(pojo.getDateOfJoining()).getMonthOfYear());
+    Assert.assertEquals(1, new DateTime(pojo.getDateOfJoining()).getDayOfMonth());
+  }
+
+  @Test
+  public void testXmlToPojoWithAlias()
+  {
+    String tuple = "<EmployeeBean>" + "<name>john</name>" + "<dept>cs</dept>" + "<eid>1</eid>"
+        + "<dateOfJoining>2015-01-01</dateOfJoining>" + "</EmployeeBean>";
+
+    operator.setAlias("EmployeeBean");
+    operator.setup(null);
+    operator.activate(null);
+    operator.in.process(tuple);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    Object obj = validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(obj);
+    Assert.assertEquals(EmployeeBean.class, obj.getClass());
+    EmployeeBean pojo = (EmployeeBean)obj;
+    Assert.assertEquals("john", pojo.getName());
+    Assert.assertEquals("cs", pojo.getDept());
+    Assert.assertEquals(1, pojo.getEid());
+    Assert.assertEquals(2015, new DateTime(pojo.getDateOfJoining()).getYear());
+    Assert.assertEquals(1, new DateTime(pojo.getDateOfJoining()).getMonthOfYear());
+    Assert.assertEquals(1, new DateTime(pojo.getDateOfJoining()).getDayOfMonth());
+  }
+
+  @Test
+  public void testXmlToPojoIncorrectXML()
+  {
+    String tuple = "<EmployeeBean>"
+        + "<firstname>john</firstname>" //incorrect field name
+        + "<dept>cs</dept>" + "<eid>1</eid>" + "<dateOfJoining>2015-01-01 00:00:00.00 IST</dateOfJoining>"
+        + "</EmployeeBean>";
+
+    operator.setAlias("EmployeeBean");
+    operator.setup(null);
+    operator.activate(null);
+    operator.in.process(tuple);
+    Assert.assertEquals(0, validDataSink.collectedTuples.size());
+    Assert.assertEquals(1, invalidDataSink.collectedTuples.size());
+    Assert.assertEquals(tuple, invalidDataSink.collectedTuples.get(0));
+  }
+
+  @Test
+  public void testXmlToPojoWithoutAliasHeirarchical()
+  {
+    String tuple = "<com.datatorrent.contrib.schema.parser.XmlParserTest_-EmployeeBean>" + "<name>john</name>"
+        + "<dept>cs</dept>" + "<eid>1</eid>" + "<dateOfJoining>2015-01-01</dateOfJoining>" + "<address>"
+        + "<city>new york</city>" + "<country>US</country>" + "</address>"
+        + "</com.datatorrent.contrib.schema.parser.XmlParserTest_-EmployeeBean>";
+
+    operator.setup(null);
+    operator.activate(null);
+    operator.in.process(tuple);
+    Assert.assertEquals(1, validDataSink.collectedTuples.size());
+    Assert.assertEquals(0, invalidDataSink.collectedTuples.size());
+    Object obj = validDataSink.collectedTuples.get(0);
+    Assert.assertNotNull(obj);
+    Assert.assertEquals(EmployeeBean.class, obj.getClass());
+    EmployeeBean pojo = (EmployeeBean)obj;
+    Assert.assertEquals("john", pojo.getName());
+    Assert.assertEquals("cs", pojo.getDept());
+    Assert.assertEquals(1, pojo.getEid());
+    Assert.assertEquals(Address.class, pojo.getAddress().getClass());
+    Assert.assertEquals("new york", pojo.getAddress().getCity());
+    Assert.assertEquals("US", pojo.getAddress().getCountry());
+    Assert.assertEquals(2015, new DateTime(pojo.getDateOfJoining()).getYear());
+    Assert.assertEquals(1, new DateTime(pojo.getDateOfJoining()).getMonthOfYear());
+    Assert.assertEquals(1, new DateTime(pojo.getDateOfJoining()).getDayOfMonth());
+  }
+
+  public static class EmployeeBean
+  {
+
+    private String name;
+    private String dept;
+    private int eid;
+    private Date dateOfJoining;
+    private Address address;
+
+    public String getName()
+    {
+      return name;
+    }
+
+    public void setName(String name)
+    {
+      this.name = name;
+    }
+
+    public String getDept()
+    {
+      return dept;
+    }
+
+    public void setDept(String dept)
+    {
+      this.dept = dept;
+    }
+
+    public int getEid()
+    {
+      return eid;
+    }
+
+    public void setEid(int eid)
+    {
+      this.eid = eid;
+    }
+
+    public Date getDateOfJoining()
+    {
+      return dateOfJoining;
+    }
+
+    public void setDateOfJoining(Date dateOfJoining)
+    {
+      this.dateOfJoining = dateOfJoining;
+    }
+
+    public Address getAddress()
+    {
+      return address;
+    }
+
+    public void setAddress(Address address)
+    {
+      this.address = address;
+    }
+  }
+
+  public static class Address
+  {
+
+    private String city;
+    private String country;
+
+    public String getCity()
+    {
+      return city;
+    }
+
+    public void setCity(String city)
+    {
+      this.city = city;
+    }
+
+    public String getCountry()
+    {
+      return country;
+    }
+
+    public void setCountry(String country)
+    {
+      this.country = country;
+    }
+  }
+
+}


[30/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js
deleted file mode 100644
index 25bd887..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js
+++ /dev/null
@@ -1,756 +0,0 @@
-var common = require('../common');
-var MultipartParserStub = GENTLY.stub('./multipart_parser', 'MultipartParser'),
-    QuerystringParserStub = GENTLY.stub('./querystring_parser', 'QuerystringParser'),
-    EventEmitterStub = GENTLY.stub('events', 'EventEmitter'),
-    StreamStub = GENTLY.stub('stream', 'Stream'),
-    FileStub = GENTLY.stub('./file');
-
-var formidable = require(common.lib + '/index'),
-    IncomingForm = formidable.IncomingForm,
-    events = require('events'),
-    fs = require('fs'),
-    path = require('path'),
-    Buffer = require('buffer').Buffer,
-    fixtures = require(TEST_FIXTURES + '/multipart'),
-    form,
-    gently;
-
-function test(test) {
-  gently = new Gently();
-  gently.expect(EventEmitterStub, 'call');
-  form = new IncomingForm();
-  test();
-  gently.verify(test.name);
-}
-
-test(function constructor() {
-  assert.strictEqual(form.error, null);
-  assert.strictEqual(form.ended, false);
-  assert.strictEqual(form.type, null);
-  assert.strictEqual(form.headers, null);
-  assert.strictEqual(form.keepExtensions, false);
-  // Can't assume dir === '/tmp' for portability
-  // assert.strictEqual(form.uploadDir, '/tmp');
-  // Make sure it is a directory instead
-  assert.doesNotThrow(function () {
-    assert(fs.statSync(form.uploadDir).isDirectory());
-  });
-  assert.strictEqual(form.encoding, 'utf-8');
-  assert.strictEqual(form.bytesReceived, null);
-  assert.strictEqual(form.bytesExpected, null);
-  assert.strictEqual(form.maxFieldsSize, 2 * 1024 * 1024);
-  assert.strictEqual(form._parser, null);
-  assert.strictEqual(form._flushing, 0);
-  assert.strictEqual(form._fieldsSize, 0);
-  assert.ok(form instanceof EventEmitterStub);
-  assert.equal(form.constructor.name, 'IncomingForm');
-
-  (function testSimpleConstructor() {
-    gently.expect(EventEmitterStub, 'call');
-    var form = IncomingForm();
-    assert.ok(form instanceof IncomingForm);
-  })();
-
-  (function testSimpleConstructorShortcut() {
-    gently.expect(EventEmitterStub, 'call');
-    var form = formidable();
-    assert.ok(form instanceof IncomingForm);
-  })();
-});
-
-test(function parse() {
-  var REQ = {headers: {}}
-    , emit = {};
-
-  gently.expect(form, 'writeHeaders', function(headers) {
-    assert.strictEqual(headers, REQ.headers);
-  });
-
-  var EVENTS = ['error', 'aborted', 'data', 'end'];
-  gently.expect(REQ, 'on', EVENTS.length, function(event, fn) {
-    assert.equal(event, EVENTS.shift());
-    emit[event] = fn;
-    return this;
-  });
-
-  form.parse(REQ);
-
-  (function testPause() {
-    gently.expect(REQ, 'pause');
-    assert.strictEqual(form.pause(), true);
-  })();
-
-  (function testPauseCriticalException() {
-    form.ended = false;
-
-    var ERR = new Error('dasdsa');
-    gently.expect(REQ, 'pause', function() {
-      throw ERR;
-    });
-
-    gently.expect(form, '_error', function(err) {
-      assert.strictEqual(err, ERR);
-    });
-
-    assert.strictEqual(form.pause(), false);
-  })();
-
-  (function testPauseHarmlessException() {
-    form.ended = true;
-
-    var ERR = new Error('dasdsa');
-    gently.expect(REQ, 'pause', function() {
-      throw ERR;
-    });
-
-    assert.strictEqual(form.pause(), false);
-  })();
-
-  (function testResume() {
-    gently.expect(REQ, 'resume');
-    assert.strictEqual(form.resume(), true);
-  })();
-
-  (function testResumeCriticalException() {
-    form.ended = false;
-
-    var ERR = new Error('dasdsa');
-    gently.expect(REQ, 'resume', function() {
-      throw ERR;
-    });
-
-    gently.expect(form, '_error', function(err) {
-      assert.strictEqual(err, ERR);
-    });
-
-    assert.strictEqual(form.resume(), false);
-  })();
-
-  (function testResumeHarmlessException() {
-    form.ended = true;
-
-    var ERR = new Error('dasdsa');
-    gently.expect(REQ, 'resume', function() {
-      throw ERR;
-    });
-
-    assert.strictEqual(form.resume(), false);
-  })();
-
-  (function testEmitError() {
-    var ERR = new Error('something bad happened');
-    gently.expect(form, '_error',function(err) {
-      assert.strictEqual(err, ERR);
-    });
-    emit.error(ERR);
-  })();
-
-  (function testEmitAborted() {
-    gently.expect(form, 'emit',function(event) {
-      assert.equal(event, 'aborted');
-    });
-    gently.expect(form, '_error');
-
-    emit.aborted();
-  })();
-
-
-  (function testEmitData() {
-    var BUFFER = [1, 2, 3];
-    gently.expect(form, 'write', function(buffer) {
-      assert.strictEqual(buffer, BUFFER);
-    });
-    emit.data(BUFFER);
-  })();
-
-  (function testEmitEnd() {
-    form._parser = {};
-
-    (function testWithError() {
-      var ERR = new Error('haha');
-      gently.expect(form._parser, 'end', function() {
-        return ERR;
-      });
-
-      gently.expect(form, '_error', function(err) {
-        assert.strictEqual(err, ERR);
-      });
-
-      emit.end();
-    })();
-
-    (function testWithoutError() {
-      gently.expect(form._parser, 'end');
-      emit.end();
-    })();
-
-    (function testAfterError() {
-      form.error = true;
-      emit.end();
-    })();
-  })();
-
-  (function testWithCallback() {
-    gently.expect(EventEmitterStub, 'call');
-    var form = new IncomingForm(),
-        REQ = {headers: {}},
-        parseCalled = 0;
-
-    gently.expect(form, 'on', 4, function(event, fn) {
-      if (event == 'field') {
-        fn('field1', 'foo');
-        fn('field1', 'bar');
-        fn('field2', 'nice');
-      }
-
-      if (event == 'file') {
-        fn('file1', '1');
-        fn('file1', '2');
-        fn('file2', '3');
-      }
-
-      if (event == 'end') {
-        fn();
-      }
-      return this;
-    });
-
-    gently.expect(form, 'writeHeaders');
-
-    gently.expect(REQ, 'on', 4, function() {
-      return this;
-    });
-
-    var parseCbOk = function (err, fields, files) {
-      assert.deepEqual(fields, {field1: 'bar', field2: 'nice'});
-      assert.deepEqual(files, {file1: '2', file2: '3'});
-    };
-    form.parse(REQ, parseCbOk);
-
-    var ERR = new Error('test');
-    gently.expect(form, 'on', 3, function(event, fn) {
-      if (event == 'field') {
-        fn('foo', 'bar');
-      }
-
-      if (event == 'error') {
-        fn(ERR);
-        gently.expect(form, 'on');
-        gently.expect(form, 'writeHeaders');
-        gently.expect(REQ, 'on', 4, function() {
-          return this;
-        });
-      }
-      return this;
-    });
-
-    form.parse(REQ, function parseCbErr(err, fields, files) {
-      assert.strictEqual(err, ERR);
-      assert.deepEqual(fields, {foo: 'bar'});
-    });
-  })();
-
-  (function testWriteOrder() {
-    gently.expect(EventEmitterStub, 'call');
-    var form    = new IncomingForm();
-    var REQ     = new events.EventEmitter();
-    var BUF     = {};
-    var DATACB  = null;
-
-    REQ.on('newListener', function(event, fn) {
-      if ('data' === event) fn(BUF);
-    });
-
-    gently.expect(form, 'writeHeaders');
-    gently.expect(form, 'write', function(buf) {
-      assert.strictEqual(buf, BUF);
-    });
-
-    form.parse(REQ);
-  })();
-});
-
-test(function pause() {
-  assert.strictEqual(form.pause(), false);
-});
-
-test(function resume() {
-  assert.strictEqual(form.resume(), false);
-});
-
-
-test(function writeHeaders() {
-  var HEADERS = {};
-  gently.expect(form, '_parseContentLength');
-  gently.expect(form, '_parseContentType');
-
-  form.writeHeaders(HEADERS);
-  assert.strictEqual(form.headers, HEADERS);
-});
-
-test(function write() {
-  var parser = {},
-      BUFFER = [1, 2, 3];
-
-  form._parser = parser;
-  form.bytesExpected = 523423;
-
-  (function testBasic() {
-    gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) {
-      assert.equal(event, 'progress');
-      assert.equal(bytesReceived, BUFFER.length);
-      assert.equal(bytesExpected, form.bytesExpected);
-    });
-
-    gently.expect(parser, 'write', function(buffer) {
-      assert.strictEqual(buffer, BUFFER);
-      return buffer.length;
-    });
-
-    assert.equal(form.write(BUFFER), BUFFER.length);
-    assert.equal(form.bytesReceived, BUFFER.length);
-  })();
-
-  (function testParserError() {
-    gently.expect(form, 'emit');
-
-    gently.expect(parser, 'write', function(buffer) {
-      assert.strictEqual(buffer, BUFFER);
-      return buffer.length - 1;
-    });
-
-    gently.expect(form, '_error', function(err) {
-      assert.ok(err.message.match(/parser error/i));
-    });
-
-    assert.equal(form.write(BUFFER), BUFFER.length - 1);
-    assert.equal(form.bytesReceived, BUFFER.length + BUFFER.length);
-  })();
-
-  (function testUninitialized() {
-    delete form._parser;
-
-    gently.expect(form, '_error', function(err) {
-      assert.ok(err.message.match(/unintialized parser/i));
-    });
-    form.write(BUFFER);
-  })();
-});
-
-test(function parseContentType() {
-  var HEADERS = {};
-
-  form.headers = {'content-type': 'application/x-www-form-urlencoded'};
-  gently.expect(form, '_initUrlencoded');
-  form._parseContentType();
-
-  // accept anything that has 'urlencoded' in it
-  form.headers = {'content-type': 'broken-client/urlencoded-stupid'};
-  gently.expect(form, '_initUrlencoded');
-  form._parseContentType();
-
-  var BOUNDARY = '---------------------------57814261102167618332366269';
-  form.headers = {'content-type': 'multipart/form-data; boundary='+BOUNDARY};
-
-  gently.expect(form, '_initMultipart', function(boundary) {
-    assert.equal(boundary, BOUNDARY);
-  });
-  form._parseContentType();
-
-  (function testQuotedBoundary() {
-    form.headers = {'content-type': 'multipart/form-data; boundary="' + BOUNDARY + '"'};
-
-    gently.expect(form, '_initMultipart', function(boundary) {
-      assert.equal(boundary, BOUNDARY);
-    });
-    form._parseContentType();
-  })();
-
-  (function testNoBoundary() {
-    form.headers = {'content-type': 'multipart/form-data'};
-
-    gently.expect(form, '_error', function(err) {
-      assert.ok(err.message.match(/no multipart boundary/i));
-    });
-    form._parseContentType();
-  })();
-
-  (function testNoContentType() {
-    form.headers = {};
-
-    gently.expect(form, '_error', function(err) {
-      assert.ok(err.message.match(/no content-type/i));
-    });
-    form._parseContentType();
-  })();
-
-  (function testUnknownContentType() {
-    form.headers = {'content-type': 'invalid'};
-
-    gently.expect(form, '_error', function(err) {
-      assert.ok(err.message.match(/unknown content-type/i));
-    });
-    form._parseContentType();
-  })();
-});
-
-test(function parseContentLength() {
-  var HEADERS = {};
-
-  form.headers = {};
-  gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) {
-    assert.equal(event, 'progress');
-    assert.equal(bytesReceived, 0);
-    assert.equal(bytesExpected, 0);
-  });
-  form._parseContentLength();
-
-  form.headers['content-length'] = '8';
-  gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) {
-    assert.equal(event, 'progress');
-    assert.equal(bytesReceived, 0);
-    assert.equal(bytesExpected, 8);
-  });
-  form._parseContentLength();
-  assert.strictEqual(form.bytesReceived, 0);
-  assert.strictEqual(form.bytesExpected, 8);
-
-  // JS can be evil, lets make sure we are not
-  form.headers['content-length'] = '08';
-  gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) {
-    assert.equal(event, 'progress');
-    assert.equal(bytesReceived, 0);
-    assert.equal(bytesExpected, 8);
-  });
-  form._parseContentLength();
-  assert.strictEqual(form.bytesExpected, 8);
-});
-
-test(function _initMultipart() {
-  var BOUNDARY = '123',
-      PARSER;
-
-  gently.expect(MultipartParserStub, 'new', function() {
-    PARSER = this;
-  });
-
-  gently.expect(MultipartParserStub.prototype, 'initWithBoundary', function(boundary) {
-    assert.equal(boundary, BOUNDARY);
-  });
-
-  form._initMultipart(BOUNDARY);
-  assert.equal(form.type, 'multipart');
-  assert.strictEqual(form._parser, PARSER);
-
-  (function testRegularField() {
-    var PART;
-    gently.expect(StreamStub, 'new', function() {
-      PART = this;
-    });
-
-    gently.expect(form, 'onPart', function(part) {
-      assert.strictEqual(part, PART);
-      assert.deepEqual
-        ( part.headers
-        , { 'content-disposition': 'form-data; name="field1"'
-          , 'foo': 'bar'
-          }
-        );
-      assert.equal(part.name, 'field1');
-
-      var strings = ['hello', ' world'];
-      gently.expect(part, 'emit', 2, function(event, b) {
-          assert.equal(event, 'data');
-          assert.equal(b.toString(), strings.shift());
-      });
-
-      gently.expect(part, 'emit', function(event, b) {
-          assert.equal(event, 'end');
-      });
-    });
-
-    PARSER.onPartBegin();
-    PARSER.onHeaderField(new Buffer('content-disposition'), 0, 10);
-    PARSER.onHeaderField(new Buffer('content-disposition'), 10, 19);
-    PARSER.onHeaderValue(new Buffer('form-data; name="field1"'), 0, 14);
-    PARSER.onHeaderValue(new Buffer('form-data; name="field1"'), 14, 24);
-    PARSER.onHeaderEnd();
-    PARSER.onHeaderField(new Buffer('foo'), 0, 3);
-    PARSER.onHeaderValue(new Buffer('bar'), 0, 3);
-    PARSER.onHeaderEnd();
-    PARSER.onHeadersEnd();
-    PARSER.onPartData(new Buffer('hello world'), 0, 5);
-    PARSER.onPartData(new Buffer('hello world'), 5, 11);
-    PARSER.onPartEnd();
-  })();
-
-  (function testFileField() {
-    var PART;
-    gently.expect(StreamStub, 'new', function() {
-      PART = this;
-    });
-
-    gently.expect(form, 'onPart', function(part) {
-      assert.deepEqual
-        ( part.headers
-        , { 'content-disposition': 'form-data; name="field2"; filename="C:\\Documents and Settings\\IE\\Must\\Die\\Sun"et.jpg"'
-          , 'content-type': 'text/plain'
-          }
-        );
-      assert.equal(part.name, 'field2');
-      assert.equal(part.filename, 'Sun"et.jpg');
-      assert.equal(part.mime, 'text/plain');
-
-      gently.expect(part, 'emit', function(event, b) {
-        assert.equal(event, 'data');
-        assert.equal(b.toString(), '... contents of file1.txt ...');
-      });
-
-      gently.expect(part, 'emit', function(event, b) {
-          assert.equal(event, 'end');
-      });
-    });
-
-    PARSER.onPartBegin();
-    PARSER.onHeaderField(new Buffer('content-disposition'), 0, 19);
-    PARSER.onHeaderValue(new Buffer('form-data; name="field2"; filename="C:\\Documents and Settings\\IE\\Must\\Die\\Sun"et.jpg"'), 0, 85);
-    PARSER.onHeaderEnd();
-    PARSER.onHeaderField(new Buffer('Content-Type'), 0, 12);
-    PARSER.onHeaderValue(new Buffer('text/plain'), 0, 10);
-    PARSER.onHeaderEnd();
-    PARSER.onHeadersEnd();
-    PARSER.onPartData(new Buffer('... contents of file1.txt ...'), 0, 29);
-    PARSER.onPartEnd();
-  })();
-
-  (function testEnd() {
-    gently.expect(form, '_maybeEnd');
-    PARSER.onEnd();
-    assert.ok(form.ended);
-  })();
-});
-
-test(function _fileName() {
-  // TODO
-  return;
-});
-
-test(function _initUrlencoded() {
-  var PARSER;
-
-  gently.expect(QuerystringParserStub, 'new', function() {
-    PARSER = this;
-  });
-
-  form._initUrlencoded();
-  assert.equal(form.type, 'urlencoded');
-  assert.strictEqual(form._parser, PARSER);
-
-  (function testOnField() {
-    var KEY = 'KEY', VAL = 'VAL';
-    gently.expect(form, 'emit', function(field, key, val) {
-      assert.equal(field, 'field');
-      assert.equal(key, KEY);
-      assert.equal(val, VAL);
-    });
-
-    PARSER.onField(KEY, VAL);
-  })();
-
-  (function testOnEnd() {
-    gently.expect(form, '_maybeEnd');
-
-    PARSER.onEnd();
-    assert.equal(form.ended, true);
-  })();
-});
-
-test(function _error() {
-  var ERR = new Error('bla');
-
-  gently.expect(form, 'pause');
-  gently.expect(form, 'emit', function(event, err) {
-    assert.equal(event, 'error');
-    assert.strictEqual(err, ERR);
-  });
-
-  form._error(ERR);
-  assert.strictEqual(form.error, ERR);
-
-  // make sure _error only does its thing once
-  form._error(ERR);
-});
-
-test(function onPart() {
-  var PART = {};
-  gently.expect(form, 'handlePart', function(part) {
-    assert.strictEqual(part, PART);
-  });
-
-  form.onPart(PART);
-});
-
-test(function handlePart() {
-  (function testUtf8Field() {
-    var PART = new events.EventEmitter();
-    PART.name = 'my_field';
-
-    gently.expect(form, 'emit', function(event, field, value) {
-      assert.equal(event, 'field');
-      assert.equal(field, 'my_field');
-      assert.equal(value, 'hello world: ā‚¬');
-    });
-
-    form.handlePart(PART);
-    PART.emit('data', new Buffer('hello'));
-    PART.emit('data', new Buffer(' world: '));
-    PART.emit('data', new Buffer([0xE2]));
-    PART.emit('data', new Buffer([0x82, 0xAC]));
-    PART.emit('end');
-  })();
-
-  (function testBinaryField() {
-    var PART = new events.EventEmitter();
-    PART.name = 'my_field2';
-
-    gently.expect(form, 'emit', function(event, field, value) {
-      assert.equal(event, 'field');
-      assert.equal(field, 'my_field2');
-      assert.equal(value, 'hello world: '+new Buffer([0xE2, 0x82, 0xAC]).toString('binary'));
-    });
-
-    form.encoding = 'binary';
-    form.handlePart(PART);
-    PART.emit('data', new Buffer('hello'));
-    PART.emit('data', new Buffer(' world: '));
-    PART.emit('data', new Buffer([0xE2]));
-    PART.emit('data', new Buffer([0x82, 0xAC]));
-    PART.emit('end');
-  })();
-
-  (function testFieldSize() {
-    form.maxFieldsSize = 8;
-    var PART = new events.EventEmitter();
-    PART.name = 'my_field';
-
-    gently.expect(form, '_error', function(err) {
-      assert.equal(err.message, 'maxFieldsSize exceeded, received 9 bytes of field data');
-    });
-
-    form.handlePart(PART);
-    form._fieldsSize = 1;
-    PART.emit('data', new Buffer(7));
-    PART.emit('data', new Buffer(1));
-  })();
-
-  (function testFilePart() {
-    var PART = new events.EventEmitter(),
-        FILE = new events.EventEmitter(),
-        PATH = '/foo/bar';
-
-    PART.name = 'my_file';
-    PART.filename = 'sweet.txt';
-    PART.mime = 'sweet.txt';
-
-    gently.expect(form, '_uploadPath', function(filename) {
-      assert.equal(filename, PART.filename);
-      return PATH;
-    });
-
-    gently.expect(FileStub, 'new', function(properties) {
-      assert.equal(properties.path, PATH);
-      assert.equal(properties.name, PART.filename);
-      assert.equal(properties.type, PART.mime);
-      FILE = this;
-
-      gently.expect(form, 'emit', function (event, field, file) {
-        assert.equal(event, 'fileBegin');
-        assert.strictEqual(field, PART.name);
-        assert.strictEqual(file, FILE);
-      });
-
-      gently.expect(FILE, 'open');
-    });
-
-    form.handlePart(PART);
-    assert.equal(form._flushing, 1);
-
-    var BUFFER;
-    gently.expect(form, 'pause');
-    gently.expect(FILE, 'write', function(buffer, cb) {
-      assert.strictEqual(buffer, BUFFER);
-      gently.expect(form, 'resume');
-      // @todo handle cb(new Err)
-      cb();
-    });
-
-    PART.emit('data', BUFFER = new Buffer('test'));
-
-    gently.expect(FILE, 'end', function(cb) {
-      gently.expect(form, 'emit', function(event, field, file) {
-        assert.equal(event, 'file');
-        assert.strictEqual(file, FILE);
-      });
-
-      gently.expect(form, '_maybeEnd');
-
-      cb();
-      assert.equal(form._flushing, 0);
-    });
-
-    PART.emit('end');
-  })();
-});
-
-test(function _uploadPath() {
-  (function testUniqueId() {
-    var UUID_A, UUID_B;
-    gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, uuid) {
-      assert.equal(uploadDir, form.uploadDir);
-      UUID_A = uuid;
-    });
-    form._uploadPath();
-
-    gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, uuid) {
-      UUID_B = uuid;
-    });
-    form._uploadPath();
-
-    assert.notEqual(UUID_A, UUID_B);
-  })();
-
-  (function testFileExtension() {
-    form.keepExtensions = true;
-    var FILENAME = 'foo.jpg',
-        EXT = '.bar';
-
-    gently.expect(GENTLY.hijacked.path, 'extname', function(filename) {
-      assert.equal(filename, FILENAME);
-      gently.restore(path, 'extname');
-
-      return EXT;
-    });
-
-    gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, name) {
-      assert.equal(path.extname(name), EXT);
-    });
-    form._uploadPath(FILENAME);
-  })();
-});
-
-test(function _maybeEnd() {
-  gently.expect(form, 'emit', 0);
-  form._maybeEnd();
-
-  form.ended = true;
-  form._flushing = 1;
-  form._maybeEnd();
-
-  gently.expect(form, 'emit', function(event) {
-    assert.equal(event, 'end');
-  });
-
-  form.ended = true;
-  form._flushing = 0;
-  form._maybeEnd();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js
deleted file mode 100644
index bf2cd5e..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js
+++ /dev/null
@@ -1,50 +0,0 @@
-var common = require('../common');
-var multipartParser = require(common.lib + '/multipart_parser'),
-    MultipartParser = multipartParser.MultipartParser,
-    events = require('events'),
-    Buffer = require('buffer').Buffer,
-    parser;
-
-function test(test) {
-  parser = new MultipartParser();
-  test();
-}
-
-test(function constructor() {
-  assert.equal(parser.boundary, null);
-  assert.equal(parser.state, 0);
-  assert.equal(parser.flags, 0);
-  assert.equal(parser.boundaryChars, null);
-  assert.equal(parser.index, null);
-  assert.equal(parser.lookbehind, null);
-  assert.equal(parser.constructor.name, 'MultipartParser');
-});
-
-test(function initWithBoundary() {
-  var boundary = 'abc';
-  parser.initWithBoundary(boundary);
-  assert.deepEqual(Array.prototype.slice.call(parser.boundary), [13, 10, 45, 45, 97, 98, 99]);
-  assert.equal(parser.state, multipartParser.START);
-
-  assert.deepEqual(parser.boundaryChars, {10: true, 13: true, 45: true, 97: true, 98: true, 99: true});
-});
-
-test(function parserError() {
-  var boundary = 'abc',
-      buffer = new Buffer(5);
-
-  parser.initWithBoundary(boundary);
-  buffer.write('--ad', 'ascii', 0);
-  assert.equal(parser.write(buffer), 5);
-});
-
-test(function end() {
-  (function testError() {
-    assert.equal(parser.end().message, 'MultipartParser.end(): stream ended unexpectedly: ' + parser.explain());
-  })();
-
-  (function testRegular() {
-    parser.state = multipartParser.END;
-    assert.strictEqual(parser.end(), undefined);
-  })();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js
deleted file mode 100644
index 54d3e2d..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var common = require('../common');
-var QuerystringParser = require(common.lib + '/querystring_parser').QuerystringParser,
-    Buffer = require('buffer').Buffer,
-    gently,
-    parser;
-
-function test(test) {
-  gently = new Gently();
-  parser = new QuerystringParser();
-  test();
-  gently.verify(test.name);
-}
-
-test(function constructor() {
-  assert.equal(parser.buffer, '');
-  assert.equal(parser.constructor.name, 'QuerystringParser');
-});
-
-test(function write() {
-  var a = new Buffer('a=1');
-  assert.equal(parser.write(a), a.length);
-
-  var b = new Buffer('&b=2');
-  parser.write(b);
-  assert.equal(parser.buffer, a + b);
-});
-
-test(function end() {
-  var FIELDS = {a: ['b', {c: 'd'}], e: 'f'};
-
-  gently.expect(GENTLY.hijacked.querystring, 'parse', function(str) {
-    assert.equal(str, parser.buffer);
-    return FIELDS;
-  });
-
-  gently.expect(parser, 'onField', Object.keys(FIELDS).length, function(key, val) {
-    assert.deepEqual(FIELDS[key], val);
-  });
-
-  gently.expect(parser, 'onEnd');
-
-  parser.buffer = 'my buffer';
-  parser.end();
-  assert.equal(parser.buffer, '');
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js
deleted file mode 100644
index b35ffd6..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js
+++ /dev/null
@@ -1,71 +0,0 @@
-var common = require('../common');
-var BOUNDARY = '---------------------------10102754414578508781458777923',
-    FIXTURE = TEST_FIXTURES+'/multi_video.upload',
-    fs = require('fs'),
-    http = require('http'),
-    formidable = require(common.lib + '/index'),
-    server = http.createServer();
-
-server.on('request', function(req, res) {
-  var form = new formidable.IncomingForm(),
-      uploads = {};
-
-  form.uploadDir = TEST_TMP;
-  form.hash = 'sha1';
-  form.parse(req);
-
-  form
-    .on('fileBegin', function(field, file) {
-      assert.equal(field, 'upload');
-
-      var tracker = {file: file, progress: [], ended: false};
-      uploads[file.name] = tracker;
-      file
-        .on('progress', function(bytesReceived) {
-          tracker.progress.push(bytesReceived);
-          assert.equal(bytesReceived, file.size);
-        })
-        .on('end', function() {
-          tracker.ended = true;
-        });
-    })
-    .on('field', function(field, value) {
-      assert.equal(field, 'title');
-      assert.equal(value, '');
-    })
-    .on('file', function(field, file) {
-      assert.equal(field, 'upload');
-      assert.strictEqual(uploads[file.name].file, file);
-    })
-    .on('end', function() {
-      assert.ok(uploads['shortest_video.flv']);
-      assert.ok(uploads['shortest_video.flv'].ended);
-      assert.ok(uploads['shortest_video.flv'].progress.length > 3);
-      assert.equal(uploads['shortest_video.flv'].file.hash, 'd6a17616c7143d1b1438ceeef6836d1a09186b3a');
-      assert.equal(uploads['shortest_video.flv'].progress.slice(-1), uploads['shortest_video.flv'].file.size);
-      assert.ok(uploads['shortest_video.mp4']);
-      assert.ok(uploads['shortest_video.mp4'].ended);
-      assert.ok(uploads['shortest_video.mp4'].progress.length > 3);
-      assert.equal(uploads['shortest_video.mp4'].file.hash, '937dfd4db263f4887ceae19341dcc8d63bcd557f');
-
-      server.close();
-      res.writeHead(200);
-      res.end('good');
-    });
-});
-
-server.listen(TEST_PORT, function() {
-  var stat, headers, request, fixture;
-
-  stat = fs.statSync(FIXTURE);
-  request = http.request({
-    port: TEST_PORT,
-    path: '/',
-    method: 'POST',
-    headers: {
-      'content-type': 'multipart/form-data; boundary='+BOUNDARY,
-      'content-length': stat.size,
-    },
-  });
-  fs.createReadStream(FIXTURE).pipe(request);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js
deleted file mode 100755
index 02d6d5c..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js
+++ /dev/null
@@ -1 +0,0 @@
-require('urun')(__dirname)

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-connection-aborted.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-connection-aborted.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-connection-aborted.js
deleted file mode 100644
index 4ea4431..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-connection-aborted.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var assert = require('assert');
-var http = require('http');
-var net = require('net');
-var formidable = require('../../lib/index');
-
-var server = http.createServer(function (req, res) {
-  var form = new formidable.IncomingForm();
-  var aborted_received = false;
-  form.on('aborted', function () {
-    aborted_received = true;
-  });
-  form.on('error', function () {
-    assert(aborted_received, 'Error event should follow aborted');
-    server.close();
-  });
-  form.on('end', function () {
-    throw new Error('Unexpected "end" event');
-  });
-  form.parse(req);
-}).listen(0, 'localhost', function () {
-  var client = net.connect(server.address().port);
-  client.write(
-    "POST / HTTP/1.1\r\n" +
-    "Content-Length: 70\r\n" +
-    "Content-Type: multipart/form-data; boundary=foo\r\n\r\n");
-  client.end();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-content-transfer-encoding.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-content-transfer-encoding.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-content-transfer-encoding.js
deleted file mode 100644
index 165628a..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-content-transfer-encoding.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var assert = require('assert');
-var common = require('../common');
-var formidable = require('../../lib/index');
-var http = require('http');
-
-var server = http.createServer(function(req, res) {
-  var form = new formidable.IncomingForm();
-  form.uploadDir = common.dir.tmp;
-  form.on('end', function () {
-    throw new Error('Unexpected "end" event');
-  });
-  form.on('error', function (e) {
-    res.writeHead(500);
-    res.end(e.message);
-  });
-  form.parse(req);
-});
-
-server.listen(0, function() {
-  var body =
-    '--foo\r\n' +
-    'Content-Disposition: form-data; name="file1"; filename="file1"\r\n' +
-    'Content-Type: application/octet-stream\r\n' +
-    '\r\nThis is the first file\r\n' +
-    '--foo\r\n' +
-    'Content-Type: application/octet-stream\r\n' +
-    'Content-Disposition: form-data; name="file2"; filename="file2"\r\n' +
-    'Content-Transfer-Encoding: unknown\r\n' +
-    '\r\nThis is the second file\r\n' +
-    '--foo--\r\n';
-
-  var req = http.request({
-    method: 'POST',
-    port: server.address().port,
-    headers: {
-      'Content-Length': body.length,
-      'Content-Type': 'multipart/form-data; boundary=foo'
-    }
-  });
-  req.on('response', function (res) {
-    assert.equal(res.statusCode, 500);
-    res.on('data', function () {});
-    res.on('end', function () {
-      server.close();
-    });
-  });
-  req.end(body);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-issue-46.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-issue-46.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-issue-46.js
deleted file mode 100644
index 1939328..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-issue-46.js
+++ /dev/null
@@ -1,49 +0,0 @@
-var http       = require('http'),
-    formidable = require('../../lib/index'),
-    request    = require('request'),
-    assert     = require('assert');
-
-var host = 'localhost';
-
-var index = [
-  '<form action="/" method="post" enctype="multipart/form-data">',
-  '  <input type="text" name="foo" />',
-  '  <input type="submit" />',
-  '</form>'
-].join("\n");
-
-var server = http.createServer(function(req, res) {
-
-  // Show a form for testing purposes.
-  if (req.method == 'GET') {
-    res.writeHead(200, {'content-type': 'text/html'});
-    res.end(index);
-    return;
-  }
-
-  // Parse form and write results to response.
-  var form = new formidable.IncomingForm();
-  form.parse(req, function(err, fields, files) {
-    res.writeHead(200, {'content-type': 'text/plain'}); 
-    res.write(JSON.stringify({err: err, fields: fields, files: files}));
-    res.end();
-  });
-
-}).listen(0, host, function() {
-
-  console.log("Server up and running...");
-
-  var server = this,
-      url    = 'http://' + host + ':' + server.address().port;
-
-  var parts  = [
-    {'Content-Disposition': 'form-data; name="foo"', 'body': 'bar'}
-  ]
-
-  var req = request({method: 'POST', url: url, multipart: parts}, function(e, res, body) {
-    var obj = JSON.parse(body);
-    assert.equal("bar", obj.fields.foo);
-    server.close();
-  });
-
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/tools/base64.html
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/tools/base64.html b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/tools/base64.html
deleted file mode 100644
index 48ad92e..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/tools/base64.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<html>
-<head>
-	<title>Convert a file to a base64 request</title>
-
-<script type="text/javascript">
-
-function form_submit(e){
-	console.log(e)
-
-	var resultOutput = document.getElementById('resultOutput');
-	var fileInput = document.getElementById('fileInput');
-	var fieldInput = document.getElementById('fieldInput');
-
-	makeRequestBase64(fileInput.files[0], fieldInput.value, function(err, result){
-		resultOutput.value = result;
-	});
-
-	return false;
-}
-
-function makeRequestBase64(file, fieldName, cb){
-	var boundary = '\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/';
-	var crlf = "\r\n";
-
-	var reader = new FileReader();
-	reader.onload = function(e){
-		var body = '';
-
-		body += '--' + boundary + crlf;
-		body += 'Content-Disposition: form-data; name="' + fieldName + '"; filename="' + escape(file.name)+ '"' + crlf;
-		body += 'Content-Type: ' + file.type + '' + crlf;
-		body += 'Content-Transfer-Encoding: base64' + crlf
-		body += crlf;
-		body += e.target.result.substring(e.target.result.indexOf(',') + 1) + crlf;
-
-		body += '--' + boundary + '--';
-
-		var head = '';
-		head += 'POST /upload HTTP/1.1' + crlf;
-		head += 'Host: localhost:8080' + crlf;
-		head += 'Content-Type: multipart/form-data; boundary=' + boundary + '' + crlf;
-		head += 'Content-Length: ' + body.length + '' + crlf;
-
-		cb(null, head + crlf + body);
-	};
-
-	reader.readAsDataURL(file);
-}
-
-</script>
-
-</head>
-
-<body>
-
-<form action="" onsubmit="return form_submit();">
-	<label>File: <input id="fileInput" type="file" /></label><br />
-	<label>Field: <input id="fieldInput" type="text" value="file" /></label><br />
-	<button type="submit">Ok!</button><br />
-	<label>Request: <textarea id="resultOutput" readonly="readonly" rows="20" cols="80"></textarea></label><br />
-</form>
-<p>
-Don't forget to save the output with windows (CRLF) line endings!
-</p>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-file.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-file.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-file.js
deleted file mode 100644
index fc8f36e..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-file.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var common       = require('../common');
-var test         = require('utest');
-var assert       = common.assert;
-var File = common.require('file');
-
-var file;
-var now = new Date;
-test('IncomingForm', {
-  before: function() {
-    file = new File({
-      size: 1024,
-      path: '/tmp/cat.png',
-      name: 'cat.png',
-      type: 'image/png',
-      lastModifiedDate: now,
-      filename: 'cat.png',
-      mime: 'image/png'
-    })
-  },
-
-  '#toJSON()': function() {
-    var obj = file.toJSON();
-    var len = Object.keys(obj).length;
-    assert.equal(1024, obj.size);
-    assert.equal('/tmp/cat.png', obj.path);
-    assert.equal('cat.png', obj.name);
-    assert.equal('image/png', obj.type);
-    assert.equal('image/png', obj.mime);
-    assert.equal('cat.png', obj.filename);
-    assert.equal(now, obj.mtime);
-    assert.equal(len, 8);
-  }
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js
deleted file mode 100644
index fe2ac1c..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js
+++ /dev/null
@@ -1,63 +0,0 @@
-var common       = require('../common');
-var test         = require('utest');
-var assert       = common.assert;
-var IncomingForm = common.require('incoming_form').IncomingForm;
-var path         = require('path');
-
-var form;
-test('IncomingForm', {
-  before: function() {
-    form = new IncomingForm();
-  },
-
-  '#_fileName with regular characters': function() {
-    var filename = 'foo.txt';
-    assert.equal(form._fileName(makeHeader(filename)), 'foo.txt');
-  },
-
-  '#_fileName with unescaped quote': function() {
-    var filename = 'my".txt';
-    assert.equal(form._fileName(makeHeader(filename)), 'my".txt');
-  },
-
-  '#_fileName with escaped quote': function() {
-    var filename = 'my%22.txt';
-    assert.equal(form._fileName(makeHeader(filename)), 'my".txt');
-  },
-
-  '#_fileName with bad quote and additional sub-header': function() {
-    var filename = 'my".txt';
-    var header = makeHeader(filename) + '; foo="bar"';
-    assert.equal(form._fileName(header), filename);
-  },
-
-  '#_fileName with semicolon': function() {
-    var filename = 'my;.txt';
-    assert.equal(form._fileName(makeHeader(filename)), 'my;.txt');
-  },
-
-  '#_fileName with utf8 character': function() {
-    var filename = 'my&#9731;.txt';
-    assert.equal(form._fileName(makeHeader(filename)), 'myā˜ƒ.txt');
-  },
-
-  '#_uploadPath strips harmful characters from extension when keepExtensions': function() {
-    form.keepExtensions = true;
-
-    var ext = path.extname(form._uploadPath('fine.jpg?foo=bar'));
-    assert.equal(ext, '.jpg');
-
-    var ext = path.extname(form._uploadPath('fine?foo=bar'));
-    assert.equal(ext, '');
-
-    var ext = path.extname(form._uploadPath('super.cr2+dsad'));
-    assert.equal(ext, '.cr2');
-
-    var ext = path.extname(form._uploadPath('super.bar'));
-    assert.equal(ext, '.bar');
-  },
-});
-
-function makeHeader(filename) {
-  return 'Content-Disposition: form-data; name="upload"; filename="' + filename + '"';
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js
deleted file mode 100644
index 9f1cef8..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var http = require('http');
-var fs = require('fs');
-var connections = 0;
-
-var server = http.createServer(function(req, res) {
-  var socket = req.socket;
-  console.log('Request: %s %s -> %s', req.method, req.url, socket.filename);
-
-  req.on('end', function() {
-    if (req.url !== '/') {
-      res.end(JSON.stringify({
-        method: req.method,
-        url: req.url,
-        filename: socket.filename,
-      }));
-      return;
-    }
-
-    res.writeHead(200, {'content-type': 'text/html'});
-    res.end(
-      '<form action="/upload" enctype="multipart/form-data" method="post">'+
-      '<input type="text" name="title"><br>'+
-      '<input type="file" name="upload" multiple="multiple"><br>'+
-      '<input type="submit" value="Upload">'+
-      '</form>'
-    );
-  });
-});
-
-server.on('connection', function(socket) {
-  connections++;
-
-  socket.id = connections;
-  socket.filename = 'connection-' + socket.id + '.http';
-  socket.file = fs.createWriteStream(socket.filename);
-  socket.pipe(socket.file);
-
-  console.log('--> %s', socket.filename);
-  socket.on('close', function() {
-    console.log('<-- %s', socket.filename);
-  });
-});
-
-var port = process.env.PORT || 8080;
-server.listen(port, function() {
-  console.log('Recording connections on port %s', port);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/.npmignore b/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/.npmignore
deleted file mode 100644
index f1250e5..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-support
-test
-examples
-*.sock

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/History.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/History.md b/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/History.md
deleted file mode 100644
index c8aa68f..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/History.md
+++ /dev/null
@@ -1,5 +0,0 @@
-
-0.0.1 / 2010-01-03
-==================
-
-  * Initial release

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/Makefile b/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/Makefile
deleted file mode 100644
index 4e9c8d3..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-
-test:
-	@./node_modules/.bin/mocha \
-		--require should \
-		--reporter spec
-
-.PHONY: test
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/Readme.md b/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/Readme.md
deleted file mode 100644
index 1cdd68a..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/Readme.md
+++ /dev/null
@@ -1,29 +0,0 @@
-
-# pause
-
-  Pause streams...
-
-## License 
-
-(The MIT License)
-
-Copyright (c) 2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/index.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/index.js
deleted file mode 100644
index 1b7b379..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-
-module.exports = function(obj){
-  var onData
-    , onEnd
-    , events = [];
-
-  // buffer data
-  obj.on('data', onData = function(data, encoding){
-    events.push(['data', data, encoding]);
-  });
-
-  // buffer end
-  obj.on('end', onEnd = function(data, encoding){
-    events.push(['end', data, encoding]);
-  });
-
-  return {
-    end: function(){
-      obj.removeListener('data', onData);
-      obj.removeListener('end', onEnd);
-    },
-    resume: function(){
-      this.end();
-      for (var i = 0, len = events.length; i < len; ++i) {
-        obj.emit.apply(obj, events[i]);
-      }
-    }
-  };
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/package.json b/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/package.json
deleted file mode 100644
index 73cfe40..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/pause/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "name": "pause",
-  "version": "0.0.1",
-  "description": "Pause streams...",
-  "keywords": [],
-  "author": {
-    "name": "TJ Holowaychuk",
-    "email": "tj@vision-media.ca"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "mocha": "*",
-    "should": "*"
-  },
-  "main": "index",
-  "readme": "\n# pause\n\n  Pause streams...\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nC
 LAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
-  "readmeFilename": "Readme.md",
-  "_id": "pause@0.0.1",
-  "_from": "pause@0.0.1"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules b/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules
deleted file mode 100644
index 49e31da..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules
+++ /dev/null
@@ -1,6 +0,0 @@
-[submodule "support/expresso"]
-	path = support/expresso
-	url = git://github.com/visionmedia/expresso.git
-[submodule "support/should"]
-	path = support/should
-	url = git://github.com/visionmedia/should.js.git

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/.npmignore b/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/.npmignore
deleted file mode 100644
index e85ce2a..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/.npmignore
+++ /dev/null
@@ -1,7 +0,0 @@
-test
-.travis.yml
-benchmark.js
-component.json
-examples.js
-History.md
-Makefile

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/Readme.md b/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/Readme.md
deleted file mode 100644
index 27e54a4..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/Readme.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# node-querystring
-
-  query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.
-
-## Installation
-
-    $ npm install qs
-
-## Examples
-
-```js
-var qs = require('qs');
-
-qs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');
-// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }
-
-qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})
-// => user[name]=Tobi&user[email]=tobi%40learnboost.com
-```
-
-## Testing
-
-Install dev dependencies:
-
-    $ npm install -d
-
-and execute:
-
-    $ make test
-
-browser:
-
-    $ open test/browser/index.html
-
-## License 
-
-(The MIT License)
-
-Copyright (c) 2010 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/index.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/index.js
deleted file mode 100644
index 590491e..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/index.js
+++ /dev/null
@@ -1,387 +0,0 @@
-/**
- * Object#toString() ref for stringify().
- */
-
-var toString = Object.prototype.toString;
-
-/**
- * Object#hasOwnProperty ref
- */
-
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-
-/**
- * Array#indexOf shim.
- */
-
-var indexOf = typeof Array.prototype.indexOf === 'function'
-  ? function(arr, el) { return arr.indexOf(el); }
-  : function(arr, el) {
-      for (var i = 0; i < arr.length; i++) {
-        if (arr[i] === el) return i;
-      }
-      return -1;
-    };
-
-/**
- * Array.isArray shim.
- */
-
-var isArray = Array.isArray || function(arr) {
-  return toString.call(arr) == '[object Array]';
-};
-
-/**
- * Object.keys shim.
- */
-
-var objectKeys = Object.keys || function(obj) {
-  var ret = [];
-  for (var key in obj) ret.push(key);
-  return ret;
-};
-
-/**
- * Array#forEach shim.
- */
-
-var forEach = typeof Array.prototype.forEach === 'function'
-  ? function(arr, fn) { return arr.forEach(fn); }
-  : function(arr, fn) {
-      for (var i = 0; i < arr.length; i++) fn(arr[i]);
-    };
-
-/**
- * Array#reduce shim.
- */
-
-var reduce = function(arr, fn, initial) {
-  if (typeof arr.reduce === 'function') return arr.reduce(fn, initial);
-  var res = initial;
-  for (var i = 0; i < arr.length; i++) res = fn(res, arr[i]);
-  return res;
-};
-
-/**
- * Create a nullary object if possible
- */
-
-function createObject() {
-  return Object.create
-    ? Object.create(null)
-    : {};
-}
-
-/**
- * Cache non-integer test regexp.
- */
-
-var isint = /^[0-9]+$/;
-
-function promote(parent, key) {
-  if (parent[key].length == 0) return parent[key] = createObject();
-  var t = createObject();
-  for (var i in parent[key]) {
-    if (hasOwnProperty.call(parent[key], i)) {
-      t[i] = parent[key][i];
-    }
-  }
-  parent[key] = t;
-  return t;
-}
-
-function parse(parts, parent, key, val) {
-  var part = parts.shift();
-  // end
-  if (!part) {
-    if (isArray(parent[key])) {
-      parent[key].push(val);
-    } else if ('object' == typeof parent[key]) {
-      parent[key] = val;
-    } else if ('undefined' == typeof parent[key]) {
-      parent[key] = val;
-    } else {
-      parent[key] = [parent[key], val];
-    }
-    // array
-  } else {
-    var obj = parent[key] = parent[key] || [];
-    if (']' == part) {
-      if (isArray(obj)) {
-        if ('' != val) obj.push(val);
-      } else if ('object' == typeof obj) {
-        obj[objectKeys(obj).length] = val;
-      } else {
-        obj = parent[key] = [parent[key], val];
-      }
-      // prop
-    } else if (~indexOf(part, ']')) {
-      part = part.substr(0, part.length - 1);
-      if (!isint.test(part) && isArray(obj)) obj = promote(parent, key);
-      parse(parts, obj, part, val);
-      // key
-    } else {
-      if (!isint.test(part) && isArray(obj)) obj = promote(parent, key);
-      parse(parts, obj, part, val);
-    }
-  }
-}
-
-/**
- * Merge parent key/val pair.
- */
-
-function merge(parent, key, val){
-  if (~indexOf(key, ']')) {
-    var parts = key.split('[')
-      , len = parts.length
-      , last = len - 1;
-    parse(parts, parent, 'base', val);
-    // optimize
-  } else {
-    if (!isint.test(key) && isArray(parent.base)) {
-      var t = createObject();
-      for (var k in parent.base) t[k] = parent.base[k];
-      parent.base = t;
-    }
-    set(parent.base, key, val);
-  }
-
-  return parent;
-}
-
-/**
- * Compact sparse arrays.
- */
-
-function compact(obj) {
-  if ('object' != typeof obj) return obj;
-
-  if (isArray(obj)) {
-    var ret = [];
-
-    for (var i in obj) {
-      if (hasOwnProperty.call(obj, i)) {
-        ret.push(obj[i]);
-      }
-    }
-
-    return ret;
-  }
-
-  for (var key in obj) {
-    obj[key] = compact(obj[key]);
-  }
-
-  return obj;
-}
-
-/**
- * Restore Object.prototype.
- * see pull-request #58
- */
-
-function restoreProto(obj) {
-  if (!Object.create) return obj;
-  if (isArray(obj)) return obj;
-  if (obj && 'object' != typeof obj) return obj;
-
-  for (var key in obj) {
-    if (hasOwnProperty.call(obj, key)) {
-      obj[key] = restoreProto(obj[key]);
-    }
-  }
-
-  obj.__proto__ = Object.prototype;
-  return obj;
-}
-
-/**
- * Parse the given obj.
- */
-
-function parseObject(obj){
-  var ret = { base: {} };
-
-  forEach(objectKeys(obj), function(name){
-    merge(ret, name, obj[name]);
-  });
-
-  return compact(ret.base);
-}
-
-/**
- * Parse the given str.
- */
-
-function parseString(str){
-  var ret = reduce(String(str).split('&'), function(ret, pair){
-    var eql = indexOf(pair, '=')
-      , brace = lastBraceInKey(pair)
-      , key = pair.substr(0, brace || eql)
-      , val = pair.substr(brace || eql, pair.length)
-      , val = val.substr(indexOf(val, '=') + 1, val.length);
-
-    // ?foo
-    if ('' == key) key = pair, val = '';
-    if ('' == key) return ret;
-
-    return merge(ret, decode(key), decode(val));
-  }, { base: createObject() }).base;
-
-  return restoreProto(compact(ret));
-}
-
-/**
- * Parse the given query `str` or `obj`, returning an object.
- *
- * @param {String} str | {Object} obj
- * @return {Object}
- * @api public
- */
-
-exports.parse = function(str){
-  if (null == str || '' == str) return {};
-  return 'object' == typeof str
-    ? parseObject(str)
-    : parseString(str);
-};
-
-/**
- * Turn the given `obj` into a query string
- *
- * @param {Object} obj
- * @return {String}
- * @api public
- */
-
-var stringify = exports.stringify = function(obj, prefix) {
-  if (isArray(obj)) {
-    return stringifyArray(obj, prefix);
-  } else if ('[object Object]' == toString.call(obj)) {
-    return stringifyObject(obj, prefix);
-  } else if ('string' == typeof obj) {
-    return stringifyString(obj, prefix);
-  } else {
-    return prefix + '=' + encodeURIComponent(String(obj));
-  }
-};
-
-/**
- * Stringify the given `str`.
- *
- * @param {String} str
- * @param {String} prefix
- * @return {String}
- * @api private
- */
-
-function stringifyString(str, prefix) {
-  if (!prefix) throw new TypeError('stringify expects an object');
-  return prefix + '=' + encodeURIComponent(str);
-}
-
-/**
- * Stringify the given `arr`.
- *
- * @param {Array} arr
- * @param {String} prefix
- * @return {String}
- * @api private
- */
-
-function stringifyArray(arr, prefix) {
-  var ret = [];
-  if (!prefix) throw new TypeError('stringify expects an object');
-  for (var i = 0; i < arr.length; i++) {
-    ret.push(stringify(arr[i], prefix + '[' + i + ']'));
-  }
-  return ret.join('&');
-}
-
-/**
- * Stringify the given `obj`.
- *
- * @param {Object} obj
- * @param {String} prefix
- * @return {String}
- * @api private
- */
-
-function stringifyObject(obj, prefix) {
-  var ret = []
-    , keys = objectKeys(obj)
-    , key;
-
-  for (var i = 0, len = keys.length; i < len; ++i) {
-    key = keys[i];
-    if ('' == key) continue;
-    if (null == obj[key]) {
-      ret.push(encodeURIComponent(key) + '=');
-    } else {
-      ret.push(stringify(obj[key], prefix
-        ? prefix + '[' + encodeURIComponent(key) + ']'
-        : encodeURIComponent(key)));
-    }
-  }
-
-  return ret.join('&');
-}
-
-/**
- * Set `obj`'s `key` to `val` respecting
- * the weird and wonderful syntax of a qs,
- * where "foo=bar&foo=baz" becomes an array.
- *
- * @param {Object} obj
- * @param {String} key
- * @param {String} val
- * @api private
- */
-
-function set(obj, key, val) {
-  var v = obj[key];
-  if (undefined === v) {
-    obj[key] = val;
-  } else if (isArray(v)) {
-    v.push(val);
-  } else {
-    obj[key] = [v, val];
-  }
-}
-
-/**
- * Locate last brace in `str` within the key.
- *
- * @param {String} str
- * @return {Number}
- * @api private
- */
-
-function lastBraceInKey(str) {
-  var len = str.length
-    , brace
-    , c;
-  for (var i = 0; i < len; ++i) {
-    c = str[i];
-    if (']' == c) brace = false;
-    if ('[' == c) brace = true;
-    if ('=' == c && !brace) return i;
-  }
-}
-
-/**
- * Decode `str`.
- *
- * @param {String} str
- * @return {String}
- * @api private
- */
-
-function decode(str) {
-  try {
-    return decodeURIComponent(str.replace(/\+/g, ' '));
-  } catch (err) {
-    return str;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/package.json b/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/package.json
deleted file mode 100644
index 1f5ea69..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/qs/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-  "name": "qs",
-  "description": "querystring parser",
-  "version": "0.6.5",
-  "keywords": [
-    "query string",
-    "parser",
-    "component"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/node-querystring.git"
-  },
-  "devDependencies": {
-    "mocha": "*",
-    "expect.js": "*"
-  },
-  "scripts": {
-    "test": "make test"
-  },
-  "author": {
-    "name": "TJ Holowaychuk",
-    "email": "tj@vision-media.ca",
-    "url": "http://tjholowaychuk.com"
-  },
-  "main": "index",
-  "engines": {
-    "node": "*"
-  },
-  "readme": "# node-querystring\n\n  query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.\n\n## Installation\n\n    $ npm install qs\n\n## Examples\n\n```js\nvar qs = require('qs');\n\nqs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');\n// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }\n\nqs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})\n// => user[name]=Tobi&user[email]=tobi%40learnboost.com\n```\n\n## Testing\n\nInstall dev dependencies:\n\n    $ npm install -d\n\nand execute:\n\n    $ make test\n\nbrowser:\n\n    $ open test/browser/index.html\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission is hereby granted, free of charge
 , to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
-  "readmeFilename": "Readme.md",
-  "bugs": {
-    "url": "https://github.com/visionmedia/node-querystring/issues"
-  },
-  "homepage": "https://github.com/visionmedia/node-querystring",
-  "_id": "qs@0.6.5",
-  "_from": "qs@0.6.5"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/uid2/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/uid2/index.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/uid2/index.js
deleted file mode 100644
index d665f51..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/uid2/index.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Module dependencies
- */
-
-var crypto = require('crypto');
-
-/**
- * The size ratio between a base64 string and the equivalent byte buffer
- */
-
-var ratio = Math.log(64) / Math.log(256);
-
-/**
- * Make a Base64 string ready for use in URLs
- *
- * @param {String}
- * @returns {String}
- * @api private
- */
-
-function urlReady(str) {
-  return str.replace(/\+/g, '_').replace(/\//g, '-');
-}
-
-/**
- * Generate an Unique Id
- *
- * @param {Number} length  The number of chars of the uid
- * @param {Number} cb (optional)  Callback for async uid generation
- * @api public
- */
-
-function uid(length, cb) {
-  var numbytes = Math.ceil(length * ratio);
-  if (typeof cb === 'undefined') {
-    return urlReady(crypto.randomBytes(numbytes).toString('base64').slice(0, length));
-  } else {
-    crypto.randomBytes(numbytes, function(err, bytes) {
-       if (err) return cb(err);
-       cb(null, urlReady(bytes.toString('base64').slice(0, length)));
-    })
-  }
-}
-
-/**
- * Exports
- */
-
-module.exports = uid;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/uid2/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/uid2/package.json b/web/demos/package/node_modules/express/node_modules/connect/node_modules/uid2/package.json
deleted file mode 100644
index 9498f77..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/uid2/package.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "name": "uid2",
-  "description": "strong uid",
-  "tags": [
-    "uid"
-  ],
-  "version": "0.0.2",
-  "dependencies": {},
-  "readme": "ERROR: No README data found!",
-  "_id": "uid2@0.0.2",
-  "_from": "uid2@0.0.2"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/package.json b/web/demos/package/node_modules/express/node_modules/connect/package.json
deleted file mode 100644
index 028f760..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "name": "connect",
-  "version": "2.8.5",
-  "description": "High performance middleware framework",
-  "keywords": [
-    "framework",
-    "web",
-    "middleware",
-    "connect",
-    "rack"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/senchalabs/connect.git"
-  },
-  "author": {
-    "name": "TJ Holowaychuk",
-    "email": "tj@vision-media.ca",
-    "url": "http://tjholowaychuk.com"
-  },
-  "dependencies": {
-    "qs": "0.6.5",
-    "formidable": "1.0.14",
-    "cookie-signature": "1.0.1",
-    "buffer-crc32": "0.2.1",
-    "cookie": "0.1.0",
-    "send": "0.1.4",
-    "bytes": "0.2.0",
-    "fresh": "0.2.0",
-    "pause": "0.0.1",
-    "uid2": "0.0.2",
-    "debug": "*",
-    "methods": "0.0.1"
-  },
-  "devDependencies": {
-    "should": "*",
-    "mocha": "*",
-    "jade": "*",
-    "dox": "*"
-  },
-  "main": "index",
-  "engines": {
-    "node": ">= 0.8.0"
-  },
-  "scripts": {
-    "test": "make"
-  },
-  "readme": "[![build status](https://secure.travis-ci.org/senchalabs/connect.png)](http://travis-ci.org/senchalabs/connect)\n# Connect\n\n  Connect is an extensible HTTP server framework for [node](http://nodejs.org), providing high performance \"plugins\" known as _middleware_.\n\n Connect is bundled with over _20_ commonly used middleware, including\n a logger, session support, cookie parser, and [more](http://senchalabs.github.com/connect). Be sure to view the 2.x [documentation](http://senchalabs.github.com/connect/).\n\n```js\nvar connect = require('connect')\n  , http = require('http');\n\nvar app = connect()\n  .use(connect.favicon())\n  .use(connect.logger('dev'))\n  .use(connect.static('public'))\n  .use(connect.directory('public'))\n  .use(connect.cookieParser())\n  .use(connect.session({ secret: 'my secret here' }))\n  .use(function(req, res){\n    res.end('Hello from Connect!\\n');\n  });\n\nhttp.createServer(app).listen(3000);\n```\n\n## Middleware\n\n  - [csrf](http:/
 /www.senchalabs.org/connect/csrf.html)\n  - [basicAuth](http://www.senchalabs.org/connect/basicAuth.html)\n  - [bodyParser](http://www.senchalabs.org/connect/bodyParser.html)\n  - [json](http://www.senchalabs.org/connect/json.html)\n  - [multipart](http://www.senchalabs.org/connect/multipart.html)\n  - [urlencoded](http://www.senchalabs.org/connect/urlencoded.html)\n  - [cookieParser](http://www.senchalabs.org/connect/cookieParser.html)\n  - [directory](http://www.senchalabs.org/connect/directory.html)\n  - [compress](http://www.senchalabs.org/connect/compress.html)\n  - [errorHandler](http://www.senchalabs.org/connect/errorHandler.html)\n  - [favicon](http://www.senchalabs.org/connect/favicon.html)\n  - [limit](http://www.senchalabs.org/connect/limit.html)\n  - [logger](http://www.senchalabs.org/connect/logger.html)\n  - [methodOverride](http://www.senchalabs.org/connect/methodOverride.html)\n  - [query](http://www.senchalabs.org/connect/query.html)\n  - [responseTime](http://www.s
 enchalabs.org/connect/responseTime.html)\n  - [session](http://www.senchalabs.org/connect/session.html)\n  - [static](http://www.senchalabs.org/connect/static.html)\n  - [staticCache](http://www.senchalabs.org/connect/staticCache.html)\n  - [vhost](http://www.senchalabs.org/connect/vhost.html)\n  - [subdomains](http://www.senchalabs.org/connect/subdomains.html)\n  - [cookieSession](http://www.senchalabs.org/connect/cookieSession.html)\n\n## Running Tests\n\nfirst:\n\n    $ npm install -d\n\nthen:\n\n    $ make test\n\n## Authors\n\n Below is the output from [git-summary](http://github.com/visionmedia/git-extras).\n\n\n     project: connect\n     commits: 2033\n     active : 301 days\n     files  : 171\n     authors: \n      1414\tTj Holowaychuk          69.6%\n       298\tvisionmedia             14.7%\n       191\tTim Caswell             9.4%\n        51\tTJ Holowaychuk          2.5%\n        10\tRyan Olds               0.5%\n         8\tAstro                   0.4%\n         5\tNat
 han Rajlich          0.2%\n         5\tJakub NeÅ”etřil          0.2%\n         3\tDaniel Dickison         0.1%\n         3\tDavid Rio Deiros        0.1%\n         3\tAlexander Simmerl       0.1%\n         3\tAndreas Lind Petersen   0.1%\n         2\tAaron Heckmann          0.1%\n         2\tJacques Crocker         0.1%\n         2\tFabian Jakobs           0.1%\n         2\tBrian J Brennan         0.1%\n         2\tAdam Malcontenti-Wilson 0.1%\n         2\tGlen Mailer             0.1%\n         2\tJames Campos            0.1%\n         1\tTrent Mick              0.0%\n         1\tTroy Kruthoff           0.0%\n         1\tWei Zhu                 0.0%\n         1\tcomerc                  0.0%\n         1\tdarobin                 0.0%\n         1\tnateps                  0.0%\n         1\tMarco Sanson            0.0%\n         1\tArthur Taylor           0.0%\n         1\tAseem Kishore           0.0%\n         1\tBart Teeuwisse          0.0%\n         1\tCameron Howey           0.0%\n  
        1\tChad Weider             0.0%\n         1\tCraig Barnes            0.0%\n         1\tEran Hammer-Lahav       0.0%\n         1\tGregory McWhirter       0.0%\n         1\tGuillermo Rauch         0.0%\n         1\tJae Kwon                0.0%\n         1\tJakub Nesetril          0.0%\n         1\tJoshua Peek             0.0%\n         1\tJxck                    0.0%\n         1\tAJ ONeal                0.0%\n         1\tMichael Hemesath        0.0%\n         1\tMorten Siebuhr          0.0%\n         1\tSamori Gorse            0.0%\n         1\tTom Jensen              0.0%\n\n## Node Compatibility\n\n  Connect `< 1.x` is compatible with node 0.2.x\n\n\n  Connect `1.x` is compatible with node 0.4.x\n\n\n  Connect (_master_) `2.x` is compatible with node 0.6.x\n\n## CLA\n\n [http://sencha.com/cla](http://sencha.com/cla)\n\n## License\n\nView the [LICENSE](https://github.com/senchalabs/connect/blob/master/LICENSE) file. The [Silk](http://www.famfamfam.com/lab/icons/silk/) icons us
 ed by the `directory` middleware created by/copyright of [FAMFAMFAM](http://www.famfamfam.com/).\n",
-  "readmeFilename": "Readme.md",
-  "bugs": {
-    "url": "https://github.com/senchalabs/connect/issues"
-  },
-  "homepage": "https://github.com/senchalabs/connect",
-  "_id": "connect@2.8.5",
-  "dist": {
-    "shasum": "a219332423ac25d4711f81aad10ef6b7cf4659e9"
-  },
-  "_from": "connect@2.8.5",
-  "_resolved": "https://registry.npmjs.org/connect/-/connect-2.8.5.tgz"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie-signature/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie-signature/.npmignore b/web/demos/package/node_modules/express/node_modules/cookie-signature/.npmignore
deleted file mode 100644
index f1250e5..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie-signature/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-support
-test
-examples
-*.sock

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie-signature/History.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie-signature/History.md b/web/demos/package/node_modules/express/node_modules/cookie-signature/History.md
deleted file mode 100644
index 9e30179..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie-signature/History.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-1.0.1 / 2013-04-15 
-==================
-
-  * Revert "Changed underlying HMAC algo. to sha512."
-  * Revert "Fix for timing attacks on MAC verification."
-
-0.0.1 / 2010-01-03
-==================
-
-  * Initial release

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie-signature/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie-signature/Makefile b/web/demos/package/node_modules/express/node_modules/cookie-signature/Makefile
deleted file mode 100644
index 4e9c8d3..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie-signature/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-
-test:
-	@./node_modules/.bin/mocha \
-		--require should \
-		--reporter spec
-
-.PHONY: test
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie-signature/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie-signature/Readme.md b/web/demos/package/node_modules/express/node_modules/cookie-signature/Readme.md
deleted file mode 100644
index 2559e84..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie-signature/Readme.md
+++ /dev/null
@@ -1,42 +0,0 @@
-
-# cookie-signature
-
-  Sign and unsign cookies.
-
-## Example
-
-```js
-var cookie = require('cookie-signature');
-
-var val = cookie.sign('hello', 'tobiiscool');
-val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI');
-
-var val = cookie.sign('hello', 'tobiiscool');
-cookie.unsign(val, 'tobiiscool').should.equal('hello');
-cookie.unsign(val, 'luna').should.be.false;
-```
-
-## License 
-
-(The MIT License)
-
-Copyright (c) 2012 LearnBoost &lt;tj@learnboost.com&gt;
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie-signature/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie-signature/index.js b/web/demos/package/node_modules/express/node_modules/cookie-signature/index.js
deleted file mode 100644
index ed62814..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie-signature/index.js
+++ /dev/null
@@ -1,42 +0,0 @@
-
-/**
- * Module dependencies.
- */
-
-var crypto = require('crypto');
-
-/**
- * Sign the given `val` with `secret`.
- *
- * @param {String} val
- * @param {String} secret
- * @return {String}
- * @api private
- */
-
-exports.sign = function(val, secret){
-  if ('string' != typeof val) throw new TypeError('cookie required');
-  if ('string' != typeof secret) throw new TypeError('secret required');
-  return val + '.' + crypto
-    .createHmac('sha256', secret)
-    .update(val)
-    .digest('base64')
-    .replace(/\=+$/, '');
-};
-
-/**
- * Unsign and decode the given `val` with `secret`,
- * returning `false` if the signature is invalid.
- *
- * @param {String} val
- * @param {String} secret
- * @return {String|Boolean}
- * @api private
- */
-
-exports.unsign = function(val, secret){
-  if ('string' != typeof val) throw new TypeError('cookie required');
-  if ('string' != typeof secret) throw new TypeError('secret required');
-  var str = val.slice(0, val.lastIndexOf('.'));
-  return exports.sign(str, secret) == val ? str : false;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie-signature/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie-signature/package.json b/web/demos/package/node_modules/express/node_modules/cookie-signature/package.json
deleted file mode 100644
index 83bea32..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie-signature/package.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "name": "cookie-signature",
-  "version": "1.0.1",
-  "description": "Sign and unsign cookies",
-  "keywords": [
-    "cookie",
-    "sign",
-    "unsign"
-  ],
-  "author": {
-    "name": "TJ Holowaychuk",
-    "email": "tj@learnboost.com"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "mocha": "*",
-    "should": "*"
-  },
-  "main": "index",
-  "readme": "\n# cookie-signature\n\n  Sign and unsign cookies.\n\n## Example\n\n```js\nvar cookie = require('cookie-signature');\n\nvar val = cookie.sign('hello', 'tobiiscool');\nval.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI');\n\nvar val = cookie.sign('hello', 'tobiiscool');\ncookie.unsign(val, 'tobiiscool').should.equal('hello');\ncookie.unsign(val, 'luna').should.be.false;\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 LearnBoost &lt;tj@learnboost.com&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission not
 ice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
-  "readmeFilename": "Readme.md",
-  "_id": "cookie-signature@1.0.1",
-  "_from": "cookie-signature@1.0.1"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie/.npmignore b/web/demos/package/node_modules/express/node_modules/cookie/.npmignore
deleted file mode 100644
index 3c3629e..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie/.travis.yml b/web/demos/package/node_modules/express/node_modules/cookie/.travis.yml
deleted file mode 100644
index 9400c11..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
-    - "0.6"
-    - "0.8"
-    - "0.10"

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie/LICENSE b/web/demos/package/node_modules/express/node_modules/cookie/LICENSE
deleted file mode 100644
index 249d9de..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie/LICENSE
+++ /dev/null
@@ -1,9 +0,0 @@
-// MIT License
-
-Copyright (C) Roman Shtylman <sh...@gmail.com>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie/README.md b/web/demos/package/node_modules/express/node_modules/cookie/README.md
deleted file mode 100644
index 5187ed1..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie/README.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) #
-
-cookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.
-
-See [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies.
-
-## how?
-
-```
-npm install cookie
-```
-
-```javascript
-var cookie = require('cookie');
-
-var hdr = cookie.serialize('foo', 'bar');
-// hdr = 'foo=bar';
-
-var cookies = cookie.parse('foo=bar; cat=meow; dog=ruff');
-// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' };
-```
-
-## more
-
-The serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values.
-
-### path
-> cookie path
-
-### expires
-> absolute expiration date for the cookie (Date object)
-
-### maxAge
-> relative max age of the cookie from when the client receives it (seconds)
-
-### domain
-> domain for the cookie
-
-### secure
-> true or false
-
-### httpOnly
-> true or false
-



[12/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/db.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/db.js b/web/demos/package/node_modules/mongodb/lib/mongodb/db.js
deleted file mode 100644
index ebf7a03..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/db.js
+++ /dev/null
@@ -1,2086 +0,0 @@
-/**
- * Module dependencies.
- * @ignore
- */
-var QueryCommand = require('./commands/query_command').QueryCommand
-  , DbCommand = require('./commands/db_command').DbCommand
-  , MongoReply = require('./responses/mongo_reply').MongoReply
-  , Admin = require('./admin').Admin
-  , Collection = require('./collection').Collection
-  , Server = require('./connection/server').Server
-  , ReplSet = require('./connection/repl_set/repl_set').ReplSet
-  , ReadPreference = require('./connection/read_preference').ReadPreference
-  , Mongos = require('./connection/mongos').Mongos
-  , Cursor = require('./cursor').Cursor
-  , EventEmitter = require('events').EventEmitter
-  , inherits = require('util').inherits
-  , crypto = require('crypto')
-  , timers = require('timers')
-  , utils = require('./utils')
-  
-  // Authentication methods
-  , mongodb_cr_authenticate = require('./auth/mongodb_cr.js').authenticate
-  , mongodb_gssapi_authenticate = require('./auth/mongodb_gssapi.js').authenticate
-  , mongodb_sspi_authenticate = require('./auth/mongodb_sspi.js').authenticate
-  , mongodb_plain_authenticate = require('./auth/mongodb_plain.js').authenticate
-  , mongodb_x509_authenticate = require('./auth/mongodb_x509.js').authenticate;
-
-var hasKerberos = false;
-// Check if we have a the kerberos library
-try {
-  require('kerberos');
-  hasKerberos = true;
-} catch(err) {}
-
-// Set processor, setImmediate if 0.10 otherwise nextTick
-var processor = require('./utils').processor();
-
-/**
- * Create a new Db instance.
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowledgement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **readPreference** {String}, the preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *  - **native_parser** {Boolean, default:false}, use c++ bson parser.
- *  - **forceServerObjectId** {Boolean, default:false}, force server to create _id fields instead of client.
- *  - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation.
- *  - **serializeFunctions** {Boolean, default:false}, serialize functions.
- *  - **raw** {Boolean, default:false}, perform operations using raw bson buffers.
- *  - **recordQueryStats** {Boolean, default:false}, record query statistics during execution.
- *  - **retryMiliSeconds** {Number, default:5000}, number of milliseconds between retries.
- *  - **numberOfRetries** {Number, default:5}, number of retries off connection.
- *  - **logger** {Object, default:null}, an object representing a logger that you want to use, needs to support functions debug, log, error **({error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}})**.
- *  - **slaveOk** {Number, default:null}, force setting of SlaveOk flag on queries (only use when explicitly connecting to a secondary server).
- *  - **promoteLongs** {Boolean, default:true}, when deserializing a Long will fit it into a Number if it's smaller than 53 bits
- *  - **bufferMaxEntries** {Boolean, default: -1}, sets a cap on how many operations the driver will buffer up before giving up on getting a working connection, default is -1 which is unlimited
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @class Represents a Db
- * @param {String} databaseName name of the database.
- * @param {Object} serverConfig server config object.
- * @param {Object} [options] additional options for the collection.
- */
-function Db(databaseName, serverConfig, options) {
-  if(!(this instanceof Db)) return new Db(databaseName, serverConfig, options);
-  EventEmitter.call(this);
-  var self = this;
-  this.databaseName = databaseName;
-  this.serverConfig = serverConfig;
-  this.options = options == null ? {} : options;
-  // State to check against if the user force closed db
-  this._applicationClosed = false;
-  // Fetch the override flag if any
-  var overrideUsedFlag = this.options['override_used_flag'] == null ? false : this.options['override_used_flag'];
-
-  // Verify that nobody is using this config
-  if(!overrideUsedFlag && this.serverConfig != null && typeof this.serverConfig == 'object' && this.serverConfig._isUsed && this.serverConfig._isUsed()) {    
-    throw new Error('A Server or ReplSet instance cannot be shared across multiple Db instances');
-  } else if(!overrideUsedFlag && typeof this.serverConfig == 'object'){
-    // Set being used
-    this.serverConfig._used = true;
-  }
-
-  // Allow slaveOk override
-  this.slaveOk = this.options['slave_ok'] == null ? false : this.options['slave_ok'];
-  this.slaveOk = this.options['slaveOk'] == null ? this.slaveOk : this.options['slaveOk'];
-  
-  // Number of operations to buffer before failure
-  this.bufferMaxEntries = typeof this.options['bufferMaxEntries'] == 'number' ? this.options['bufferMaxEntries'] : -1;
-
-  // Ensure we have a valid db name
-  validateDatabaseName(databaseName);
-
-  // Contains all the connections for the db
-  try {
-    this.native_parser = this.options.native_parser;
-    // The bson lib
-    var bsonLib = this.bsonLib = this.options.native_parser ? require('bson').BSONNative : require('bson').BSONPure;
-    // Fetch the serializer object
-    var BSON = bsonLib.BSON;
-    
-    // Create a new instance
-    this.bson = new BSON([bsonLib.Long, bsonLib.ObjectID, bsonLib.Binary, bsonLib.Code, bsonLib.DBRef, bsonLib.Symbol, bsonLib.Double, bsonLib.Timestamp, bsonLib.MaxKey, bsonLib.MinKey]);
-    this.bson.promoteLongs = this.options.promoteLongs == null ? true : this.options.promoteLongs;
-    
-    // Backward compatibility to access types
-    this.bson_deserializer = bsonLib;
-    this.bson_serializer = bsonLib;
-    
-    // Add any overrides to the serializer and deserializer
-    this.bson_deserializer.promoteLongs = this.options.promoteLongs == null ? true : this.options.promoteLongs;
-  } catch (err) {
-    // If we tried to instantiate the native driver
-    var msg = 'Native bson parser not compiled, please compile '
-            + 'or avoid using native_parser=true';
-    throw Error(msg);
-  }
-
-  // Internal state of the server
-  this._state = 'disconnected';
-
-  this.pkFactory = this.options.pk == null ? bsonLib.ObjectID : this.options.pk;
-  this.forceServerObjectId = this.options.forceServerObjectId != null ? this.options.forceServerObjectId : false;
-
-  // Added safe
-  this.safe = this.options.safe == null ? false : this.options.safe;  
-
-  // If we have not specified a "safe mode" we just print a warning to the console
-  if(this.options.safe == null && this.options.w == null && this.options.journal == null && this.options.fsync == null) {
-    console.log("========================================================================================");
-    console.log("=  Please ensure that you set the default write concern for the database by setting    =");
-    console.log("=   one of the options                                                                 =");
-    console.log("=                                                                                      =");
-    console.log("=     w: (value of > -1 or the string 'majority'), where < 1 means                     =");
-    console.log("=        no write acknowledgement                                                       =");
-    console.log("=     journal: true/false, wait for flush to journal before acknowledgement             =");
-    console.log("=     fsync: true/false, wait for flush to file system before acknowledgement           =");
-    console.log("=                                                                                      =");
-    console.log("=  For backward compatibility safe is still supported and                              =");
-    console.log("=   allows values of [true | false | {j:true} | {w:n, wtimeout:n} | {fsync:true}]      =");
-    console.log("=   the default value is false which means the driver receives does not                =");
-    console.log("=   return the information of the success/error of the insert/update/remove            =");
-    console.log("=                                                                                      =");
-    console.log("=   ex: new Db(new Server('localhost', 27017), {safe:false})                           =");
-    console.log("=                                                                                      =");
-    console.log("=   http://www.mongodb.org/display/DOCS/getLastError+Command                           =");
-    console.log("=                                                                                      =");
-    console.log("=  The default of no acknowledgement will change in the very near future                =");
-    console.log("=                                                                                      =");
-    console.log("=  This message will disappear when the default safe is set on the driver Db           =");
-    console.log("========================================================================================");
-  }
-
-  // Internal states variables
-  this.notReplied ={};
-  this.isInitializing = true;
-  this.openCalled = false;
-
-  // Command queue, keeps a list of incoming commands that need to be executed once the connection is up
-  this.commands = [];
-
-  // Set up logger
-  this.logger = this.options.logger != null
-    && (typeof this.options.logger.debug == 'function')
-    && (typeof this.options.logger.error == 'function')
-    && (typeof this.options.logger.log == 'function')
-      ? this.options.logger : {error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}};
-
-  // Associate the logger with the server config
-  this.serverConfig.logger = this.logger;
-  if(this.serverConfig.strategyInstance) this.serverConfig.strategyInstance.logger = this.logger;
-  this.tag = new Date().getTime();
-  // Just keeps list of events we allow
-  this.eventHandlers = {error:[], parseError:[], poolReady:[], message:[], close:[]};
-
-  // Controls serialization options
-  this.serializeFunctions = this.options.serializeFunctions != null ? this.options.serializeFunctions : false;
-
-  // Raw mode
-  this.raw = this.options.raw != null ? this.options.raw : false;
-
-  // Record query stats
-  this.recordQueryStats = this.options.recordQueryStats != null ? this.options.recordQueryStats : false;
-
-  // If we have server stats let's make sure the driver objects have it enabled
-  if(this.recordQueryStats == true) {
-    this.serverConfig.enableRecordQueryStats(true);
-  }
-
-  // Retry information
-  this.retryMiliSeconds = this.options.retryMiliSeconds != null ? this.options.retryMiliSeconds : 1000;
-  this.numberOfRetries = this.options.numberOfRetries != null ? this.options.numberOfRetries : 60;
-
-  // Set default read preference if any
-  this.readPreference = this.options.readPreference;
-
-  // Set read preference on serverConfig if none is set
-  // but the db one was
-  if(this.serverConfig.options.readPreference == null
-    && this.readPreference != null) {
-      this.serverConfig.setReadPreference(this.readPreference);
-  }
-
-  // Ensure we keep a reference to this db
-  this.serverConfig._dbStore.add(this);
-};
-
-/**
- * @ignore
- */
-function validateDatabaseName(databaseName) {
-  if(typeof databaseName !== 'string') throw new Error("database name must be a string");
-  if(databaseName.length === 0) throw new Error("database name cannot be the empty string");
-  if(databaseName == '$external') return;
-
-  var invalidChars = [" ", ".", "$", "/", "\\"];
-  for(var i = 0; i < invalidChars.length; i++) {
-    if(databaseName.indexOf(invalidChars[i]) != -1) throw new Error("database names cannot contain the character '" + invalidChars[i] + "'");
-  }
-}
-
-/**
- * @ignore
- */
-inherits(Db, EventEmitter);
-
-/**
- * Initialize the database connection.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the index information or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.open = function(callback) {
-  var self = this;
-
-  // Check that the user has not called this twice
-  if(this.openCalled) {
-    // Close db
-    this.close();
-    // Throw error
-    throw new Error("db object already connecting, open cannot be called multiple times");
-  }
-
-  // If we have a specified read preference
-  if(this.readPreference != null) this.serverConfig.setReadPreference(this.readPreference);
-
-  // Set that db has been opened
-  this.openCalled = true;
-
-  // Set the status of the server
-  self._state = 'connecting';
-  
-  // Set up connections
-  if(self.serverConfig instanceof Server || self.serverConfig instanceof ReplSet || self.serverConfig instanceof Mongos) {
-    // Ensure we have the original options passed in for the server config
-    var connect_options = {};
-    for(var name in self.serverConfig.options) {
-      connect_options[name] = self.serverConfig.options[name]
-    }
-    connect_options.firstCall = true;
-
-    // Attempt to connect
-    self.serverConfig.connect(self, connect_options, function(err, result) {
-      if(err != null) {
-        // Close db to reset connection
-        return self.close(function () {
-          // Return error from connection
-          return callback(err, null);
-        });
-      }
-      // Set the status of the server
-      self._state = 'connected';
-      // If we have queued up commands execute a command to trigger replays
-      if(self.commands.length > 0) _execute_queued_command(self);
-      // Callback
-      process.nextTick(function() {
-        try {
-          callback(null, self);
-        } catch(err) {
-          self.close();
-          throw err;
-        }
-      });
-    });
-  } else {
-    try {
-      callback(Error("Server parameter must be of type Server, ReplSet or Mongos"), null);
-    } catch(err) {
-      self.close();
-      throw err;
-    }
-  }
-};
-
-/**
- * Create a new Db instance sharing the current socket connections.
- *
- * @param {String} dbName the name of the database we want to use.
- * @return {Db} a db instance using the new database.
- * @api public
- */
-Db.prototype.db = function(dbName) {
-  // Copy the options and add out internal override of the not shared flag
-  var options = {};
-  for(var key in this.options) {
-    options[key] = this.options[key];
-  }
-
-  // Add override flag
-  options['override_used_flag'] = true;
-  // Check if the db already exists and reuse if it's the case
-  var db = this.serverConfig._dbStore.fetch(dbName);
-
-  // Create a new instance
-  if(!db) {
-    db = new Db(dbName, this.serverConfig, options);
-  }
-
-  // Return the db object
-  return db;  
-};
-
-/**
- * Close the current db connection, including all the child db instances. Emits close event if no callback is provided.
- *
- * @param {Boolean} [forceClose] connection can never be reused.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.close = function(forceClose, callback) {
-  var self = this;
-  // Ensure we force close all connections
-  this._applicationClosed = false;
-
-  if(typeof forceClose == 'function') {
-    callback = forceClose;
-  } else if(typeof forceClose == 'boolean') {
-    this._applicationClosed = forceClose;
-  }
-
-  this.serverConfig.close(function(err, result) {
-    // You can reuse the db as everything is shut down
-    self.openCalled = false;
-    // If we have a callback call it
-    if(callback) callback(err, result);    
-  });
-};
-
-/**
- * Access the Admin database
- *
- * @param {Function} [callback] returns the results.
- * @return {Admin} the admin db object.
- * @api public
- */
-Db.prototype.admin = function(callback) {
-  if(callback == null) return new Admin(this);
-  callback(null, new Admin(this));
-};
-
-/**
- * Returns a cursor to all the collection information.
- *
- * @param {String} [collectionName] the collection name we wish to retrieve the information from.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the options or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.collectionsInfo = function(collectionName, callback) {
-  if(callback == null && typeof collectionName == 'function') { callback = collectionName; collectionName = null; }
-  // Create selector
-  var selector = {};
-  // If we are limiting the access to a specific collection name
-  if(collectionName != null) selector.name = this.databaseName + "." + collectionName;
-
-  // Return Cursor
-  // callback for backward compatibility
-  if(callback) {
-    callback(null, new Cursor(this, new Collection(this, DbCommand.SYSTEM_NAMESPACE_COLLECTION), selector));
-  } else {
-    return new Cursor(this, new Collection(this, DbCommand.SYSTEM_NAMESPACE_COLLECTION), selector);
-  }
-};
-
-/**
- * Get the list of all collection names for the specified db
- *
- * Options
- *  - **namesOnly** {String, default:false}, Return only the full collection namespace.
- *
- * @param {String} [collectionName] the collection name we wish to filter by.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the collection names or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.collectionNames = function(collectionName, options, callback) {
-  var self = this;
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  collectionName = args.length ? args.shift() : null;
-  options = args.length ? args.shift() || {} : {};
-
-  // Ensure no breaking behavior
-  if(collectionName != null && typeof collectionName == 'object') {
-    options = collectionName;
-    collectionName = null;
-  }
-
-  // Let's make our own callback to reuse the existing collections info method
-  self.collectionsInfo(collectionName, function(err, cursor) {
-    if(err != null) return callback(err, null);
-
-    cursor.toArray(function(err, documents) {
-      if(err != null) return callback(err, null);
-
-      // List of result documents that have been filtered
-      var filtered_documents = documents.filter(function(document) {
-        return !(document.name.indexOf(self.databaseName) == -1 || document.name.indexOf('$') != -1);
-      });
-
-      // If we are returning only the names
-      if(options.namesOnly) {
-        filtered_documents = filtered_documents.map(function(document) { return document.name });
-      }
-
-      // Return filtered items
-      callback(null, filtered_documents);
-    });
-  });
-};
-
-/**
- * Fetch a specific collection (containing the actual collection information). If the application does not use strict mode you can
- * can use it without a callback in the following way. var collection = db.collection('mycollection');
- *
- * Options
-*  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowledgement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **serializeFunctions** {Boolean, default:false}, serialize functions on the document.
- *  - **raw** {Boolean, default:false}, perform all operations using raw bson objects.
- *  - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation.
- *  - **readPreference** {String}, the preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *  - **strict**, (Boolean, default:false) returns an error if the collection does not exist
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {String} collectionName the collection name we wish to access.
- * @param {Object} [options] returns option results.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the collection or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.collection = function(collectionName, options, callback) {
-  var self = this;
-  if(typeof options === "function") { callback = options; options = {}; }
-  // Execute safe
-
-  if(options && (options.strict)) {
-    self.collectionNames(collectionName, function(err, collections) {
-      if(err != null) return callback(err, null);
-
-      if(collections.length == 0) {
-        return callback(new Error("Collection " + collectionName + " does not exist. Currently in safe mode."), null);
-      } else {
-        try {
-          var collection = new Collection(self, collectionName, self.pkFactory, options);
-        } catch(err) {
-          return callback(err, null);
-        }
-        return callback(null, collection);
-      }
-    });
-  } else {
-    try {
-      var collection = new Collection(self, collectionName, self.pkFactory, options);
-    } catch(err) {
-      if(callback == null) {
-        throw err;
-      } else {
-        return callback(err, null);
-      }
-    }
-
-    // If we have no callback return collection object
-    return callback == null ? collection : callback(null, collection);
-  }
-};
-
-/**
- * Fetch all collections for the current db.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the collections or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.collections = function(callback) {
-  var self = this;
-  // Let's get the collection names
-  self.collectionNames(function(err, documents) {
-    if(err != null) return callback(err, null);
-    var collections = [];
-    documents.forEach(function(document) {
-      collections.push(new Collection(self, document.name.replace(self.databaseName + ".", ''), self.pkFactory));
-    });
-    // Return the collection objects
-    callback(null, collections);
-  });
-};
-
-/**
- * Evaluate javascript on the server
- *
- * Options
- *  - **nolock** {Boolean, default:false}, Tell MongoDB not to block on the evaulation of the javascript.
- *
- * @param {Code} code javascript to execute on server.
- * @param {Object|Array} [parameters] the parameters for the call.
- * @param {Object} [options] the options
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from eval or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.eval = function(code, parameters, options, callback) {
-  // Unpack calls
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = args.pop();
-  parameters = args.length ? args.shift() : parameters;
-  options = args.length ? args.shift() || {} : {};
-
-  var finalCode = code;
-  var finalParameters = [];
-  // If not a code object translate to one
-  if(!(finalCode instanceof this.bsonLib.Code)) {
-    finalCode = new this.bsonLib.Code(finalCode);
-  }
-
-  // Ensure the parameters are correct
-  if(parameters != null && parameters.constructor != Array && typeof parameters !== 'function') {
-    finalParameters = [parameters];
-  } else if(parameters != null && parameters.constructor == Array && typeof parameters !== 'function') {
-    finalParameters = parameters;
-  }
-
-  // Create execution selector
-  var selector = {'$eval':finalCode, 'args':finalParameters};
-  // Check if the nolock parameter is passed in
-  if(options['nolock']) {
-    selector['nolock'] = options['nolock'];
-  }
-
-  // Set primary read preference
-  options.readPreference = ReadPreference.PRIMARY;
-
-  // Execute the eval
-  this.collection(DbCommand.SYSTEM_COMMAND_COLLECTION).findOne(selector, options, function(err, result) {
-    if(err) return callback(err);
-
-    if(result && result.ok == 1) {
-      callback(null, result.retval);
-    } else if(result) {
-      callback(new Error("eval failed: " + result.errmsg), null); return;
-    } else {
-      callback(err, result);
-    }
-  });
-};
-
-/**
- * Dereference a dbref, against a db
- *
- * @param {DBRef} dbRef db reference object we wish to resolve.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from dereference or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.dereference = function(dbRef, callback) {
-  var db = this;
-  // If we have a db reference then let's get the db first
-  if(dbRef.db != null) db = this.db(dbRef.db);
-  // Fetch the collection and find the reference
-  var collection = db.collection(dbRef.namespace);
-  collection.findOne({'_id':dbRef.oid}, function(err, result) {
-    callback(err, result);
-  });
-};
-
-/**
- * Logout user from server, fire off on all connections and remove all auth info
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from logout or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.logout = function(options, callback) {
-  var self = this;
-  // Unpack calls
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  options = args.length ? args.shift() || {} : {};
-
-  // Number of connections we need to logout from
-  var numberOfConnections = this.serverConfig.allRawConnections().length;
-
-  // Let's generate the logout command object
-  var logoutCommand = DbCommand.logoutCommand(self, {logout:1}, options);
-  self._executeQueryCommand(logoutCommand, {onAll:true}, function(err, result) {
-    // Count down
-    numberOfConnections = numberOfConnections - 1;
-    // Work around the case where the number of connections are 0
-    if(numberOfConnections <= 0 && typeof callback == 'function') {
-      var internalCallback = callback;
-      callback = null;
-
-      // Remove the db from auths
-      self.serverConfig.auth.remove(self.databaseName);
-
-      // Handle error result
-      utils.handleSingleCommandResultReturn(true, false, internalCallback)(err, result);
-    }
-  });
-};
-
-/**
- * Authenticate a user against the server.
- * authMechanism
- * Options
- *  - **authMechanism** {String, default:MONGODB-CR}, The authentication mechanism to use, GSSAPI or MONGODB-CR
- *
- * @param {String} username username.
- * @param {String} password password.
- * @param {Object} [options] the options
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from authentication or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.authenticate = function(username, password, options, callback) {
-  var self = this;
-
-  if(typeof options == 'function') {
-    callback = options;
-    options = {};
-  }
-
-  // Set default mechanism
-  if(!options.authMechanism) {
-    options.authMechanism = 'MONGODB-CR';
-  } else if(options.authMechanism != 'GSSAPI' 
-    && options.authMechanism != 'MONGODB-CR'
-    && options.authMechanism != 'MONGODB-X509'
-    && options.authMechanism != 'PLAIN') {
-      return callback(new Error("only GSSAPI, PLAIN, MONGODB-X509 or MONGODB-CR is supported by authMechanism"));
-  }
-
-  // the default db to authenticate against is 'this'
-  // if authententicate is called from a retry context, it may be another one, like admin
-  var authdb = options.authdb ? options.authdb : self.databaseName;
-  authdb = options.authSource ? options.authSource : authdb;
-
-  // Callback
-  var _callback = function(err, result) {
-    if(self.listeners("authenticated").length > 9) {
-      self.emit("authenticated", err, result);
-    }
-
-    // Return to caller
-    callback(err, result);
-  }
-
-  // If classic auth delegate to auth command
-  if(options.authMechanism == 'MONGODB-CR') {
-    mongodb_cr_authenticate(self, username, password, authdb, options, _callback);
-  } else if(options.authMechanism == 'PLAIN') {
-    mongodb_plain_authenticate(self, username, password, options, _callback);
-  } else if(options.authMechanism == 'MONGODB-X509') {
-    mongodb_x509_authenticate(self, username, password, options, _callback);
-  } else if(options.authMechanism == 'GSSAPI') {
-    //
-    // Kerberos library is not installed, throw and error
-    if(hasKerberos == false) {
-      console.log("========================================================================================");
-      console.log("=  Please make sure that you install the Kerberos library to use GSSAPI                =");
-      console.log("=                                                                                      =");
-      console.log("=  npm install -g kerberos                                                             =");
-      console.log("=                                                                                      =");
-      console.log("=  The Kerberos package is not installed by default for simplicities sake              =");
-      console.log("=  and needs to be global install                                                      =");
-      console.log("========================================================================================");
-      throw new Error("Kerberos library not installed");
-    }
-
-    if(process.platform == 'win32') {
-      mongodb_sspi_authenticate(self, username, password, authdb, options, _callback);
-    } else {
-      // We have the kerberos library, execute auth process
-      mongodb_gssapi_authenticate(self, username, password, authdb, options, _callback);      
-    }
-  }
-};
-
-/**
- * Add a user to the database.
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowledgement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **customData**, (Object, default:{}) custom data associated with the user (only Mongodb 2.6 or higher)
- *  - **roles**, (Array, default:[]) roles associated with the created user (only Mongodb 2.6 or higher)
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {String} username username.
- * @param {String} password password.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from addUser or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.addUser = function(username, password, options, callback) {
-  // Checkout a write connection to get the server capabilities
-  var connection = this.serverConfig.checkoutWriter();
-  if(connection != null && connection.serverCapabilities != null && connection.serverCapabilities.hasAuthCommands) {
-    return _executeAuthCreateUserCommand(this, username, password, options, callback);
-  }
-
-  // Unpack the parameters
-  var self = this;
-  var args = Array.prototype.slice.call(arguments, 2);
-  callback = args.pop();
-  options = args.length ? args.shift() || {} : {};
-
-  // Get the error options
-  var errorOptions = _getWriteConcern(this, options);
-  errorOptions.w = errorOptions.w == null ? 1 : errorOptions.w;
-  // Use node md5 generator
-  var md5 = crypto.createHash('md5');
-  // Generate keys used for authentication
-  md5.update(username + ":mongo:" + password);
-  var userPassword = md5.digest('hex');
-  // Fetch a user collection
-  var collection = this.collection(DbCommand.SYSTEM_USER_COLLECTION);
-  // Check if we are inserting the first user
-  collection.count({}, function(err, count) {
-    // We got an error (f.ex not authorized)
-    if(err != null) return callback(err, null);
-    // Check if the user exists and update i
-    collection.find({user: username}, {dbName: options['dbName']}).toArray(function(err, documents) {
-      // We got an error (f.ex not authorized)
-      if(err != null) return callback(err, null);
-      // Add command keys
-      var commandOptions = errorOptions;
-      commandOptions.dbName = options['dbName'];
-      commandOptions.upsert = true;
-
-      // We have a user, let's update the password or upsert if not
-      collection.update({user: username},{$set: {user: username, pwd: userPassword}}, commandOptions, function(err, results, full) {
-        if(count == 0 && err) {
-          callback(null, [{user:username, pwd:userPassword}]);
-        } else if(err) {
-          callback(err, null)
-        } else {
-          callback(null, [{user:username, pwd:userPassword}]);
-        }
-      });
-    });
-  });
-};
-
-/**
- * @ignore
- */
-var _executeAuthCreateUserCommand = function(self, username, password, options, callback) {
-  // Special case where there is no password ($external users)
-  if(typeof username == 'string' 
-    && password != null && typeof password == 'object') {
-    callback = options;
-    options = password;
-    password = null;
-  }
-
-  // Unpack all options
-  if(typeof options == 'function') {
-    callback = options;
-    options = {};
-  }  
-
-  // Error out if we digestPassword set
-  if(options.digestPassword != null) {
-    throw utils.toError("The digestPassword option is not supported via add_user. Please use db.command('createUser', ...) instead for this option.");
-  }
-
-  // Get additional values
-  var customData = options.customData != null ? options.customData : {};
-  var roles = Array.isArray(options.roles) ? options.roles : [];
-  var maxTimeMS = typeof options.maxTimeMS == 'number' ? options.maxTimeMS : null;
-
-  // If not roles defined print deprecated message
-  if(roles.length == 0) {
-    console.log("Creating a user without roles is deprecated in MongoDB >= 2.6");
-  }
-
-  // Get the error options
-  var writeConcern = _getWriteConcern(self, options);
-  var commandOptions = {writeCommand:true};
-  if(options['dbName']) commandOptions.dbName = options['dbName'];
-
-  // Add maxTimeMS to options if set
-  if(maxTimeMS != null) commandOptions.maxTimeMS = maxTimeMS;
-
-  // Check the db name and add roles if needed
-  if((self.databaseName.toLowerCase() == 'admin' || options.dbName == 'admin') && !Array.isArray(options.roles)) {
-    roles = ['root']
-  } else if(!Array.isArray(options.roles)) {
-    roles = ['dbOwner']
-  }
-
-  // Build the command to execute
-  var command = {
-      createUser: username
-    , customData: customData
-    , roles: roles
-    , digestPassword:false
-    , writeConcern: writeConcern
-  }
-
-  // Use node md5 generator
-  var md5 = crypto.createHash('md5');
-  // Generate keys used for authentication
-  md5.update(username + ":mongo:" + password);
-  var userPassword = md5.digest('hex');
-
-  // No password
-  if(typeof password == 'string') {
-    command.pwd = userPassword;
-  }
-
-  // console.log("================================== add user")
-  // console.dir(command)
-
-  // Execute the command
-  self.command(command, commandOptions, function(err, result) {
-    if(err) return callback(err, null);
-    callback(!result.ok ? utils.toError("Failed to add user " + username) : null
-      , result.ok ? [{user: username, pwd: ''}] : null);
-  })
-}
-
-/**
- * Remove a user from a database
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowledgement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {String} username username.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from removeUser or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.removeUser = function(username, options, callback) {
-  // Checkout a write connection to get the server capabilities
-  var connection = this.serverConfig.checkoutWriter();
-  if(connection != null && connection.serverCapabilities != null && connection.serverCapabilities.hasAuthCommands) {
-    return _executeAuthRemoveUserCommand(this, username, options, callback);
-  }
-
-  // Unpack the parameters
-  var self = this;
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = args.pop();
-  options = args.length ? args.shift() || {} : {};
-
-  // Figure out the safe mode settings
-  var safe = self.safe != null && self.safe == false ? {w: 1} : self.safe;
-  // Override with options passed in if applicable
-  safe = options != null && options['safe'] != null ? options['safe'] : safe;
-  // Ensure it's at least set to safe
-  safe = safe == null ? {w: 1} : safe;
-
-  // Fetch a user collection
-  var collection = this.collection(DbCommand.SYSTEM_USER_COLLECTION);
-  collection.findOne({user: username}, {dbName: options['dbName']}, function(err, user) {
-    if(user != null) {
-      // Add command keys
-      var commandOptions = safe;
-      commandOptions.dbName = options['dbName'];
-
-      collection.remove({user: username}, commandOptions, function(err, result) {
-        callback(err, true);
-      });
-    } else {
-      callback(err, false);
-    }
-  });
-};
-
-var _executeAuthRemoveUserCommand = function(self, username, options, callback) {
-  // Unpack all options
-  if(typeof options == 'function') {
-    callback = options;
-    options = {};
-  }
-
-  // Get the error options
-  var writeConcern = _getWriteConcern(self, options);
-  var commandOptions = {writeCommand:true};
-  if(options['dbName']) commandOptions.dbName = options['dbName'];
-
-  // Get additional values
-  var maxTimeMS = typeof options.maxTimeMS == 'number' ? options.maxTimeMS : null;
-
-  // Add maxTimeMS to options if set
-  if(maxTimeMS != null) commandOptions.maxTimeMS = maxTimeMS;
-
-  // Build the command to execute
-  var command = {
-      dropUser: username
-    , writeConcern: writeConcern
-  }
-
-  // Execute the command
-  self.command(command, commandOptions, function(err, result) {
-    if(err) return callback(err, null);
-    callback(null, result.ok ? true : false);
-  })
-}
-
-/**
- * Creates a collection on a server pre-allocating space, need to create f.ex capped collections.
- *
- * Options
-*  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowledgement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **serializeFunctions** {Boolean, default:false}, serialize functions on the document.
- *  - **raw** {Boolean, default:false}, perform all operations using raw bson objects.
- *  - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation.
- *  - **capped** {Boolean, default:false}, create a capped collection.
- *  - **size** {Number}, the size of the capped collection in bytes.
- *  - **max** {Number}, the maximum number of documents in the capped collection.
- *  - **autoIndexId** {Boolean, default:true}, create an index on the _id field of the document, True by default on MongoDB 2.2 or higher off for version < 2.2.
- *  - **readPreference** {String}, the preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *  - **strict**, (Boolean, default:false) throws an error if collection already exists
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {String} collectionName the collection name we wish to access.
- * @param {Object} [options] returns option results.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from createCollection or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.createCollection = function(collectionName, options, callback) {
-  var self = this;
-  if(typeof options == 'function') {
-    callback = options;
-    options = {};
-  }
-
-  // Figure out the safe mode settings
-  var safe = self.safe != null && self.safe == false ? {w: 1} : self.safe;
-  // Override with options passed in if applicable
-  safe = options != null && options['safe'] != null ? options['safe'] : safe;
-  // Ensure it's at least set to safe
-  safe = safe == null ? {w: 1} : safe;
-
-  // Check if we have the name
-  this.collectionNames(collectionName, function(err, collections) {
-    if(err != null) return callback(err, null);
-
-    var found = false;
-    collections.forEach(function(collection) {
-      if(collection.name == self.databaseName + "." + collectionName) found = true;
-    });
-
-    // If the collection exists either throw an exception (if db in safe mode) or return the existing collection
-    if(found && options && options.strict) {
-      return callback(new Error("Collection " + collectionName + " already exists. Currently in safe mode."), null);
-    } else if(found){
-      try {
-        var collection = new Collection(self, collectionName, self.pkFactory, options);
-      } catch(err) {
-        return callback(err, null);
-      }
-      return callback(null, collection);
-    }
-
-    // Create a new collection and return it
-    self._executeQueryCommand(DbCommand.createCreateCollectionCommand(self, collectionName, options)
-      , {read:false, safe:safe}
-      , utils.handleSingleCommandResultReturn(null, null, function(err, result) {
-        if(err) return callback(err, null);
-        // Create collection and return
-        try {
-          return callback(null, new Collection(self, collectionName, self.pkFactory, options));
-        } catch(err) {
-          return callback(err, null);
-        }
-      }));
-  });
-};
-
-var _getReadConcern = function(self, options) {
-  if(options.readPreference) return options.readPreference;
-  if(self.readPreference) return self.readPreference;
-  return 'primary';
-}
-
-/**
- * Execute a command hash against MongoDB. This lets you acess any commands not available through the api on the server.
- *
- * Options
- *  - **maxTimeMS** {Number}, number of miliseconds to wait before aborting the query.
- *  - **ignoreCommandFilter** {Boolean}, overrides the default redirection of certain commands to primary.
- *  - **writeCommand** {Boolean, default: false}, signals this is a write command and to ignore read preferences
- *  - **checkKeys** {Boolean, default: false}, overrides the default not to check the key names for the command
- *
- * @param {Object} selector the command hash to send to the server, ex: {ping:1}.
- * @param {Object} [options] additional options for the command.
- * @param {Function} callback this will be called after executing this method. The command always return the whole result of the command as the second parameter.
- * @return {null}
- * @api public
- */
-Db.prototype.command = function(selector, options, callback) {
-  if(typeof options == 'function') {
-    callback = options;
-    options = {};
-  }
-
-  // Ignore command preference (I know what I'm doing)
-  var ignoreCommandFilter = options.ignoreCommandFilter ? options.ignoreCommandFilter : false;
-  // Set read preference if we set one
-  var readPreference = _getReadConcern(this, options);
-
-  // Ensure only commands who support read Prefrences are exeuted otherwise override and use Primary
-  if(readPreference != false && ignoreCommandFilter == false) {
-    if(selector['group'] || selector['aggregate'] || selector['collStats'] || selector['dbStats']
-      || selector['count'] || selector['distinct'] || selector['geoNear'] || selector['geoSearch'] 
-      || selector['geoWalk'] || selector['text']
-      || (selector['mapreduce'] && (selector.out == 'inline' || selector.out.inline))) {
-      // Set the read preference
-      options.readPreference = readPreference;
-    } else {
-      options.readPreference = ReadPreference.PRIMARY;
-    }
-  } else if(readPreference != false) {
-    options.readPreference = readPreference;
-  }
-
-  // Add the maxTimeMS option to the command if specified
-  if(typeof options.maxTimeMS == 'number') {
-    selector.maxTimeMS = options.maxTimeMS    
-  }
-
-  // Command options
-  var command_options = {};
-
-  // Do we have an override for checkKeys
-  if(typeof options['checkKeys'] == 'boolean') command_options['checkKeys'] = options['checkKeys'];
-  command_options['checkKeys'] = typeof options['checkKeys'] == 'boolean' ? options['checkKeys'] : false;
-  if(typeof options['serializeFunctions'] == 'boolean') command_options['serializeFunctions'] = options['serializeFunctions'];
-  if(options['dbName']) command_options['dbName'] = options['dbName'];
-
-  // If we have a write command, remove readPreference as an option
-  if((options.writeCommand 
-    || selector['findAndModify'] 
-    || selector['insert'] || selector['update'] || selector['delete']
-    || selector['createUser'] || selector['updateUser'] || selector['removeUser'])
-    && options.readPreference) {
-    delete options['readPreference'];
-  }
-
-  // Execute a query command
-  this._executeQueryCommand(DbCommand.createDbSlaveOkCommand(this, selector, command_options), options, function(err, results) {
-    if(err) return callback(err, null);
-    if(results.documents[0].errmsg) 
-      return callback(utils.toError(results.documents[0]), null);
-    callback(null, results.documents[0]);
-  });
-};
-
-/**
- * Drop a collection from the database, removing it permanently. New accesses will create a new collection.
- *
- * @param {String} collectionName the name of the collection we wish to drop.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from dropCollection or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.dropCollection = function(collectionName, callback) {
-  var self = this;
-  callback || (callback = function(){});
-
-  // Drop the collection
-  this._executeQueryCommand(DbCommand.createDropCollectionCommand(this, collectionName)
-    , utils.handleSingleCommandResultReturn(true, false, callback)
-  );
-};
-
-/**
- * Rename a collection.
- * 
- * Options
- *  - **dropTarget** {Boolean, default:false}, drop the target name collection if it previously exists.
- *
- * @param {String} fromCollection the name of the current collection we wish to rename.
- * @param {String} toCollection the new name of the collection.
- * @param {Object} [options] returns option results.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from renameCollection or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.renameCollection = function(fromCollection, toCollection, options, callback) {
-  var self = this;
-
-  if(typeof options == 'function') {
-    callback = options;
-    options = {}
-  }
-
-  // Add return new collection
-  options.new_collection = true;
-
-  // Execute using the collection method
-  this.collection(fromCollection).rename(toCollection, options, callback);
-};
-
-/**
- * Return last error message for the given connection, note options can be combined.
- *
- * Options
- *  - **fsync** {Boolean, default:false}, option forces the database to fsync all files before returning.
- *  - **j** {Boolean, default:false}, awaits the journal commit before returning, > MongoDB 2.0.
- *  - **w** {Number}, until a write operation has been replicated to N servers.
- *  - **wtimeout** {Number}, number of miliseconds to wait before timing out.
- *
- * Connection Options
- *  - **connection** {Connection}, fire the getLastError down a specific connection.
- *
- * @param {Object} [options] returns option results.
- * @param {Object} [connectionOptions] returns option results.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from lastError or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.lastError = function(options, connectionOptions, callback) {
-  // Unpack calls
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  options = args.length ? args.shift() || {} : {};
-  connectionOptions = args.length ? args.shift() || {} : {};
-
-  this._executeQueryCommand(DbCommand.createGetLastErrorCommand(options, this), connectionOptions, function(err, error) {
-    callback(err, error && error.documents);
-  });
-};
-
-/**
- * Legacy method calls.
- *
- * @ignore
- * @api private
- */
-Db.prototype.error = Db.prototype.lastError;
-Db.prototype.lastStatus = Db.prototype.lastError;
-
-/**
- * Return all errors up to the last time db reset_error_history was called.
- *
- * Options
- *  - **connection** {Connection}, fire the getLastError down a specific connection.
- *
- * @param {Object} [options] returns option results.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from previousErrors or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.previousErrors = function(options, callback) {
-  // Unpack calls
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  options = args.length ? args.shift() || {} : {};
-
-  this._executeQueryCommand(DbCommand.createGetPreviousErrorsCommand(this), options, function(err, error) {
-    callback(err, error.documents);
-  });
-};
-
-/**
- * Runs a command on the database.
- * @ignore
- * @api private
- */
-Db.prototype.executeDbCommand = function(command_hash, options, callback) {
-  if(callback == null) { callback = options; options = {}; }
-  this._executeQueryCommand(DbCommand.createDbSlaveOkCommand(this, command_hash, options), options, function(err, result) {
-    if(callback) callback(err, result);
-  });
-};
-
-/**
- * Runs a command on the database as admin.
- * @ignore
- * @api private
- */
-Db.prototype.executeDbAdminCommand = function(command_hash, options, callback) {
-  if(typeof options == 'function') {
-    callback = options;
-    options = {}
-  }
-
-  if(options.readPreference) {
-    options.read = options.readPreference;
-  }
-
-  this._executeQueryCommand(DbCommand.createAdminDbCommand(this, command_hash), options, function(err, result) {
-    if(callback) callback(err, result);
-  });
-};
-
-/**
- * Resets the error history of the mongo instance.
- *
- * Options
- *  - **connection** {Connection}, fire the getLastError down a specific connection.
- *
- * @param {Object} [options] returns option results.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from resetErrorHistory or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.resetErrorHistory = function(options, callback) {
-  // Unpack calls
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  options = args.length ? args.shift() || {} : {};
-
-  this._executeQueryCommand(DbCommand.createResetErrorHistoryCommand(this), options, function(err, error) {
-    if(callback) callback(err, error && error.documents);
-  });
-};
-
-/**
- * Creates an index on the collection.
- *
- * Options
-*  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowledgement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **unique** {Boolean, default:false}, creates an unique index.
- *  - **sparse** {Boolean, default:false}, creates a sparse index.
- *  - **background** {Boolean, default:false}, creates the index in the background, yielding whenever possible.
- *  - **dropDups** {Boolean, default:false}, a unique index cannot be created on a key that has pre-existing duplicate values. If you would like to create the index anyway, keeping the first document the database indexes and deleting all subsequent documents that have duplicate value
- *  - **min** {Number}, for geospatial indexes set the lower bound for the co-ordinates.
- *  - **max** {Number}, for geospatial indexes set the high bound for the co-ordinates.
- *  - **v** {Number}, specify the format version of the indexes.
- *  - **expireAfterSeconds** {Number}, allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher)
- *  - **name** {String}, override the autogenerated index name (useful if the resulting name is larger than 128 bytes)
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- *
- * @param {String} collectionName name of the collection to create the index on.
- * @param {Object} fieldOrSpec fieldOrSpec that defines the index.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from createIndex or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.createIndex = function(collectionName, fieldOrSpec, options, callback) {
-  var self = this;
-  var args = Array.prototype.slice.call(arguments, 2);
-  callback = args.pop();
-  options = args.length ? args.shift() || {} : {};
-  options = typeof callback === 'function' ? options : callback;
-  options = options == null ? {} : options;
-
-  // Get the error options
-  var errorOptions = _getWriteConcern(this, options);
-  // Create command
-  var command = DbCommand.createCreateIndexCommand(this, collectionName, fieldOrSpec, options);
-  // Default command options
-  var commandOptions = {};
-
-  // If we have error conditions set handle them
-  if(_hasWriteConcern(errorOptions) && typeof callback == 'function') {
-    // Insert options
-    commandOptions['read'] = false;
-    // If we have safe set set async to false
-    if(errorOptions == null) commandOptions['async'] = true;
-
-    // Set safe option
-    commandOptions['safe'] = errorOptions;
-    // If we have an error option
-    if(typeof errorOptions == 'object') {
-      var keys = Object.keys(errorOptions);
-      for(var i = 0; i < keys.length; i++) {
-        commandOptions[keys[i]] = errorOptions[keys[i]];
-      }
-    }
-
-    // Execute insert command
-    this._executeInsertCommand(command, commandOptions, function(err, result) {
-      if(err != null) return callback(err, null);
-
-      result = result && result.documents;
-      if (result[0].err) {
-        callback(utils.toError(result[0]));
-      } else {
-        callback(null, command.documents[0].name);
-      }
-    });
-  } else if(_hasWriteConcern(errorOptions) && callback == null) {
-    throw new Error("Cannot use a writeConcern without a provided callback");
-  } else {
-    // Execute insert command
-    var result = this._executeInsertCommand(command, commandOptions);
-    // If no callback just return
-    if(!callback) return;
-    // If error return error
-    if(result instanceof Error) {
-      return callback(result);
-    }
-    // Otherwise just return
-    return callback(null, null);
-  }
-};
-
-/**
- * Ensures that an index exists, if it does not it creates it
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowledgement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **unique** {Boolean, default:false}, creates an unique index.
- *  - **sparse** {Boolean, default:false}, creates a sparse index.
- *  - **background** {Boolean, default:false}, creates the index in the background, yielding whenever possible.
- *  - **dropDups** {Boolean, default:false}, a unique index cannot be created on a key that has pre-existing duplicate values. If you would like to create the index anyway, keeping the first document the database indexes and deleting all subsequent documents that have duplicate value
- *  - **min** {Number}, for geospatial indexes set the lower bound for the co-ordinates.
- *  - **max** {Number}, for geospatial indexes set the high bound for the co-ordinates.
- *  - **v** {Number}, specify the format version of the indexes.
- *  - **expireAfterSeconds** {Number}, allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher)
- *  - **name** {String}, override the autogenerated index name (useful if the resulting name is larger than 128 bytes)
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {String} collectionName name of the collection to create the index on.
- * @param {Object} fieldOrSpec fieldOrSpec that defines the index.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from ensureIndex or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.ensureIndex = function(collectionName, fieldOrSpec, options, callback) {
-  var self = this;
-
-  if (typeof callback === 'undefined' && typeof options === 'function') {
-    callback = options;
-    options = {};
-  }
-
-  if (options == null) {
-    options = {};
-  }
-
-  // Get the error options
-  var errorOptions = _getWriteConcern(this, options);
-  // Make sure we don't try to do a write concern without a callback
-  if(_hasWriteConcern(errorOptions) && callback == null)
-    throw new Error("Cannot use a writeConcern without a provided callback");
-  // Create command
-  var command = DbCommand.createCreateIndexCommand(this, collectionName, fieldOrSpec, options);
-  var index_name = command.documents[0].name;
-
-  // Default command options
-  var commandOptions = {};
-  // Check if the index allready exists
-  this.indexInformation(collectionName, function(err, collectionInfo) {
-    if(err != null) return callback(err, null);
-
-    if(!collectionInfo[index_name])  {
-      // If we have error conditions set handle them
-      if(_hasWriteConcern(errorOptions) && typeof callback == 'function') {
-        // Insert options
-        commandOptions['read'] = false;
-        // If we have safe set set async to false
-        if(errorOptions == null) commandOptions['async'] = true;
-
-        // If we have an error option
-        if(typeof errorOptions == 'object') {
-          var keys = Object.keys(errorOptions);
-          for(var i = 0; i < keys.length; i++) {
-            commandOptions[keys[i]] = errorOptions[keys[i]];
-          }
-        }
-
-        if(typeof callback === 'function' 
-          && commandOptions.w < 1 && !commandOptions.fsync && !commandOptions.journal) {
-          commandOptions.w = 1;
-        }
-
-        self._executeInsertCommand(command, commandOptions, function(err, result) {
-          // Only callback if we have one specified
-          if(typeof callback === 'function') {
-            if(err != null) return callback(err, null);
-
-            result = result && result.documents;
-            if (result[0].err) {
-              callback(utils.toError(result[0]));
-            } else {
-              callback(null, command.documents[0].name);
-            }
-          }
-        });
-      } else {
-        // Execute insert command
-        var result = self._executeInsertCommand(command, commandOptions);
-        // If no callback just return
-        if(!callback) return;
-        // If error return error
-        if(result instanceof Error) {
-          return callback(result);
-        }
-        // Otherwise just return
-        return callback(null, index_name);
-      }
-    } else {
-      if(typeof callback === 'function') return callback(null, index_name);
-    }
-  });
-};
-
-/**
- * Returns the information available on allocated cursors.
- *
- * Options
- *  - **readPreference** {String}, the preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from cursorInfo or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.cursorInfo = function(options, callback) {
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  options = args.length ? args.shift() || {} : {};
-
-  this._executeQueryCommand(DbCommand.createDbSlaveOkCommand(this, {'cursorInfo':1})
-    , options
-    , utils.handleSingleCommandResultReturn(null, null, callback));
-};
-
-/**
- * Drop an index on a collection.
- *
- * @param {String} collectionName the name of the collection where the command will drop an index.
- * @param {String} indexName name of the index to drop.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from dropIndex or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.dropIndex = function(collectionName, indexName, callback) {  
-  this._executeQueryCommand(DbCommand.createDropIndexCommand(this, collectionName, indexName)
-    , utils.handleSingleCommandResultReturn(null, null, callback));
-};
-
-/**
- * Reindex all indexes on the collection
- * Warning: reIndex is a blocking operation (indexes are rebuilt in the foreground) and will be slow for large collections.
- *
- * @param {String} collectionName the name of the collection.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from reIndex or null if an error occurred.
- * @api public
-**/
-Db.prototype.reIndex = function(collectionName, callback) {
-  this._executeQueryCommand(DbCommand.createReIndexCommand(this, collectionName)
-    , utils.handleSingleCommandResultReturn(true, false, callback));
-};
-
-/**
- * Retrieves this collections index info.
- *
- * Options
- *  - **full** {Boolean, default:false}, returns the full raw index information.
- *  - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST).
- *
- * @param {String} collectionName the name of the collection.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from indexInformation or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.indexInformation = function(collectionName, options, callback) {
-  if(typeof callback === 'undefined') {
-    if(typeof options === 'undefined') {
-      callback = collectionName;
-      collectionName = null;
-    } else {
-      callback = options;
-    }
-    options = {};
-  }
-
-  // If we specified full information
-  var full = options['full'] == null ? false : options['full'];
-  // Build selector for the indexes
-  var selector = collectionName != null ? {ns: (this.databaseName + "." + collectionName)} : {};
-
-  // Set read preference if we set one
-  var readPreference = options['readPreference'] ? options['readPreference'] : ReadPreference.PRIMARY;
-
-  // Iterate through all the fields of the index
-  this.collection(DbCommand.SYSTEM_INDEX_COLLECTION, function(err, collection) {
-    // Perform the find for the collection
-    collection.find(selector).setReadPreference(readPreference).toArray(function(err, indexes) {
-      if(err != null) return callback(err, null);
-      // Contains all the information
-      var info = {};
-
-      // if full defined just return all the indexes directly
-      if(full) return callback(null, indexes);
-
-      // Process all the indexes
-      for(var i = 0; i < indexes.length; i++) {
-        var index = indexes[i];
-        // Let's unpack the object
-        info[index.name] = [];
-        for(var name in index.key) {
-          info[index.name].push([name, index.key[name]]);
-        }
-      }
-
-      // Return all the indexes
-      callback(null, info);
-    });
-  });
-};
-
-/**
- * Drop a database.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from dropDatabase or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.dropDatabase = function(callback) {
-  this._executeQueryCommand(DbCommand.createDropDatabaseCommand(this)
-    , utils.handleSingleCommandResultReturn(true, false, callback));
-}
-
-/**
- * Get all the db statistics.
- *
- * Options
- *  - **scale** {Number}, divide the returned sizes by scale value.
- *  - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST).
- *
- * @param {Objects} [options] options for the stats command
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the results from stats or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.prototype.stats = function stats(options, callback) {
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  // Fetch all commands
-  options = args.length ? args.shift() || {} : {};
-
-  // Build command object
-  var commandObject = {
-    dbStats:this.collectionName
-  };
-
-  // Check if we have the scale value
-  if(options['scale'] != null) commandObject['scale'] = options['scale'];
-
-  // Execute the command
-  this.command(commandObject, options, callback);
-}
-
-/**
- * @ignore
- */
-var __executeQueryCommand = function(self, db_command, options, callback) {
-  // Options unpacking
-  var read = options['read'] != null ? options['read'] : false;  
-  read = options['readPreference'] != null && options['read'] == null ? options['readPreference'] : read;
-  var raw = options['raw'] != null ? options['raw'] : self.raw;
-  var onAll = options['onAll'] != null ? options['onAll'] : false;
-  var specifiedConnection = options['connection'] != null ? options['connection'] : null;
-
-  // Correct read preference to default primary if set to false, null or primary
-  if(!(typeof read == 'object') && read._type == 'ReadPreference') {
-    read = (read == null || read == 'primary' || read == false) ? ReadPreference.PRIMARY : read;
-    if(!ReadPreference.isValid(read)) return callback(new Error("Illegal readPreference mode specified, " + read));
-  } else if(typeof read == 'object' && read._type == 'ReadPreference') {
-    if(!read.isValid()) return callback(new Error("Illegal readPreference mode specified, " + read.mode));
-  }
-
-  // If we have a read preference set and we are a mongos pass the read preference on to the mongos instance,
-  if(self.serverConfig.isMongos() && read != null && read != false) {
-    db_command.setMongosReadPreference(read);
-  }
-
-  // If we got a callback object
-  if(typeof callback === 'function' && !onAll) {
-    // Override connection if we passed in a specific connection
-    var connection = specifiedConnection != null ? specifiedConnection : null;
-
-    if(connection instanceof Error) return callback(connection, null);
-
-    // Fetch either a reader or writer dependent on the specified read option if no connection
-    // was passed in
-    if(connection == null) {
-      connection = self.serverConfig.checkoutReader(read);
-    }
-
-    if(connection == null) {
-      return callback(new Error("no open connections"));
-    } else if(connection instanceof Error || connection['message'] != null) {
-      return callback(connection);
-    }
-
-    // Exhaust Option
-    var exhaust = options.exhaust || false;
-    
-    // Register the handler in the data structure
-    self.serverConfig._registerHandler(db_command, raw, connection, exhaust, callback);
-    
-    // Write the message out and handle any errors if there are any
-    connection.write(db_command, function(err) {
-      if(err != null) {
-        // Call the handler with an error
-        if(Array.isArray(db_command))
-          self.serverConfig._callHandler(db_command[0].getRequestId(), null, err);
-        else
-          self.serverConfig._callHandler(db_command.getRequestId(), null, err);
-      }
-    });
-  } else if(typeof callback === 'function' && onAll) {
-    var connections = self.serverConfig.allRawConnections();
-    var numberOfEntries = connections.length;
-    // Go through all the connections
-    for(var i = 0; i < connections.length; i++) {
-      // Fetch a connection
-      var connection = connections[i];
-
-      // Ensure we have a valid connection
-      if(connection == null) {
-        return callback(new Error("no open connections"));
-      } else if(connection instanceof Error) {
-        return callback(connection);
-      }
-
-      // Register the handler in the data structure
-      self.serverConfig._registerHandler(db_command, raw, connection, callback);
-
-      // Write the message out
-      connection.write(db_command, function(err) {
-        // Adjust the number of entries we need to process
-        numberOfEntries = numberOfEntries - 1;
-        // Remove listener
-        if(err != null) {
-          // Clean up listener and return error
-          self.serverConfig._removeHandler(db_command.getRequestId());
-        }
-
-        // No more entries to process callback with the error
-        if(numberOfEntries <= 0) {
-          callback(err);
-        }
-      });
-
-      // Update the db_command request id
-      db_command.updateRequestId();
-    }
-  } else {
-    // Fetch either a reader or writer dependent on the specified read option
-    // var connection = read == null || read == 'primary' || read == false ? self.serverConfig.checkoutWriter(true) : self.serverConfig.checkoutReader(read);
-    var connection = self.serverConfig.checkoutReader(read);
-    // Override connection if needed
-    connection = specifiedConnection != null ? specifiedConnection : connection;
-    // Ensure we have a valid connection
-    if(connection == null || connection instanceof Error || connection['message'] != null) return null;
-    // Write the message out
-    connection.write(db_command, function(err) {
-      if(err != null) {
-        // Emit the error
-        self.emit("error", err);
-      }
-    });
-  }
-};
-
-/**
- * Execute db query command (not safe)
- * @ignore
- * @api private
- */
-Db.prototype._executeQueryCommand = function(db_command, options, callback) {
-  var self = this;
-
-  // Unpack the parameters
-  if (typeof callback === 'undefined') {
-    callback = options;
-    options = {};
-  }
-
-  // fast fail option used for HA, no retry
-  var failFast = options['failFast'] != null
-    ? options['failFast']
-    : false;
-
-  // Check if the user force closed the command
-  if(this._applicationClosed) {
-    var err = new Error("db closed by application");
-    if('function' == typeof callback) {
-      return callback(err, null);
-    } else {
-      throw err;
-    }
-  }
-
-  if(this.serverConfig.isDestroyed()) 
-    return callback(new Error("Connection was destroyed by application"));
-
-  // Specific connection
-  var connection = options.connection;
-  // Check if the connection is actually live
-  if(connection 
-    && (!connection.isConnected || !connection.isConnected())) connection = null;
-
-  // Get the configuration
-  var config = this.serverConfig;
-  var read = options.read;
-  // Allow for the usage of the readPreference model
-  if(read == null) {
-    read = options.readPreference;
-  }
-
-  if(!connection && !config.canRead(read) && !config.canWrite() && config.isAutoReconnect()) {
-    if(read == ReadPreference.PRIMARY 
-      || read == ReadPreference.PRIMARY_PREFERRED
-      || (read != null && typeof read == 'object' && read.mode)
-      || read == null) {
-      
-      // Save the command
-      self.serverConfig._commandsStore.read_from_writer(
-        {   type: 'query'
-          , db_command: db_command
-          , options: options
-          , callback: callback
-          , db: self
-          , executeQueryCommand: __executeQueryCommand
-          , executeInsertCommand: __executeInsertCommand
-        }
-      );
-    } else {
-      self.serverConfig._commandsStore.read(
-        {   type: 'query'
-          , db_command: db_command
-          , options: options
-          , callback: callback 
-          , db: self
-          , executeQueryCommand: __executeQueryCommand
-          , executeInsertCommand: __executeInsertCommand
-        }
-      );
-    }
-
-    // If we have blown through the number of items let's 
-    if(!self.serverConfig._commandsStore.validateBufferLimit(self.bufferMaxEntries)) {
-      self.close();
-    }    
-  } else if(!connection && !config.canRead(read) && !config.canWrite() && !config.isAutoReconnect()) {
-    return callback(new Error("no open connections"), null);
-  } else {
-    if(typeof callback == 'function') {
-      __executeQueryCommand(self, db_command, options, function (err, result, conn) {
-        callback(err, result, conn);
-      });          
-    } else {
-      __executeQueryCommand(self, db_command, options);
-    }
-  }
-};
-
-/**
- * @ignore
- */
-var __executeInsertCommand = function(self, db_command, options, callback) {
-  // Always checkout a writer for this kind of operations
-  var connection = self.serverConfig.checkoutWriter();
-  // Get safe mode
-  var safe = options['safe'] != null ? options['safe'] : false;
-  var raw = options['raw'] != null ? options['raw'] : self.raw;
-  var specifiedConnection = options['connection'] != null ? options['connection'] : null;
-  // Override connection if needed
-  connection = specifiedConnection != null ? specifiedConnection : connection;
-
-  // Validate if we can use this server 2.6 wire protocol
-  if(!connection.isCompatible()) {
-    return callback(utils.toError("driver is incompatible with this server version"), null);
-  }
-
-  // Ensure we have a valid connection
-  if(typeof callback === 'function') {
-    // Ensure we have a valid connection
-    if(connection == null) {
-      return callback(new Error("no open connections"));
-    } else if(connection instanceof Error) {
-      return callback(connection);
-    }
-
-    var errorOptions = _getWriteConcern(self, options);
-    if(errorOptions.w > 0 || errorOptions.w == 'majority' || errorOptions.j || errorOptions.journal || errorOptions.fsync) {      
-      // db command is now an array of commands (original command + lastError)
-      db_command = [db_command, DbCommand.createGetLastErrorCommand(safe, self)];
-      // Register the handler in the data structure
-      self.serverConfig._registerHandler(db_command[1], raw, connection, callback);      
-    }
-  }
-
-  // If we have no callback and there is no connection
-  if(connection == null) return null;
-  if(connection instanceof Error && typeof callback == 'function') return callback(connection, null);
-  if(connection instanceof Error) return null;
-  if(connection == null && typeof callback == 'function') return callback(new Error("no primary server found"), null);
-
-  // Write the message out
-  connection.write(db_command, function(err) {
-    // Return the callback if it's not a safe operation and the callback is defined
-    if(typeof callback === 'function' && (safe == null || safe == false)) {
-      // Perform the callback
-      callback(err, null);
-    } else if(typeof callback === 'function') {
-      // Call the handler with an error
-      self.serverConfig._callHandler(db_command[1].getRequestId(), null, err);
-    } else if(typeof callback == 'function' && safe && safe.w == -1) {
-      // Call the handler with no error
-      self.serverConfig._callHandler(db_command[1].getRequestId(), null, null);
-    } else if(!safe || safe.w == -1) {
-      self.emit("error", err);
-    }
-  });
-};
-
-/**
- * Execute an insert Command
- * @ignore
- * @api private
- */
-Db.prototype._executeInsertCommand = function(db_command, options, callback) {
-  var self = this;
-
-  // Unpack the parameters
-  if(callback == null && typeof options === 'function') {
-    callback = options;
-    options = {};
-  }
-
-  // Ensure options are not null
-  options = options == null ? {} : options;
-
-  // Check if the user force closed the command
-  if(this._applicationClosed) {
-    if(typeof callback == 'function') {
-      return callback(new Error("db closed by application"), null);
-    } else {
-      throw new Error("db closed by application");
-    }
-  }
-
-  if(this.serverConfig.isDestroyed()) return callback(new Error("Connection was destroyed by application"));
-
-  // Specific connection
-  var connection = options.connection;
-  // Check if the connection is actually live
-  if(connection 
-    && (!connection.isConnected || !connection.isConnected())) connection = null;
-
-  // Get config
-  var config = self.serverConfig;
-  // Check if we are connected
-  if(!connection && !config.canWrite() && config.isAutoReconnect()) {
-    self.serverConfig._commandsStore.write(
-      {   type:'insert'
-        , 'db_command':db_command
-        , 'options':options
-        , 'callback':callback
-        , db: self
-        , executeQueryCommand: __executeQueryCommand
-        , executeInsertCommand: __executeInsertCommand
-      }
-    );
-
-    // If we have blown through the number of items let's 
-    if(!self.serverConfig._commandsStore.validateBufferLimit(self.bufferMaxEntries)) {
-      self.close();
-    }        
-  } else if(!connection && !config.canWrite() && !config.isAutoReconnect()) {
-    return callback(new Error("no open connections"), null);
-  } else {
-    __executeInsertCommand(self, db_command, options, callback);
-  }
-};
-
-/**
- * Update command is the same
- * @ignore
- * @api private
- */
-Db.prototype._executeUpdateCommand = Db.prototype._executeInsertCommand;
-/**
- * Remove command is the same
- * @ignore
- * @api private
- */
-Db.prototype._executeRemoveCommand = Db.prototype._executeInsertCommand;
-
-/**
- * Wrap a Mongo error document into an Error instance.
- * Deprecated. Use utils.toError instead.
- *
- * @ignore
- * @api private
- * @deprecated
- */
-Db.prototype.wrap = utils.toError;
-
-/**
- * Default URL
- *
- * @classconstant DEFAULT_URL
- **/
-Db.DEFAULT_URL = 'mongodb://localhost:27017/default';
-
-/**
- * Connect to MongoDB using a url as documented at
- *
- *  docs.mongodb.org/manual/reference/connection-string/
- *
- * Options
- *  - **uri_decode_auth** {Boolean, default:false} uri decode the user name and password for authentication
- *  - **db** {Object, default: null} a hash off options to set on the db object, see **Db constructor**
- *  - **server** {Object, default: null} a hash off options to set on the server objects, see **Server** constructor**
- *  - **replSet** {Object, default: null} a hash off options to set on the replSet object, see **ReplSet** constructor**
- *  - **mongos** {Object, default: null} a hash off options to set on the mongos object, see **Mongos** constructor**
- *
- * @param {String} url connection url for MongoDB.
- * @param {Object} [options] optional options for insert command
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occurred, or null otherwise. While the second parameter will contain the db instance or null if an error occurred.
- * @return {null}
- * @api public
- */
-Db.connect = function(url, options, callback) {
-  // Ensure correct mapping of the callback
-  if(typeof options == 'function') {
-    callback = options;
-    options = {};
-  }
-
-  // Ensure same behavior as previous version w:0
-  if(url.indexOf("safe") == -1 
-    && url.indexOf("w") == -1 
-    && url.indexOf("journal") == -1 && url.indexOf("j") == -1
-    && url.indexOf("fsync") == -1) options.w = 0;
-
-  // Avoid circular require problem
-  var MongoClient = require('./mongo_client.js').MongoClient;
-  // Attempt to connect
-  MongoClient.connect.call(MongoClient, url, options, callback);
-};
-
-/**
- * State of the db connection
- * @ignore
- */
-Object.defineProperty(Db.prototype, "state", { enumerable: true
-  , get: function () {
-      return this.serverConfig._serverState;
-    }
-});
-
-/**
- * @ignore
- */
-var _hasWriteConcern = function(errorOptions) {
-  return errorOptions == true
-    || errorOptions.w > 0
-    || errorOptions.w == 'majority'
-    || errorOptions.j == true
-    || errorOptions.journal == true
-    || errorOptions.fsync == true
-};
-
-/**
- * @ignore
- */
-var _setWriteConcernHash = function(options) {
-  var finalOptions = {};
-  if(options.w != null) finalOptions.w = options.w;  
-  if(options.journal == true) finalOptions.j = options.journal;
-  if(options.j == true) finalOptions.j = options.j;
-  if(options.fsync == true) finalOptions.fsync = options.fsync;
-  if(options.wtimeout != null) finalOptions.wtimeout = options.wtimeout;  
-  return finalOptions;
-};
-
-/**
- * @ignore
- */
-var _getWriteConcern = function(self, options, callback) {
-  // Final options
-  var finalOptions = {w:1};
-  // Local options verification
-  if(options.w != null || typeof options.j == 'boolean' || typeof options.journal == 'boolean' || typeof options.fsync == 'boolean') {
-    finalOptions = _setWriteConcernHash(options);
-  } else if(options.safe != null && typeof options.safe == 'object') {
-    finalOptions = _setWriteConcernHash(options.safe);
-  } else if(typeof options.safe == "boolean") {
-    finalOptions = {w: (options.safe ? 1 : 0)};
-  } else if(self.options.w != null || typeof self.options.j == 'boolean' || typeof self.options.journal == 'boolean' || typeof self.options.fsync == 'boolean') {
-    finalOptions = _setWriteConcernHash(self.options);
-  } else if(self.safe.w != null || typeof self.safe.j == 'boolean' || typeof self.safe.journal == 'boolean' || typeof self.safe.fsync == 'boolean') {
-    finalOptions = _setWriteConcernHash(self.safe);
-  } else if(typeof self.safe == "boolean") {
-    finalOptions = {w: (self.safe ? 1 : 0)};
-  }
-
-  // Ensure we don't have an invalid combination of write concerns
-  if(finalOptions.w < 1 
-    && (finalOptions.journal == true || finalOptions.j == true || finalOptions.fsync == true)) throw new Error("No acknowledgement using w < 1 cannot be combined with journal:true or fsync:true");
-
-  // Return the options
-  return finalOptions;
-};
-
-/**
- * Legacy support
- *
- * @ignore
- * @api private
- */
-exports.connect = Db.connect;
-exports.Db = Db;
-
-/**
- * Remove all listeners to the db instance.
- * @ignore
- * @api private
- */
-Db.prototype.removeAllEventListeners = function() {
-  this.removeAllListeners("close");
-  this.removeAllListeners("error");
-  this.removeAllListeners("timeout");
-  this.removeAllListeners("parseError");
-

<TRUNCATED>


[02/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos.cc
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos.cc b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos.cc
deleted file mode 100644
index 08eda82..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos.cc
+++ /dev/null
@@ -1,563 +0,0 @@
-#include "kerberos.h"
-#include <stdlib.h>
-#include "worker.h"
-#include "kerberos_context.h"
-
-#ifndef ARRAY_SIZE
-# define ARRAY_SIZE(a) (sizeof((a)) / sizeof((a)[0]))
-#endif
-
-Persistent<FunctionTemplate> Kerberos::constructor_template;
-
-// Call structs
-typedef struct AuthGSSClientCall {
-  uint32_t  flags;
-  char *uri;
-} AuthGSSClientCall;
-
-typedef struct AuthGSSClientStepCall {
-  KerberosContext *context;
-  char *challenge;
-} AuthGSSClientStepCall;
-
-typedef struct AuthGSSClientUnwrapCall {
-  KerberosContext *context;
-  char *challenge;
-} AuthGSSClientUnwrapCall;
-
-typedef struct AuthGSSClientWrapCall {
-  KerberosContext *context;
-  char *challenge;
-  char *user_name;
-} AuthGSSClientWrapCall;
-
-typedef struct AuthGSSClientCleanCall {
-  KerberosContext *context;
-} AuthGSSClientCleanCall;
-
-// VException object (causes throw in calling code)
-static Handle<Value> VException(const char *msg) {
-  HandleScope scope;
-  return ThrowException(Exception::Error(String::New(msg)));
-}
-
-Kerberos::Kerberos() : ObjectWrap() {
-}
-
-void Kerberos::Initialize(v8::Handle<v8::Object> target) {
-  // Grab the scope of the call from Node
-  HandleScope scope;
-  // Define a new function template
-  Local<FunctionTemplate> t = FunctionTemplate::New(Kerberos::New);
-  constructor_template = Persistent<FunctionTemplate>::New(t);
-  constructor_template->InstanceTemplate()->SetInternalFieldCount(1);
-  constructor_template->SetClassName(String::NewSymbol("Kerberos"));
-
-  // Set up method for the Kerberos instance
-  NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientInit", AuthGSSClientInit);  
-  NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientStep", AuthGSSClientStep);  
-  NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientUnwrap", AuthGSSClientUnwrap);
-  NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientWrap", AuthGSSClientWrap);
-  NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientClean", AuthGSSClientClean);
-
-  // Set the symbol
-  target->ForceSet(String::NewSymbol("Kerberos"), constructor_template->GetFunction());
-}
-
-Handle<Value> Kerberos::New(const Arguments &args) {
-  // Create a Kerberos instance
-  Kerberos *kerberos = new Kerberos();
-  // Return the kerberos object
-  kerberos->Wrap(args.This());
-  return args.This();
-}
-
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// authGSSClientInit
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-static void _authGSSClientInit(Worker *worker) {
-  gss_client_state *state;
-  gss_client_response *response;
-
-  // Allocate state
-  state = (gss_client_state *)malloc(sizeof(gss_client_state));
-  
-  // Unpack the parameter data struct
-  AuthGSSClientCall *call = (AuthGSSClientCall *)worker->parameters;
-  // Start the kerberos client
-  response = authenticate_gss_client_init(call->uri, call->flags, state);
-
-  // Release the parameter struct memory
-  free(call->uri);
-  free(call);
-
-  // If we have an error mark worker as having had an error
-  if(response->return_code == AUTH_GSS_ERROR) {
-    worker->error = TRUE;
-    worker->error_code = response->return_code;
-    worker->error_message = response->message;
-  } else {
-    worker->return_value = state;
-  }
-
-  // Free structure
-  free(response);
-}
-
-static Handle<Value> _map_authGSSClientInit(Worker *worker) {
-  HandleScope scope;
-
-  KerberosContext *context = KerberosContext::New();
-  context->state = (gss_client_state *)worker->return_value;
-  // Persistent<Value> _context = Persistent<Value>::New(context->handle_);
-  return scope.Close(context->handle_);
-}
-
-// Initialize method
-Handle<Value> Kerberos::AuthGSSClientInit(const Arguments &args) {
-  HandleScope scope;
-
-  // Ensure valid call
-  if(args.Length() != 3) return VException("Requires a service string uri, integer flags and a callback function");
-  if(args.Length() == 3 && !args[0]->IsString() && !args[1]->IsInt32() && !args[2]->IsFunction()) 
-      return VException("Requires a service string uri, integer flags and a callback function");    
-
-  Local<String> service = args[0]->ToString();
-  // Convert uri string to c-string
-  char *service_str = (char *)calloc(service->Utf8Length() + 1, sizeof(char));
-  // Write v8 string to c-string
-  service->WriteUtf8(service_str);
-
-  // Allocate a structure
-  AuthGSSClientCall *call = (AuthGSSClientCall *)calloc(1, sizeof(AuthGSSClientCall));
-  call->flags =args[1]->ToInt32()->Uint32Value();
-  call->uri = service_str;
-
-  // Unpack the callback
-  Local<Function> callback = Local<Function>::Cast(args[2]);
-
-  // Let's allocate some space
-  Worker *worker = new Worker();
-  worker->error = false;
-  worker->request.data = worker;
-  worker->callback = Persistent<Function>::New(callback);
-  worker->parameters = call;
-  worker->execute = _authGSSClientInit;
-  worker->mapper = _map_authGSSClientInit;
-
-  // Schedule the worker with lib_uv
-  uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After);
-  // Return no value as it's callback based
-  return scope.Close(Undefined());
-}
-
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// authGSSClientStep
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-static void _authGSSClientStep(Worker *worker) {
-  gss_client_state *state;
-  gss_client_response *response;
-  char *challenge;
-
-  // Unpack the parameter data struct
-  AuthGSSClientStepCall *call = (AuthGSSClientStepCall *)worker->parameters;
-  // Get the state
-  state = call->context->state;
-  challenge = call->challenge;
-
-  // Check what kind of challenge we have
-  if(call->challenge == NULL) {
-    challenge = (char *)"";
-  }
-
-  // Perform authentication step
-  response = authenticate_gss_client_step(state, challenge);
-
-  // If we have an error mark worker as having had an error
-  if(response->return_code == AUTH_GSS_ERROR) {
-    worker->error = TRUE;
-    worker->error_code = response->return_code;
-    worker->error_message = response->message;
-  } else {
-    worker->return_code = response->return_code;
-  }
-
-  // Free up structure
-  if(call->challenge != NULL) free(call->challenge);
-  free(call);
-  free(response);
-}
-
-static Handle<Value> _map_authGSSClientStep(Worker *worker) {
-  HandleScope scope;
-  // Return the return code
-  return scope.Close(Int32::New(worker->return_code));
-}
-
-// Initialize method
-Handle<Value> Kerberos::AuthGSSClientStep(const Arguments &args) {
-  HandleScope scope;
-
-  // Ensure valid call
-  if(args.Length() != 2 && args.Length() != 3) return VException("Requires a GSS context, optional challenge string and callback function");
-  if(args.Length() == 2 && !KerberosContext::HasInstance(args[0])) return VException("Requires a GSS context, optional challenge string and callback function");
-  if(args.Length() == 3 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsString()) return VException("Requires a GSS context, optional challenge string and callback function");
-
-  // Challenge string
-  char *challenge_str = NULL;
-  // Let's unpack the parameters
-  Local<Object> object = args[0]->ToObject();
-  KerberosContext *kerberos_context = KerberosContext::Unwrap<KerberosContext>(object);
-
-  // If we have a challenge string
-  if(args.Length() == 3) {
-    // Unpack the challenge string
-    Local<String> challenge = args[1]->ToString();
-    // Convert uri string to c-string
-    challenge_str = (char *)calloc(challenge->Utf8Length() + 1, sizeof(char));
-    // Write v8 string to c-string
-    challenge->WriteUtf8(challenge_str);    
-  }
-
-  // Allocate a structure
-  AuthGSSClientStepCall *call = (AuthGSSClientStepCall *)calloc(1, sizeof(AuthGSSClientCall));
-  call->context = kerberos_context;
-  call->challenge = challenge_str;
-
-  // Unpack the callback
-  Local<Function> callback = Local<Function>::Cast(args[2]);
-
-  // Let's allocate some space
-  Worker *worker = new Worker();
-  worker->error = false;
-  worker->request.data = worker;
-  worker->callback = Persistent<Function>::New(callback);
-  worker->parameters = call;
-  worker->execute = _authGSSClientStep;
-  worker->mapper = _map_authGSSClientStep;
-
-  // Schedule the worker with lib_uv
-  uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After);
-
-  // Return no value as it's callback based
-  return scope.Close(Undefined());
-}
-
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// authGSSClientUnwrap
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-static void _authGSSClientUnwrap(Worker *worker) {
-  gss_client_response *response;
-  char *challenge;
-
-  // Unpack the parameter data struct
-  AuthGSSClientUnwrapCall *call = (AuthGSSClientUnwrapCall *)worker->parameters;
-  challenge = call->challenge;
-
-  // Check what kind of challenge we have
-  if(call->challenge == NULL) {
-    challenge = (char *)"";
-  }
-
-  // Perform authentication step
-  response = authenticate_gss_client_unwrap(call->context->state, challenge);
-
-  // If we have an error mark worker as having had an error
-  if(response->return_code == AUTH_GSS_ERROR) {
-    worker->error = TRUE;
-    worker->error_code = response->return_code;
-    worker->error_message = response->message;
-  } else {
-    worker->return_code = response->return_code;
-  }
-
-  // Free up structure
-  if(call->challenge != NULL) free(call->challenge);
-  free(call);
-  free(response);
-}
-
-static Handle<Value> _map_authGSSClientUnwrap(Worker *worker) {
-  HandleScope scope;
-  // Return the return code
-  return scope.Close(Int32::New(worker->return_code));
-}
-
-// Initialize method
-Handle<Value> Kerberos::AuthGSSClientUnwrap(const Arguments &args) {
-  HandleScope scope;
-
-  // Ensure valid call
-  if(args.Length() != 2 && args.Length() != 3) return VException("Requires a GSS context, optional challenge string and callback function");
-  if(args.Length() == 2 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsFunction()) return VException("Requires a GSS context, optional challenge string and callback function");
-  if(args.Length() == 3 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsString() && !args[2]->IsFunction()) return VException("Requires a GSS context, optional challenge string and callback function");
-
-  // Challenge string
-  char *challenge_str = NULL;
-  // Let's unpack the parameters
-  Local<Object> object = args[0]->ToObject();
-  KerberosContext *kerberos_context = KerberosContext::Unwrap<KerberosContext>(object);
-
-  // If we have a challenge string
-  if(args.Length() == 3) {
-    // Unpack the challenge string
-    Local<String> challenge = args[1]->ToString();
-    // Convert uri string to c-string
-    challenge_str = (char *)calloc(challenge->Utf8Length() + 1, sizeof(char));
-    // Write v8 string to c-string
-    challenge->WriteUtf8(challenge_str);    
-  }
-
-  // Allocate a structure
-  AuthGSSClientUnwrapCall *call = (AuthGSSClientUnwrapCall *)calloc(1, sizeof(AuthGSSClientUnwrapCall));
-  call->context = kerberos_context;
-  call->challenge = challenge_str;
-
-  // Unpack the callback
-  Local<Function> callback = args.Length() == 3 ? Local<Function>::Cast(args[2]) : Local<Function>::Cast(args[1]);
-
-  // Let's allocate some space
-  Worker *worker = new Worker();
-  worker->error = false;
-  worker->request.data = worker;
-  worker->callback = Persistent<Function>::New(callback);
-  worker->parameters = call;
-  worker->execute = _authGSSClientUnwrap;
-  worker->mapper = _map_authGSSClientUnwrap;
-
-  // Schedule the worker with lib_uv
-  uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After);
-
-  // Return no value as it's callback based
-  return scope.Close(Undefined());
-}
-
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// authGSSClientWrap
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-static void _authGSSClientWrap(Worker *worker) {
-  gss_client_response *response;
-  char *user_name = NULL;
-
-  // Unpack the parameter data struct
-  AuthGSSClientWrapCall *call = (AuthGSSClientWrapCall *)worker->parameters;
-  user_name = call->user_name;  
-
-  // Check what kind of challenge we have
-  if(call->user_name == NULL) {
-    user_name = (char *)"";
-  }
-
-  // Perform authentication step
-  response = authenticate_gss_client_wrap(call->context->state, call->challenge, user_name);
-
-  // If we have an error mark worker as having had an error
-  if(response->return_code == AUTH_GSS_ERROR) {
-    worker->error = TRUE;
-    worker->error_code = response->return_code;
-    worker->error_message = response->message;
-  } else {
-    worker->return_code = response->return_code;
-  }
-
-  // Free up structure
-  if(call->challenge != NULL) free(call->challenge);
-  if(call->user_name != NULL) free(call->user_name);
-  free(call);
-  free(response);
-}
-
-static Handle<Value> _map_authGSSClientWrap(Worker *worker) {
-  HandleScope scope;
-  // Return the return code
-  return scope.Close(Int32::New(worker->return_code));
-}
-
-// Initialize method
-Handle<Value> Kerberos::AuthGSSClientWrap(const Arguments &args) {
-  HandleScope scope;
-
-  // Ensure valid call
-  if(args.Length() != 3 && args.Length() != 4) return VException("Requires a GSS context, the result from the authGSSClientResponse after authGSSClientUnwrap, optional user name and callback function");
-  if(args.Length() == 3 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsString() && !args[2]->IsFunction()) return VException("Requires a GSS context, the result from the authGSSClientResponse after authGSSClientUnwrap, optional user name and callback function");
-  if(args.Length() == 4 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsString() && !args[2]->IsString() && !args[2]->IsFunction()) return VException("Requires a GSS context, the result from the authGSSClientResponse after authGSSClientUnwrap, optional user name and callback function");
-
-  // Challenge string
-  char *challenge_str = NULL;
-  char *user_name_str = NULL;
-  
-  // Let's unpack the kerberos context
-  Local<Object> object = args[0]->ToObject();
-  KerberosContext *kerberos_context = KerberosContext::Unwrap<KerberosContext>(object);
-
-  // Unpack the challenge string
-  Local<String> challenge = args[1]->ToString();
-  // Convert uri string to c-string
-  challenge_str = (char *)calloc(challenge->Utf8Length() + 1, sizeof(char));
-  // Write v8 string to c-string
-  challenge->WriteUtf8(challenge_str);    
-
-  // If we have a user string
-  if(args.Length() == 4) {
-    // Unpack user name
-    Local<String> user_name = args[2]->ToString();
-    // Convert uri string to c-string
-    user_name_str = (char *)calloc(user_name->Utf8Length() + 1, sizeof(char));
-    // Write v8 string to c-string
-    user_name->WriteUtf8(user_name_str);
-  }
-
-  // Allocate a structure
-  AuthGSSClientWrapCall *call = (AuthGSSClientWrapCall *)calloc(1, sizeof(AuthGSSClientWrapCall));
-  call->context = kerberos_context;
-  call->challenge = challenge_str;
-  call->user_name = user_name_str;
-
-  // Unpack the callback
-  Local<Function> callback = args.Length() == 4 ? Local<Function>::Cast(args[3]) : Local<Function>::Cast(args[2]);
-
-  // Let's allocate some space
-  Worker *worker = new Worker();
-  worker->error = false;
-  worker->request.data = worker;
-  worker->callback = Persistent<Function>::New(callback);
-  worker->parameters = call;
-  worker->execute = _authGSSClientWrap;
-  worker->mapper = _map_authGSSClientWrap;
-
-  // Schedule the worker with lib_uv
-  uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After);
-
-  // Return no value as it's callback based
-  return scope.Close(Undefined());
-}
-
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// authGSSClientWrap
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-static void _authGSSClientClean(Worker *worker) {
-  gss_client_response *response;
-
-  // Unpack the parameter data struct
-  AuthGSSClientCleanCall *call = (AuthGSSClientCleanCall *)worker->parameters;
-
-  // Perform authentication step
-  response = authenticate_gss_client_clean(call->context->state);
-
-  // If we have an error mark worker as having had an error
-  if(response->return_code == AUTH_GSS_ERROR) {
-    worker->error = TRUE;
-    worker->error_code = response->return_code;
-    worker->error_message = response->message;
-  } else {
-    worker->return_code = response->return_code;
-  }
-
-  // Free up structure
-  free(call);
-  free(response);
-}
-
-static Handle<Value> _map_authGSSClientClean(Worker *worker) {
-  HandleScope scope;
-  // Return the return code
-  return scope.Close(Int32::New(worker->return_code));
-}
-
-// Initialize method
-Handle<Value> Kerberos::AuthGSSClientClean(const Arguments &args) {
-  HandleScope scope;
-
-  // // Ensure valid call
-  if(args.Length() != 2) return VException("Requires a GSS context and callback function");
-  if(!KerberosContext::HasInstance(args[0]) && !args[1]->IsFunction()) return VException("Requires a GSS context and callback function");
-
-  // Let's unpack the kerberos context
-  Local<Object> object = args[0]->ToObject();
-  KerberosContext *kerberos_context = KerberosContext::Unwrap<KerberosContext>(object);
-
-  // Allocate a structure
-  AuthGSSClientCleanCall *call = (AuthGSSClientCleanCall *)calloc(1, sizeof(AuthGSSClientCleanCall));
-  call->context = kerberos_context;
-
-  // Unpack the callback
-  Local<Function> callback = Local<Function>::Cast(args[1]);
-
-  // Let's allocate some space
-  Worker *worker = new Worker();
-  worker->error = false;
-  worker->request.data = worker;
-  worker->callback = Persistent<Function>::New(callback);
-  worker->parameters = call;
-  worker->execute = _authGSSClientClean;
-  worker->mapper = _map_authGSSClientClean;
-
-  // Schedule the worker with lib_uv
-  uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After);
-
-  // Return no value as it's callback based
-  return scope.Close(Undefined());
-}
-
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// UV Lib callbacks
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void Kerberos::Process(uv_work_t* work_req) {
-  // Grab the worker
-  Worker *worker = static_cast<Worker*>(work_req->data);
-  // Execute the worker code
-  worker->execute(worker);
-}
-
-void Kerberos::After(uv_work_t* work_req) {
-  // Grab the scope of the call from Node
-  v8::HandleScope scope;
-
-  // Get the worker reference
-  Worker *worker = static_cast<Worker*>(work_req->data);
-
-  // If we have an error
-  if(worker->error) {
-    v8::Local<v8::Value> err = v8::Exception::Error(v8::String::New(worker->error_message));
-    Local<Object> obj = err->ToObject();
-    obj->Set(NODE_PSYMBOL("code"), Int32::New(worker->error_code));
-    v8::Local<v8::Value> args[2] = { err, v8::Local<v8::Value>::New(v8::Null()) };
-    // Execute the error
-    v8::TryCatch try_catch;
-    // Call the callback
-    worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args);
-    // If we have an exception handle it as a fatalexception
-    if (try_catch.HasCaught()) {
-      node::FatalException(try_catch);
-    }
-  } else {
-    // // Map the data
-    v8::Handle<v8::Value> result = worker->mapper(worker);
-    // Set up the callback with a null first
-    v8::Handle<v8::Value> args[2] = { v8::Local<v8::Value>::New(v8::Null()), result};
-    // Wrap the callback function call in a TryCatch so that we can call
-    // node's FatalException afterwards. This makes it possible to catch
-    // the exception from JavaScript land using the
-    // process.on('uncaughtException') event.
-    v8::TryCatch try_catch;
-    // Call the callback
-    worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args);
-    // If we have an exception handle it as a fatalexception
-    if (try_catch.HasCaught()) {
-      node::FatalException(try_catch);
-    }
-  }
-
-  // Clean up the memory
-  worker->callback.Dispose();
-  delete worker;
-}
-
-// Exporting function
-extern "C" void init(Handle<Object> target) {
-  HandleScope scope;
-  Kerberos::Initialize(target);
-  KerberosContext::Initialize(target);
-}
-
-NODE_MODULE(kerberos, init);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos.h
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos.h b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos.h
deleted file mode 100644
index 0619957..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef KERBEROS_H
-#define KERBEROS_H
-
-#include <node.h>
-#include <gssapi/gssapi.h>
-#include <gssapi/gssapi_generic.h>
-#include <gssapi/gssapi_krb5.h>
-
-#include <node_object_wrap.h>
-#include <v8.h>
-
-extern "C" {
-  #include "kerberosgss.h"
-}
-
-using namespace v8;
-using namespace node;
-
-class Kerberos : public ObjectWrap {
-
-public:
-  Kerberos();
-  ~Kerberos() {};
-
-  // Constructor used for creating new Kerberos objects from C++
-  static Persistent<FunctionTemplate> constructor_template;
-
-  // Initialize function for the object
-  static void Initialize(Handle<Object> target);
-
-  // Method available
-  static Handle<Value> AuthGSSClientInit(const Arguments &args);
-  static Handle<Value> AuthGSSClientStep(const Arguments &args);
-  static Handle<Value> AuthGSSClientUnwrap(const Arguments &args);
-  static Handle<Value> AuthGSSClientWrap(const Arguments &args);
-  static Handle<Value> AuthGSSClientClean(const Arguments &args);
-
-private:
-  static Handle<Value> New(const Arguments &args);  
-
-  // Handles the uv calls
-  static void Process(uv_work_t* work_req);
-  // Called after work is done
-  static void After(uv_work_t* work_req);
-};
-
-#endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos.js b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos.js
deleted file mode 100644
index b1a701b..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos.js
+++ /dev/null
@@ -1,91 +0,0 @@
-var kerberos = require('../build/Release/kerberos')
-  , KerberosNative = kerberos.Kerberos;
-
-var Kerberos = function() {
-  this._native_kerberos = new KerberosNative(); 
-}
-
-Kerberos.prototype.authGSSClientInit = function(uri, flags, callback) {
-  return this._native_kerberos.authGSSClientInit(uri, flags, callback);
-}
-
-Kerberos.prototype.authGSSClientStep = function(context, challenge, callback) {
-  if(typeof challenge == 'function') {
-    callback = challenge;
-    challenge = '';
-  }
-
-  return this._native_kerberos.authGSSClientStep(context, challenge, callback);
-}
-
-Kerberos.prototype.authGSSClientUnwrap = function(context, challenge, callback) {
-  if(typeof challenge == 'function') {
-    callback = challenge;
-    challenge = '';
-  }
-
-  return this._native_kerberos.authGSSClientUnwrap(context, challenge, callback);
-}
-
-Kerberos.prototype.authGSSClientWrap = function(context, challenge, user_name, callback) {
-  if(typeof user_name == 'function') {
-    callback = user_name;
-    user_name = '';
-  }
-
-  return this._native_kerberos.authGSSClientWrap(context, challenge, user_name, callback);
-}
-
-Kerberos.prototype.authGSSClientClean = function(context, callback) {
-  return this._native_kerberos.authGSSClientClean(context, callback);
-}
-
-Kerberos.prototype.acquireAlternateCredentials = function(user_name, password, domain) {
-  return this._native_kerberos.acquireAlternateCredentials(user_name, password, domain); 
-}
-
-Kerberos.prototype.prepareOutboundPackage = function(principal, inputdata) {
-  return this._native_kerberos.prepareOutboundPackage(principal, inputdata); 
-}
-
-Kerberos.prototype.decryptMessage = function(challenge) {
-  return this._native_kerberos.decryptMessage(challenge);
-}
-
-Kerberos.prototype.encryptMessage = function(challenge) {
-  return this._native_kerberos.encryptMessage(challenge); 
-}
-
-Kerberos.prototype.queryContextAttribute = function(attribute) {
-  if(typeof attribute != 'number' && attribute != 0x00) throw new Error("Attribute not supported");
-  return this._native_kerberos.queryContextAttribute(attribute);
-}
-
-// Some useful result codes
-Kerberos.AUTH_GSS_CONTINUE     = 0;
-Kerberos.AUTH_GSS_COMPLETE     = 1;
-     
-// Some useful gss flags 
-Kerberos.GSS_C_DELEG_FLAG      = 1;
-Kerberos.GSS_C_MUTUAL_FLAG     = 2;
-Kerberos.GSS_C_REPLAY_FLAG     = 4;
-Kerberos.GSS_C_SEQUENCE_FLAG   = 8;
-Kerberos.GSS_C_CONF_FLAG       = 16; 
-Kerberos.GSS_C_INTEG_FLAG      = 32;
-Kerberos.GSS_C_ANON_FLAG       = 64;
-Kerberos.GSS_C_PROT_READY_FLAG = 128; 
-Kerberos.GSS_C_TRANS_FLAG      = 256;
-
-// Export Kerberos class
-exports.Kerberos = Kerberos;
-
-// If we have SSPI (windows)
-if(kerberos.SecurityCredentials) {
-  // Put all SSPI classes in it's own namespace
-  exports.SSIP = {
-      SecurityCredentials: require('./win32/wrappers/security_credentials').SecurityCredentials
-    , SecurityContext: require('./win32/wrappers/security_context').SecurityContext
-    , SecurityBuffer: require('./win32/wrappers/security_buffer').SecurityBuffer
-    , SecurityBufferDescriptor: require('./win32/wrappers/security_buffer_descriptor').SecurityBufferDescriptor
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.cc
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.cc b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.cc
deleted file mode 100644
index 7a5f4eb..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.cc
+++ /dev/null
@@ -1,74 +0,0 @@
-#include "kerberos_context.h"
-
-Persistent<FunctionTemplate> KerberosContext::constructor_template;
-
-KerberosContext::KerberosContext() : ObjectWrap() {
-}
-
-KerberosContext::~KerberosContext() {
-}
-
-KerberosContext* KerberosContext::New() {
-  HandleScope scope;
-  
-  Local<Object> obj = constructor_template->GetFunction()->NewInstance();
-  KerberosContext *kerberos_context = ObjectWrap::Unwrap<KerberosContext>(obj);  
-  
-  return kerberos_context;
-}
-
-Handle<Value> KerberosContext::New(const Arguments &args) {
-  HandleScope scope;    
-  // Create code object
-  KerberosContext *kerberos_context = new KerberosContext();
-  // Wrap it
-  kerberos_context->Wrap(args.This());
-  // Return the object
-  return args.This();    
-}
-
-static Persistent<String> response_symbol;
-
-void KerberosContext::Initialize(Handle<Object> target) {
-  // Grab the scope of the call from Node
-  HandleScope scope;
-  // Define a new function template
-  Local<FunctionTemplate> t = FunctionTemplate::New(New);
-  constructor_template = Persistent<FunctionTemplate>::New(t);
-  constructor_template->InstanceTemplate()->SetInternalFieldCount(1);
-  constructor_template->SetClassName(String::NewSymbol("KerberosContext"));
-
-  // Property symbols
-  response_symbol = NODE_PSYMBOL("response");
-    
-  // Getter for the response
-  constructor_template->InstanceTemplate()->SetAccessor(response_symbol, ResponseGetter);
-
-  // Set up the Symbol for the Class on the Module
-  target->Set(String::NewSymbol("KerberosContext"), constructor_template->GetFunction());
-}
-
-//
-// Response Setter / Getter
-Handle<Value> KerberosContext::ResponseGetter(Local<String> property, const AccessorInfo& info) {
-  HandleScope scope;
-  gss_client_state *state;
-
-  // Unpack the object
-  KerberosContext *context = ObjectWrap::Unwrap<KerberosContext>(info.Holder());
-  // Let's grab the response
-  state = context->state;
-  // No state no response
-  if(state == NULL || state->response == NULL) return scope.Close(Null());
-  // Return the response
-  return scope.Close(String::New(state->response));
-}
-
-
-
-
-
-
-
-
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.h
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.h b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.h
deleted file mode 100644
index 8becef6..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef KERBEROS_CONTEXT_H
-#define KERBEROS_CONTEXT_H
-
-#include <node.h>
-#include <gssapi/gssapi.h>
-#include <gssapi/gssapi_generic.h>
-#include <gssapi/gssapi_krb5.h>
-
-#include <node_object_wrap.h>
-#include <v8.h>
-
-extern "C" {
-  #include "kerberosgss.h"
-}
-
-using namespace v8;
-using namespace node;
-
-class KerberosContext : public ObjectWrap {
-
-public:
-  KerberosContext();
-  ~KerberosContext();
-
-  static inline bool HasInstance(Handle<Value> val) {
-    if (!val->IsObject()) return false;
-    Local<Object> obj = val->ToObject();
-    return constructor_template->HasInstance(obj);
-  };
-
-  // Constructor used for creating new Kerberos objects from C++
-  static Persistent<FunctionTemplate> constructor_template;
-
-  // Initialize function for the object
-  static void Initialize(Handle<Object> target);
-
-  // Public constructor
-  static KerberosContext* New();
-
-  // Handle to the kerberos context
-  gss_client_state *state;
-
-private:
-  static Handle<Value> New(const Arguments &args);  
-
-  static Handle<Value> ResponseGetter(Local<String> property, const AccessorInfo& info);  
-};
-#endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.c
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.c b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.c
deleted file mode 100644
index f17003d..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.c
+++ /dev/null
@@ -1,666 +0,0 @@
-/**
- * Copyright (c) 2006-2010 Apple Inc. All rights reserved.
- *
- * 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 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.
- **/
-
-#include "kerberosgss.h"
-
-#include "base64.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <arpa/inet.h>
-
-static void set_gss_error(OM_uint32 err_maj, OM_uint32 err_min);
-
-/*extern PyObject *GssException_class;
-extern PyObject *KrbException_class;
-
-char* server_principal_details(const char* service, const char* hostname)
-{
-    char match[1024];
-    int match_len = 0;
-    char* result = NULL;
-    
-    int code;
-    krb5_context kcontext;
-    krb5_keytab kt = NULL;
-    krb5_kt_cursor cursor = NULL;
-    krb5_keytab_entry entry;
-    char* pname = NULL;
-    
-    // Generate the principal prefix we want to match
-    snprintf(match, 1024, "%s/%s@", service, hostname);
-    match_len = strlen(match);
-    
-    code = krb5_init_context(&kcontext);
-    if (code)
-    {
-        PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))",
-                                                          "Cannot initialize Kerberos5 context", code));
-        return NULL;
-    }
-    
-    if ((code = krb5_kt_default(kcontext, &kt)))
-    {
-        PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))",
-                                                          "Cannot get default keytab", code));
-        goto end;
-    }
-    
-    if ((code = krb5_kt_start_seq_get(kcontext, kt, &cursor)))
-    {
-        PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))",
-                                                          "Cannot get sequence cursor from keytab", code));
-        goto end;
-    }
-    
-    while ((code = krb5_kt_next_entry(kcontext, kt, &entry, &cursor)) == 0)
-    {
-        if ((code = krb5_unparse_name(kcontext, entry.principal, &pname)))
-        {
-            PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))",
-                                                              "Cannot parse principal name from keytab", code));
-            goto end;
-        }
-        
-        if (strncmp(pname, match, match_len) == 0)
-        {
-            result = malloc(strlen(pname) + 1);
-            strcpy(result, pname);
-            krb5_free_unparsed_name(kcontext, pname);
-            krb5_free_keytab_entry_contents(kcontext, &entry);
-            break;
-        }
-        
-        krb5_free_unparsed_name(kcontext, pname);
-        krb5_free_keytab_entry_contents(kcontext, &entry);
-    }
-    
-    if (result == NULL)
-    {
-        PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))",
-                                                          "Principal not found in keytab", -1));
-    }
-    
-end:
-    if (cursor)
-        krb5_kt_end_seq_get(kcontext, kt, &cursor);
-    if (kt)
-        krb5_kt_close(kcontext, kt);
-    krb5_free_context(kcontext);
-    
-    return result;
-}
-*/
-gss_client_response *authenticate_gss_client_init(const char* service, long int gss_flags, gss_client_state* state) {
-  OM_uint32 maj_stat;
-  OM_uint32 min_stat;
-  gss_buffer_desc name_token = GSS_C_EMPTY_BUFFER;
-  gss_client_response *response = NULL;
-  int ret = AUTH_GSS_COMPLETE;
-
-  state->server_name = GSS_C_NO_NAME;
-  state->context = GSS_C_NO_CONTEXT;
-  state->gss_flags = gss_flags;
-  state->username = NULL;
-  state->response = NULL;
-  
-  // Import server name first
-  name_token.length = strlen(service);
-  name_token.value = (char *)service;
-  
-  maj_stat = gss_import_name(&min_stat, &name_token, gss_krb5_nt_service_name, &state->server_name);
-  
-  if (GSS_ERROR(maj_stat)) {
-    response = gss_error(maj_stat, min_stat);
-    response->return_code = AUTH_GSS_ERROR;
-    goto end;
-  }
-  
-end:
-  if(response == NULL) {
-    response = calloc(1, sizeof(gss_client_response));
-    response->return_code = ret;    
-  }
-
-  return response;
-}
-
-gss_client_response *authenticate_gss_client_clean(gss_client_state *state) {
-  OM_uint32 min_stat;
-  int ret = AUTH_GSS_COMPLETE;
-  gss_client_response *response = NULL;
-  
-  if(state->context != GSS_C_NO_CONTEXT)
-    gss_delete_sec_context(&min_stat, &state->context, GSS_C_NO_BUFFER);
-  
-  if(state->server_name != GSS_C_NO_NAME)
-    gss_release_name(&min_stat, &state->server_name);
-  
-  if(state->username != NULL) {
-    free(state->username);
-    state->username = NULL;
-  }
-
-  if (state->response != NULL) {
-    free(state->response);
-    state->response = NULL;
-  }
-  
-  if(response == NULL) {
-    response = calloc(1, sizeof(gss_client_response));
-    response->return_code = ret;    
-  }
-
-  return response;
-}
-
-gss_client_response *authenticate_gss_client_step(gss_client_state* state, const char* challenge) {
-  OM_uint32 maj_stat;
-  OM_uint32 min_stat;
-  gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
-  gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
-  int ret = AUTH_GSS_CONTINUE;
-  gss_client_response *response = NULL;
-  
-  // Always clear out the old response
-  if (state->response != NULL) {
-    free(state->response);
-    state->response = NULL;
-  }
-  
-  // If there is a challenge (data from the server) we need to give it to GSS
-  if (challenge && *challenge) {
-    int len;
-    input_token.value = base64_decode(challenge, &len);
-    input_token.length = len;
-  }
-  
-  // Do GSSAPI step
-  maj_stat = gss_init_sec_context(&min_stat,
-                                  GSS_C_NO_CREDENTIAL,
-                                  &state->context,
-                                  state->server_name,
-                                  GSS_C_NO_OID,
-                                  (OM_uint32)state->gss_flags,
-                                  0,
-                                  GSS_C_NO_CHANNEL_BINDINGS,
-                                  &input_token,
-                                  NULL,
-                                  &output_token,
-                                  NULL,
-                                  NULL);
-
-  if ((maj_stat != GSS_S_COMPLETE) && (maj_stat != GSS_S_CONTINUE_NEEDED)) {
-    response = gss_error(maj_stat, min_stat);
-    response->return_code = AUTH_GSS_ERROR;
-    goto end;
-  }
-  
-  ret = (maj_stat == GSS_S_COMPLETE) ? AUTH_GSS_COMPLETE : AUTH_GSS_CONTINUE;
-  // Grab the client response to send back to the server
-  if(output_token.length) {
-    state->response = base64_encode((const unsigned char *)output_token.value, output_token.length);
-    maj_stat = gss_release_buffer(&min_stat, &output_token);
-  }
-  
-  // Try to get the user name if we have completed all GSS operations
-  if (ret == AUTH_GSS_COMPLETE) {
-    gss_name_t gssuser = GSS_C_NO_NAME;
-    maj_stat = gss_inquire_context(&min_stat, state->context, &gssuser, NULL, NULL, NULL,  NULL, NULL, NULL);
-    
-    if(GSS_ERROR(maj_stat)) {
-      response = gss_error(maj_stat, min_stat);
-      response->return_code = AUTH_GSS_ERROR;
-      goto end;
-    }
-    
-    gss_buffer_desc name_token;
-    name_token.length = 0;
-    maj_stat = gss_display_name(&min_stat, gssuser, &name_token, NULL);
-    
-    if(GSS_ERROR(maj_stat)) {
-      if(name_token.value)
-        gss_release_buffer(&min_stat, &name_token);
-      gss_release_name(&min_stat, &gssuser);
-      
-      response = gss_error(maj_stat, min_stat);
-      response->return_code = AUTH_GSS_ERROR;
-      goto end;
-    } else {
-      state->username = (char *)malloc(name_token.length + 1);
-      strncpy(state->username, (char*) name_token.value, name_token.length);
-      state->username[name_token.length] = 0;
-      gss_release_buffer(&min_stat, &name_token);
-      gss_release_name(&min_stat, &gssuser);
-    }
-  }
-
-end:
-  if(output_token.value)
-    gss_release_buffer(&min_stat, &output_token);
-  if(input_token.value)
-    free(input_token.value);
-
-  if(response == NULL) {
-    response = calloc(1, sizeof(gss_client_response));
-    response->return_code = ret;
-  }
-
-  // Return the response
-  return response;
-}
-
-gss_client_response *authenticate_gss_client_unwrap(gss_client_state *state, const char *challenge) {
-  OM_uint32 maj_stat;
-  OM_uint32 min_stat;
-  gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
-  gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
-  gss_client_response *response = NULL;
-  int ret = AUTH_GSS_CONTINUE;
-    
-  // Always clear out the old response
-  if(state->response != NULL) {
-    free(state->response);
-    state->response = NULL;
-  }
-    
-  // If there is a challenge (data from the server) we need to give it to GSS
-  if(challenge && *challenge) {
-    int len;
-    input_token.value = base64_decode(challenge, &len);
-    input_token.length = len;
-  }
-    
-  // Do GSSAPI step
-  maj_stat = gss_unwrap(&min_stat,
-                          state->context,
-                          &input_token,
-                          &output_token,
-                          NULL,
-                          NULL);
-    
-  if(maj_stat != GSS_S_COMPLETE) {
-    response = gss_error(maj_stat, min_stat);
-    response->return_code = AUTH_GSS_ERROR;
-    goto end;
-  } else {
-    ret = AUTH_GSS_COMPLETE;    
-  }
-    
-  // Grab the client response
-  if(output_token.length) {
-    state->response = base64_encode((const unsigned char *)output_token.value, output_token.length);
-    maj_stat = gss_release_buffer(&min_stat, &output_token);
-  }
-end:
-  if(output_token.value)
-    gss_release_buffer(&min_stat, &output_token);
-  if(input_token.value)
-    free(input_token.value);
-
-  if(response == NULL) {
-    response = calloc(1, sizeof(gss_client_response));
-    response->return_code = ret;
-  }
-
-  // Return the response
-  return response;
-}
-
-gss_client_response *authenticate_gss_client_wrap(gss_client_state* state, const char* challenge, const char* user) {
-  OM_uint32 maj_stat;
-  OM_uint32 min_stat;
-  gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
-  gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
-  int ret = AUTH_GSS_CONTINUE;
-  gss_client_response *response = NULL;
-  char buf[4096], server_conf_flags;
-  unsigned long buf_size;
-    
-  // Always clear out the old response
-  if(state->response != NULL) {
-    free(state->response);
-    state->response = NULL;
-  }
-    
-  if(challenge && *challenge) {
-    int len;
-    input_token.value = base64_decode(challenge, &len);
-    input_token.length = len;
-  }
-    
-  if(user) {
-    // get bufsize
-    server_conf_flags = ((char*) input_token.value)[0];
-    ((char*) input_token.value)[0] = 0;
-    buf_size = ntohl(*((long *) input_token.value));
-    free(input_token.value);
-#ifdef PRINTFS
-    printf("User: %s, %c%c%c\n", user,
-               server_conf_flags & GSS_AUTH_P_NONE      ? 'N' : '-',
-               server_conf_flags & GSS_AUTH_P_INTEGRITY ? 'I' : '-',
-               server_conf_flags & GSS_AUTH_P_PRIVACY   ? 'P' : '-');
-    printf("Maximum GSS token size is %ld\n", buf_size);
-#endif
-        
-    // agree to terms (hack!)
-    buf_size = htonl(buf_size); // not relevant without integrity/privacy
-    memcpy(buf, &buf_size, 4);
-    buf[0] = GSS_AUTH_P_NONE;
-    // server decides if principal can log in as user
-    strncpy(buf + 4, user, sizeof(buf) - 4);
-    input_token.value = buf;
-    input_token.length = 4 + strlen(user);
-  }
-    
-  // Do GSSAPI wrap
-  maj_stat = gss_wrap(&min_stat,
-            state->context,
-            0,
-            GSS_C_QOP_DEFAULT,
-            &input_token,
-            NULL,
-            &output_token);
-    
-  if (maj_stat != GSS_S_COMPLETE) {
-    response = gss_error(maj_stat, min_stat);
-    response->return_code = AUTH_GSS_ERROR;
-    goto end;
-  } else
-    ret = AUTH_GSS_COMPLETE;
-  // Grab the client response to send back to the server
-  if (output_token.length) {
-    state->response = base64_encode((const unsigned char *)output_token.value, output_token.length);;
-    maj_stat = gss_release_buffer(&min_stat, &output_token);
-  }
-end:
-  if (output_token.value)
-    gss_release_buffer(&min_stat, &output_token);
-
-  if(response == NULL) {
-    response = calloc(1, sizeof(gss_client_response));
-    response->return_code = ret;
-  }
-
-  // Return the response
-  return response;
-}
-
-int authenticate_gss_server_init(const char *service, gss_server_state *state)
-{
-    OM_uint32 maj_stat;
-    OM_uint32 min_stat;
-    gss_buffer_desc name_token = GSS_C_EMPTY_BUFFER;
-    int ret = AUTH_GSS_COMPLETE;
-    
-    state->context = GSS_C_NO_CONTEXT;
-    state->server_name = GSS_C_NO_NAME;
-    state->client_name = GSS_C_NO_NAME;
-    state->server_creds = GSS_C_NO_CREDENTIAL;
-    state->client_creds = GSS_C_NO_CREDENTIAL;
-    state->username = NULL;
-    state->targetname = NULL;
-    state->response = NULL;
-    
-    // Server name may be empty which means we aren't going to create our own creds
-    size_t service_len = strlen(service);
-    if (service_len != 0)
-    {
-        // Import server name first
-        name_token.length = strlen(service);
-        name_token.value = (char *)service;
-        
-        maj_stat = gss_import_name(&min_stat, &name_token, GSS_C_NT_HOSTBASED_SERVICE, &state->server_name);
-        
-        if (GSS_ERROR(maj_stat))
-        {
-            set_gss_error(maj_stat, min_stat);
-            ret = AUTH_GSS_ERROR;
-            goto end;
-        }
-        
-        // Get credentials
-        maj_stat = gss_acquire_cred(&min_stat, state->server_name, GSS_C_INDEFINITE,
-                                    GSS_C_NO_OID_SET, GSS_C_ACCEPT, &state->server_creds, NULL, NULL);
-        
-        if (GSS_ERROR(maj_stat))
-        {
-            set_gss_error(maj_stat, min_stat);
-            ret = AUTH_GSS_ERROR;
-            goto end;
-        }
-    }
-    
-end:
-    return ret;
-}
-
-int authenticate_gss_server_clean(gss_server_state *state)
-{
-    OM_uint32 min_stat;
-    int ret = AUTH_GSS_COMPLETE;
-    
-    if (state->context != GSS_C_NO_CONTEXT)
-        gss_delete_sec_context(&min_stat, &state->context, GSS_C_NO_BUFFER);
-    if (state->server_name != GSS_C_NO_NAME)
-        gss_release_name(&min_stat, &state->server_name);
-    if (state->client_name != GSS_C_NO_NAME)
-        gss_release_name(&min_stat, &state->client_name);
-    if (state->server_creds != GSS_C_NO_CREDENTIAL)
-        gss_release_cred(&min_stat, &state->server_creds);
-    if (state->client_creds != GSS_C_NO_CREDENTIAL)
-        gss_release_cred(&min_stat, &state->client_creds);
-    if (state->username != NULL)
-    {
-        free(state->username);
-        state->username = NULL;
-    }
-    if (state->targetname != NULL)
-    {
-        free(state->targetname);
-        state->targetname = NULL;
-    }
-    if (state->response != NULL)
-    {
-        free(state->response);
-        state->response = NULL;
-    }
-    
-    return ret;
-}
-
-/*int authenticate_gss_server_step(gss_server_state *state, const char *challenge)
-{
-    OM_uint32 maj_stat;
-    OM_uint32 min_stat;
-    gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
-    gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
-    int ret = AUTH_GSS_CONTINUE;
-    
-    // Always clear out the old response
-    if (state->response != NULL)
-    {
-        free(state->response);
-        state->response = NULL;
-    }
-    
-    // If there is a challenge (data from the server) we need to give it to GSS
-    if (challenge && *challenge)
-    {
-        int len;
-        input_token.value = base64_decode(challenge, &len);
-        input_token.length = len;
-    }
-    else
-    {
-        PyErr_SetString(KrbException_class, "No challenge parameter in request from client");
-        ret = AUTH_GSS_ERROR;
-        goto end;
-    }
-    
-    maj_stat = gss_accept_sec_context(&min_stat,
-                                      &state->context,
-                                      state->server_creds,
-                                      &input_token,
-                                      GSS_C_NO_CHANNEL_BINDINGS,
-                                      &state->client_name,
-                                      NULL,
-                                      &output_token,
-                                      NULL,
-                                      NULL,
-                                      &state->client_creds);
-    
-    if (GSS_ERROR(maj_stat))
-    {
-        set_gss_error(maj_stat, min_stat);
-        ret = AUTH_GSS_ERROR;
-        goto end;
-    }
-    
-    // Grab the server response to send back to the client
-    if (output_token.length)
-    {
-        state->response = base64_encode((const unsigned char *)output_token.value, output_token.length);;
-        maj_stat = gss_release_buffer(&min_stat, &output_token);
-    }
-    
-    // Get the user name
-    maj_stat = gss_display_name(&min_stat, state->client_name, &output_token, NULL);
-    if (GSS_ERROR(maj_stat))
-    {
-        set_gss_error(maj_stat, min_stat);
-        ret = AUTH_GSS_ERROR;
-        goto end;
-    }
-    state->username = (char *)malloc(output_token.length + 1);
-    strncpy(state->username, (char*) output_token.value, output_token.length);
-    state->username[output_token.length] = 0;
-    
-    // Get the target name if no server creds were supplied
-    if (state->server_creds == GSS_C_NO_CREDENTIAL)
-    {
-        gss_name_t target_name = GSS_C_NO_NAME;
-        maj_stat = gss_inquire_context(&min_stat, state->context, NULL, &target_name, NULL, NULL, NULL, NULL, NULL);
-        if (GSS_ERROR(maj_stat))
-        {
-            set_gss_error(maj_stat, min_stat);
-            ret = AUTH_GSS_ERROR;
-            goto end;
-        }
-        maj_stat = gss_display_name(&min_stat, target_name, &output_token, NULL);
-        if (GSS_ERROR(maj_stat))
-        {
-            set_gss_error(maj_stat, min_stat);
-            ret = AUTH_GSS_ERROR;
-            goto end;
-        }
-        state->targetname = (char *)malloc(output_token.length + 1);
-        strncpy(state->targetname, (char*) output_token.value, output_token.length);
-        state->targetname[output_token.length] = 0;
-    }
-
-    ret = AUTH_GSS_COMPLETE;
-    
-end:
-    if (output_token.length)
-        gss_release_buffer(&min_stat, &output_token);
-    if (input_token.value)
-        free(input_token.value);
-    return ret;
-}
-*/
-
-static void set_gss_error(OM_uint32 err_maj, OM_uint32 err_min) {
-  OM_uint32 maj_stat, min_stat;
-  OM_uint32 msg_ctx = 0;
-  gss_buffer_desc status_string;
-  char buf_maj[512];
-  char buf_min[512];
-  
-  do {
-    maj_stat = gss_display_status (&min_stat,
-                                   err_maj,
-                                   GSS_C_GSS_CODE,
-                                   GSS_C_NO_OID,
-                                   &msg_ctx,
-                                   &status_string);
-    if(GSS_ERROR(maj_stat))
-      break;
-    
-    strncpy(buf_maj, (char*) status_string.value, sizeof(buf_maj));
-    gss_release_buffer(&min_stat, &status_string);
-    
-    maj_stat = gss_display_status (&min_stat,
-                                   err_min,
-                                   GSS_C_MECH_CODE,
-                                   GSS_C_NULL_OID,
-                                   &msg_ctx,
-                                   &status_string);
-    if (!GSS_ERROR(maj_stat)) {
-
-      strncpy(buf_min, (char*) status_string.value , sizeof(buf_min));
-      gss_release_buffer(&min_stat, &status_string);
-    }
-  } while (!GSS_ERROR(maj_stat) && msg_ctx != 0);
-}
-
-gss_client_response *gss_error(OM_uint32 err_maj, OM_uint32 err_min) {
-  OM_uint32 maj_stat, min_stat;
-  OM_uint32 msg_ctx = 0;
-  gss_buffer_desc status_string;
-  char *buf_maj = calloc(512, sizeof(char));
-  char *buf_min = calloc(512, sizeof(char));
-  char *message = NULL;
-  gss_client_response *response = calloc(1, sizeof(gss_client_response));
-  
-  do {
-    maj_stat = gss_display_status (&min_stat,
-                                   err_maj,
-                                   GSS_C_GSS_CODE,
-                                   GSS_C_NO_OID,
-                                   &msg_ctx,
-                                   &status_string);
-    if(GSS_ERROR(maj_stat))
-      break;
-    
-    strncpy(buf_maj, (char*) status_string.value, 512);
-    gss_release_buffer(&min_stat, &status_string);
-    
-    maj_stat = gss_display_status (&min_stat,
-                                   err_min,
-                                   GSS_C_MECH_CODE,
-                                   GSS_C_NULL_OID,
-                                   &msg_ctx,
-                                   &status_string);
-    if(!GSS_ERROR(maj_stat)) {
-      strncpy(buf_min, (char*) status_string.value , 512);
-      gss_release_buffer(&min_stat, &status_string);
-    }
-  } while (!GSS_ERROR(maj_stat) && msg_ctx != 0);
-
-  // Join the strings
-  message = calloc(1026, 1);
-  // Join the two messages
-  sprintf(message, "%s, %s", buf_maj, buf_min);
-  // Free data
-  free(buf_min);
-  free(buf_maj);
-  // Set the message
-  response->message = message;
-  // Return the message
-  return response;
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.h
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.h b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.h
deleted file mode 100644
index 58ac0b7..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Copyright (c) 2006-2009 Apple Inc. All rights reserved.
- *
- * 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 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.
- **/
-#ifndef KERBEROS_GSS_H
-#define KERBEROS_GSS_H
-
-#include <gssapi/gssapi.h>
-#include <gssapi/gssapi_generic.h>
-#include <gssapi/gssapi_krb5.h>
-
-#define krb5_get_err_text(context,code) error_message(code)
-
-#define AUTH_GSS_ERROR      -1
-#define AUTH_GSS_COMPLETE    1
-#define AUTH_GSS_CONTINUE    0
-
-#define GSS_AUTH_P_NONE         1
-#define GSS_AUTH_P_INTEGRITY    2
-#define GSS_AUTH_P_PRIVACY      4
-
-typedef struct {
-  int return_code;
-  char *message;
-} gss_client_response;
-
-typedef struct {
-  gss_ctx_id_t     context;
-  gss_name_t       server_name;
-  long int         gss_flags;
-  char*            username;
-  char*            response;
-} gss_client_state;
-
-typedef struct {
-  gss_ctx_id_t     context;
-  gss_name_t       server_name;
-  gss_name_t       client_name;
-  gss_cred_id_t    server_creds;
-  gss_cred_id_t    client_creds;
-  char*            username;
-  char*            targetname;
-  char*            response;
-} gss_server_state;
-
-// char* server_principal_details(const char* service, const char* hostname);
-
-gss_client_response *authenticate_gss_client_init(const char* service, long int gss_flags, gss_client_state* state);
-gss_client_response *authenticate_gss_client_clean(gss_client_state *state);
-gss_client_response *authenticate_gss_client_step(gss_client_state *state, const char *challenge);
-gss_client_response *authenticate_gss_client_unwrap(gss_client_state* state, const char* challenge);
-gss_client_response *authenticate_gss_client_wrap(gss_client_state* state, const char* challenge, const char* user);
-
-int authenticate_gss_server_init(const char* service, gss_server_state* state);
-int authenticate_gss_server_clean(gss_server_state *state);
-// int authenticate_gss_server_step(gss_server_state *state, const char *challenge);
-
-gss_client_response *gss_error(OM_uint32 err_maj, OM_uint32 err_min);
-#endif

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/sspi.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/sspi.js b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/sspi.js
deleted file mode 100644
index d9120fb..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/sspi.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Load the native SSPI classes
-var kerberos = require('../build/Release/kerberos')
-  , Kerberos = kerberos.Kerberos
-  , SecurityBuffer = require('./win32/wrappers/security_buffer').SecurityBuffer
-  , SecurityBufferDescriptor = require('./win32/wrappers/security_buffer_descriptor').SecurityBufferDescriptor
-  , SecurityCredentials = require('./win32/wrappers/security_credentials').SecurityCredentials
-  , SecurityContext = require('./win32/wrappers/security_context').SecurityContext;
-var SSPI = function() {
-}
-
-exports.SSPI = SSPI;
-exports.SecurityBuffer = SecurityBuffer;
-exports.SecurityBufferDescriptor = SecurityBufferDescriptor;
-exports.SecurityCredentials = SecurityCredentials;
-exports.SecurityContext = SecurityContext;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.c
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.c b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.c
deleted file mode 100644
index 502a021..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * Copyright (c) 2006-2008 Apple Inc. All rights reserved.
- *
- * 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 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.
- **/
-
-#include "base64.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-// base64 tables
-static char basis_64[] =
-    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-static signed char index_64[128] =
-{
-    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
-    52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1,
-    -1, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,
-    15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
-    -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
-    41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1
-};
-#define CHAR64(c)  (((c) < 0 || (c) > 127) ? -1 : index_64[(c)])
-
-// base64_encode    :    base64 encode
-//
-// value            :    data to encode
-// vlen             :    length of data
-// (result)         :    new char[] - c-str of result
-char *base64_encode(const unsigned char *value, int vlen)
-{
-    char *result = (char *)malloc((vlen * 4) / 3 + 5);
-    char *out = result;
-    unsigned char oval;
-
-    while (vlen >= 3)
-    {
-        *out++ = basis_64[value[0] >> 2];
-        *out++ = basis_64[((value[0] << 4) & 0x30) | (value[1] >> 4)];
-        *out++ = basis_64[((value[1] << 2) & 0x3C) | (value[2] >> 6)];
-        *out++ = basis_64[value[2] & 0x3F];
-        value += 3;
-        vlen -= 3;
-    }
-    if (vlen > 0)
-    {
-        *out++ = basis_64[value[0] >> 2];
-        oval = (value[0] << 4) & 0x30;
-        if (vlen > 1) oval |= value[1] >> 4;
-        *out++ = basis_64[oval];
-        *out++ = (vlen < 2) ? '=' : basis_64[(value[1] << 2) & 0x3C];
-        *out++ = '=';
-    }
-    *out = '\0';
-
-    return result;
-}
-
-// base64_decode    :    base64 decode
-//
-// value            :    c-str to decode
-// rlen             :    length of decoded result
-// (result)         :    new unsigned char[] - decoded result
-unsigned char *base64_decode(const char *value, int *rlen)
-{
-    int c1, c2, c3, c4;
-    int vlen = (int)strlen(value);
-    unsigned char *result =(unsigned char *)malloc((vlen * 3) / 4 + 1);
-    unsigned char *out = result;
-    *rlen = 0;
-
-    while (1)
-    {
-        if (value[0]==0)
-            return result;
-        c1 = value[0];
-        if (CHAR64(c1) == -1)
-            goto base64_decode_error;;
-        c2 = value[1];
-        if (CHAR64(c2) == -1)
-            goto base64_decode_error;;
-        c3 = value[2];
-        if ((c3 != '=') && (CHAR64(c3) == -1))
-            goto base64_decode_error;;
-        c4 = value[3];
-        if ((c4 != '=') && (CHAR64(c4) == -1))
-            goto base64_decode_error;;
-
-        value += 4;
-        *out++ = (CHAR64(c1) << 2) | (CHAR64(c2) >> 4);
-        *rlen += 1;
-        if (c3 != '=')
-        {
-            *out++ = ((CHAR64(c2) << 4) & 0xf0) | (CHAR64(c3) >> 2);
-            *rlen += 1;
-            if (c4 != '=')
-            {
-                *out++ = ((CHAR64(c3) << 6) & 0xc0) | CHAR64(c4);
-                *rlen += 1;
-            }
-        }
-    }
-
-base64_decode_error:
-    *result = 0;
-    *rlen = 0;
-    return result;
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.h
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.h b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.h
deleted file mode 100644
index f0e1f06..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Copyright (c) 2006-2008 Apple Inc. All rights reserved.
- *
- * 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 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.
- **/
-
-char *base64_encode(const unsigned char *value, int vlen);
-unsigned char *base64_decode(const char *value, int *rlen);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.cc
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.cc b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.cc
deleted file mode 100644
index 7fd521b..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-#include "kerberos.h"
-#include <stdlib.h>
-#include <tchar.h>
-#include "base64.h"
-#include "wrappers/security_buffer.h"
-#include "wrappers/security_buffer_descriptor.h"
-#include "wrappers/security_context.h"
-#include "wrappers/security_credentials.h"
-
-Persistent<FunctionTemplate> Kerberos::constructor_template;
-
-// VException object (causes throw in calling code)
-static Handle<Value> VException(const char *msg) {
-  HandleScope scope;
-  return ThrowException(Exception::Error(String::New(msg)));
-}
-
-Kerberos::Kerberos() : ObjectWrap() {
-}
-
-void Kerberos::Initialize(v8::Handle<v8::Object> target) {
-  // Grab the scope of the call from Node
-  HandleScope scope;
-  // Define a new function template
-  Local<FunctionTemplate> t = FunctionTemplate::New(Kerberos::New);
-  constructor_template = Persistent<FunctionTemplate>::New(t);
-  constructor_template->InstanceTemplate()->SetInternalFieldCount(1);
-  constructor_template->SetClassName(String::NewSymbol("Kerberos"));
-  // Set the symbol
-  target->ForceSet(String::NewSymbol("Kerberos"), constructor_template->GetFunction());
-}
-
-Handle<Value> Kerberos::New(const Arguments &args) {
-  // Load the security.dll library
-  load_library();
-  // Create a Kerberos instance
-  Kerberos *kerberos = new Kerberos();
-  // Return the kerberos object
-  kerberos->Wrap(args.This());
-  return args.This();
-}
-
-// Exporting function
-extern "C" void init(Handle<Object> target) {
-  HandleScope scope;
-  Kerberos::Initialize(target);
-  SecurityContext::Initialize(target);
-  SecurityBuffer::Initialize(target);
-  SecurityBufferDescriptor::Initialize(target);
-  SecurityCredentials::Initialize(target);
-}
-
-NODE_MODULE(kerberos, init);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.h
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.h b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.h
deleted file mode 100644
index 8443e78..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef KERBEROS_H
-#define KERBEROS_H
-
-#include <node.h>
-#include <node_object_wrap.h>
-#include <v8.h>
-
-extern "C" {
-  #include "kerberos_sspi.h"
-  #include "base64.h"
-}
-
-using namespace v8;
-using namespace node;
-
-class Kerberos : public ObjectWrap {
-
-public:
-  Kerberos();
-  ~Kerberos() {};
-
-  // Constructor used for creating new Kerberos objects from C++
-  static Persistent<FunctionTemplate> constructor_template;
-
-  // Initialize function for the object
-  static void Initialize(Handle<Object> target);
-
-  // Method available
-  static Handle<Value> AcquireAlternateCredentials(const Arguments &args);
-  static Handle<Value> PrepareOutboundPackage(const Arguments &args);
-  static Handle<Value> DecryptMessage(const Arguments &args);
-  static Handle<Value> EncryptMessage(const Arguments &args);
-  static Handle<Value> QueryContextAttributes(const Arguments &args);
-
-private:
-  static Handle<Value> New(const Arguments &args);  
-
-  // Pointer to context object
-  SEC_WINNT_AUTH_IDENTITY m_Identity;
-  // credentials
-  CredHandle m_Credentials;
-  // Expiry time for ticket
-  TimeStamp Expiration;
-  // package info
-  SecPkgInfo m_PkgInfo;
-  // context
-  CtxtHandle m_Context;
-  // Do we have a context
-  bool m_HaveContext;
-  // Attributes
-  DWORD CtxtAttr;
-
-  // Handles the uv calls
-  static void Process(uv_work_t* work_req);
-  // Called after work is done
-  static void After(uv_work_t* work_req);
-};
-
-#endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.c
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.c b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.c
deleted file mode 100644
index d75c9ab..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.c
+++ /dev/null
@@ -1,244 +0,0 @@
-#include "kerberos_sspi.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-static HINSTANCE _sspi_security_dll = NULL; 
-static HINSTANCE _sspi_secur32_dll = NULL;
-
-/**
- * Encrypt A Message
- */
-SECURITY_STATUS SEC_ENTRY _sspi_EncryptMessage(PCtxtHandle phContext, unsigned long fQOP, PSecBufferDesc pMessage, unsigned long MessageSeqNo) {
-  // Create function pointer instance
-  encryptMessage_fn pfn_encryptMessage = NULL;
-
-  // Return error if library not loaded
-  if(_sspi_security_dll == NULL) return -1;
-
-  // Map function to library method
-  pfn_encryptMessage = (encryptMessage_fn)GetProcAddress(_sspi_security_dll, "EncryptMessage");
-  // Check if the we managed to map function pointer
-  if(!pfn_encryptMessage) {
-    printf("GetProcAddress failed.\n");
-    return -2;
-  }
-
-  // Call the function
-  return (*pfn_encryptMessage)(phContext, fQOP, pMessage, MessageSeqNo);
-}
-
-/**
- * Acquire Credentials
- */
-SECURITY_STATUS SEC_ENTRY _sspi_AcquireCredentialsHandle(
-  LPSTR pszPrincipal, LPSTR pszPackage, unsigned long fCredentialUse,
-  void * pvLogonId, void * pAuthData, SEC_GET_KEY_FN pGetKeyFn, void * pvGetKeyArgument,
-  PCredHandle phCredential, PTimeStamp ptsExpiry
-) {
-  SECURITY_STATUS     status;
-  // Create function pointer instance
-  acquireCredentialsHandle_fn pfn_acquireCredentialsHandle = NULL;
-
-  // Return error if library not loaded
-  if(_sspi_security_dll == NULL) return -1;
-
-  // Map function
-  #ifdef _UNICODE
-      pfn_acquireCredentialsHandle = (acquireCredentialsHandle_fn)GetProcAddress(_sspi_security_dll, "AcquireCredentialsHandleW");
-  #else
-      pfn_acquireCredentialsHandle = (acquireCredentialsHandle_fn)GetProcAddress(_sspi_security_dll, "AcquireCredentialsHandleA");
-  #endif
-
-  // Check if the we managed to map function pointer
-  if(!pfn_acquireCredentialsHandle) {
-    printf("GetProcAddress failed.\n");
-    return -2;
-  }
-
-  // Status
-  status = (*pfn_acquireCredentialsHandle)(pszPrincipal, pszPackage, fCredentialUse,
-      pvLogonId, pAuthData, pGetKeyFn, pvGetKeyArgument, phCredential, ptsExpiry
-    );
-
-  // Call the function
-  return status;
-}
-
-/**
- * Delete Security Context
- */
-SECURITY_STATUS SEC_ENTRY _sspi_DeleteSecurityContext(PCtxtHandle phContext) {
-  // Create function pointer instance
-  deleteSecurityContext_fn pfn_deleteSecurityContext = NULL;
-
-  // Return error if library not loaded
-  if(_sspi_security_dll == NULL) return -1;
-  // Map function
-  pfn_deleteSecurityContext = (deleteSecurityContext_fn)GetProcAddress(_sspi_security_dll, "DeleteSecurityContext");
-
-  // Check if the we managed to map function pointer
-  if(!pfn_deleteSecurityContext) {
-    printf("GetProcAddress failed.\n");
-    return -2;
-  }
-
-  // Call the function
-  return (*pfn_deleteSecurityContext)(phContext);
-}
-
-/**
- * Decrypt Message
- */
-SECURITY_STATUS SEC_ENTRY _sspi_DecryptMessage(PCtxtHandle phContext, PSecBufferDesc pMessage, unsigned long MessageSeqNo, unsigned long pfQOP) {
-  // Create function pointer instance
-  decryptMessage_fn pfn_decryptMessage = NULL;
-
-  // Return error if library not loaded
-  if(_sspi_security_dll == NULL) return -1;
-  // Map function
-  pfn_decryptMessage = (decryptMessage_fn)GetProcAddress(_sspi_security_dll, "DecryptMessage");
-
-  // Check if the we managed to map function pointer
-  if(!pfn_decryptMessage) {
-    printf("GetProcAddress failed.\n");
-    return -2;
-  }
-
-  // Call the function
-  return (*pfn_decryptMessage)(phContext, pMessage, MessageSeqNo, pfQOP);
-}
-
-/**
- * Initialize Security Context
- */
-SECURITY_STATUS SEC_ENTRY _sspi_initializeSecurityContext(
-  PCredHandle phCredential, PCtxtHandle phContext,
-  LPSTR pszTargetName, unsigned long fContextReq, 
-  unsigned long Reserved1, unsigned long TargetDataRep, 
-  PSecBufferDesc pInput, unsigned long Reserved2,
-  PCtxtHandle phNewContext, PSecBufferDesc pOutput,
-  unsigned long * pfContextAttr, PTimeStamp ptsExpiry
-) {
-  SECURITY_STATUS status;
-  // Create function pointer instance
-  initializeSecurityContext_fn pfn_initializeSecurityContext = NULL;
-
-  // Return error if library not loaded
-  if(_sspi_security_dll == NULL) return -1;
-  
-  // Map function
-  #ifdef _UNICODE
-    pfn_initializeSecurityContext = (initializeSecurityContext_fn)GetProcAddress(_sspi_security_dll, "InitializeSecurityContextW");
-  #else
-    pfn_initializeSecurityContext = (initializeSecurityContext_fn)GetProcAddress(_sspi_security_dll, "InitializeSecurityContextA");
-  #endif
-
-  // Check if the we managed to map function pointer
-  if(!pfn_initializeSecurityContext) {
-    printf("GetProcAddress failed.\n");
-    return -2;
-  }
-
-  // Execute intialize context
-  status = (*pfn_initializeSecurityContext)(
-    phCredential, phContext, pszTargetName, fContextReq, 
-    Reserved1, TargetDataRep, pInput, Reserved2,
-    phNewContext, pOutput, pfContextAttr, ptsExpiry
-  );
-
-  // Call the function
-  return status;
-}
-/**
- * Query Context Attributes
- */
-SECURITY_STATUS SEC_ENTRY _sspi_QueryContextAttributes(
-  PCtxtHandle phContext, unsigned long ulAttribute, void * pBuffer
-) {
-  // Create function pointer instance
-  queryContextAttributes_fn pfn_queryContextAttributes = NULL;
-
-  // Return error if library not loaded
-  if(_sspi_security_dll == NULL) return -1;
-
-  #ifdef _UNICODE
-    pfn_queryContextAttributes = (queryContextAttributes_fn)GetProcAddress(_sspi_security_dll, "QueryContextAttributesW");
-  #else
-    pfn_queryContextAttributes = (queryContextAttributes_fn)GetProcAddress(_sspi_security_dll, "QueryContextAttributesA");
-  #endif
-
-  // Check if the we managed to map function pointer
-  if(!pfn_queryContextAttributes) {
-    printf("GetProcAddress failed.\n");
-    return -2;
-  }
-
-  // Call the function
-  return (*pfn_queryContextAttributes)(
-    phContext, ulAttribute, pBuffer
-  );
-}
-
-/**
- * InitSecurityInterface
- */
-PSecurityFunctionTable _ssip_InitSecurityInterface() {
-  INIT_SECURITY_INTERFACE InitSecurityInterface;
-  PSecurityFunctionTable pSecurityInterface = NULL;
-
-  // Return error if library not loaded
-  if(_sspi_security_dll == NULL) return NULL;
-
-  #ifdef _UNICODE
-    // Get the address of the InitSecurityInterface function.
-    InitSecurityInterface = (INIT_SECURITY_INTERFACE) GetProcAddress (
-                                          _sspi_secur32_dll, 
-                                          TEXT("InitSecurityInterfaceW"));
-  #else
-    // Get the address of the InitSecurityInterface function.
-    InitSecurityInterface = (INIT_SECURITY_INTERFACE) GetProcAddress (
-                                          _sspi_secur32_dll, 
-                                          TEXT("InitSecurityInterfaceA"));
-  #endif
-
-  if(!InitSecurityInterface) {
-    printf (TEXT("Failed in getting the function address, Error: %x"), GetLastError ());
-    return NULL;
-  }
-
-  // Use InitSecurityInterface to get the function table.
-  pSecurityInterface = (*InitSecurityInterface)();
-
-  if(!pSecurityInterface) {
-    printf (TEXT("Failed in getting the function table, Error: %x"), GetLastError ());
-    return NULL;
-  }
-
-  return pSecurityInterface;
-}
-
-/**
- * Load security.dll dynamically
- */
-int load_library() {
-  DWORD err;
-  // Load the library
-  _sspi_security_dll = LoadLibrary("security.dll");
-
-  // Check if the library loaded
-  if(_sspi_security_dll == NULL) {
-    err = GetLastError();
-    return err;
-  }
-
-  // Load the library
-  _sspi_secur32_dll = LoadLibrary("secur32.dll");
-
-  // Check if the library loaded
-  if(_sspi_secur32_dll == NULL) {
-    err = GetLastError();
-    return err;
-  }
-
-  return 0;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.h
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.h b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.h
deleted file mode 100644
index a3008dc..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.h
+++ /dev/null
@@ -1,106 +0,0 @@
-#ifndef SSPI_C_H
-#define SSPI_C_H
-
-#define SECURITY_WIN32 1
-
-#include <windows.h>
-#include <sspi.h>
-
-/**
- * Encrypt A Message
- */
-SECURITY_STATUS SEC_ENTRY _sspi_EncryptMessage(PCtxtHandle phContext, unsigned long fQOP, PSecBufferDesc pMessage, unsigned long MessageSeqNo);
-
-typedef DWORD (WINAPI *encryptMessage_fn)(PCtxtHandle phContext, ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo);  
-
-/**
- * Acquire Credentials
- */
-SECURITY_STATUS SEC_ENTRY _sspi_AcquireCredentialsHandle(
-  LPSTR pszPrincipal,                 // Name of principal
-  LPSTR pszPackage,                   // Name of package
-  unsigned long fCredentialUse,       // Flags indicating use
-  void * pvLogonId,                   // Pointer to logon ID
-  void * pAuthData,                   // Package specific data
-  SEC_GET_KEY_FN pGetKeyFn,           // Pointer to GetKey() func
-  void * pvGetKeyArgument,            // Value to pass to GetKey()
-  PCredHandle phCredential,           // (out) Cred Handle
-  PTimeStamp ptsExpiry                // (out) Lifetime (optional)
-);
-
-typedef DWORD (WINAPI *acquireCredentialsHandle_fn)(
-    LPSTR pszPrincipal, LPSTR pszPackage, unsigned long fCredentialUse,
-    void * pvLogonId, void * pAuthData, SEC_GET_KEY_FN pGetKeyFn, void * pvGetKeyArgument,
-    PCredHandle phCredential, PTimeStamp ptsExpiry
-  );
-
-/**
- * Delete Security Context
- */
-SECURITY_STATUS SEC_ENTRY _sspi_DeleteSecurityContext(
-  PCtxtHandle phContext               // Context to delete
-);
-
-typedef DWORD (WINAPI *deleteSecurityContext_fn)(PCtxtHandle phContext);  
-
-/**
- * Decrypt Message
- */
-SECURITY_STATUS SEC_ENTRY _sspi_DecryptMessage(
-  PCtxtHandle phContext, 
-  PSecBufferDesc pMessage, 
-  unsigned long MessageSeqNo, 
-  unsigned long pfQOP
-);
-
-typedef DWORD (WINAPI *decryptMessage_fn)(
-  PCtxtHandle phContext, PSecBufferDesc pMessage, unsigned long MessageSeqNo, unsigned long pfQOP);
-
-/**
- * Initialize Security Context
- */
-SECURITY_STATUS SEC_ENTRY _sspi_initializeSecurityContext(
-  PCredHandle phCredential,       // Cred to base context
-  PCtxtHandle phContext,          // Existing context (OPT)
-  LPSTR pszTargetName,            // Name of target
-  unsigned long fContextReq,      // Context Requirements
-  unsigned long Reserved1,        // Reserved, MBZ
-  unsigned long TargetDataRep,    // Data rep of target
-  PSecBufferDesc pInput,          // Input Buffers
-  unsigned long Reserved2,        // Reserved, MBZ
-  PCtxtHandle phNewContext,       // (out) New Context handle
-  PSecBufferDesc pOutput,         // (inout) Output Buffers
-  unsigned long * pfContextAttr,  // (out) Context attrs
-  PTimeStamp ptsExpiry            // (out) Life span (OPT)
-);
-
-typedef DWORD (WINAPI *initializeSecurityContext_fn)(
-  PCredHandle phCredential, PCtxtHandle phContext, LPSTR pszTargetName, unsigned long fContextReq, 
-  unsigned long Reserved1, unsigned long TargetDataRep, PSecBufferDesc pInput, unsigned long Reserved2,
-  PCtxtHandle phNewContext, PSecBufferDesc pOutput, unsigned long * pfContextAttr, PTimeStamp ptsExpiry);
-
-/**
- * Query Context Attributes
- */
-SECURITY_STATUS SEC_ENTRY _sspi_QueryContextAttributes(
-  PCtxtHandle phContext,          // Context to query
-  unsigned long ulAttribute,      // Attribute to query
-  void * pBuffer                  // Buffer for attributes
-);
-
-typedef DWORD (WINAPI *queryContextAttributes_fn)(
-  PCtxtHandle phContext, unsigned long ulAttribute, void * pBuffer);
-
-/**
- * InitSecurityInterface
- */
-PSecurityFunctionTable _ssip_InitSecurityInterface();
-
-typedef DWORD (WINAPI *initSecurityInterface_fn) ();
-
-/**
- * Load security.dll dynamically
- */
-int load_library();
-
-#endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.cc
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.cc b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.cc
deleted file mode 100644
index e7a472f..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.cc
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "worker.h"
-
-Worker::Worker() {
-}
-
-Worker::~Worker() {  
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.h
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.h b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.h
deleted file mode 100644
index f73a4a7..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef WORKER_H_
-#define WORKER_H_
-
-#include <node.h>
-#include <node_object_wrap.h>
-#include <v8.h>
-
-using namespace node;
-using namespace v8;
-
-class Worker {
-  public:
-    Worker();
-    virtual ~Worker();
-
-    // libuv's request struct.
-    uv_work_t request;
-    // Callback
-    v8::Persistent<v8::Function> callback;
-    // Parameters
-    void *parameters;
-    // Results
-    void *return_value;
-    // Did we raise an error
-    bool error;
-    // The error message
-    char *error_message;
-    // Error code if not message
-    int error_code;
-    // Any return code
-    int return_code;
-    // Method we are going to fire
-    void (*execute)(Worker *worker);
-    Handle<Value> (*mapper)(Worker *worker);
-};
-
-#endif  // WORKER_H_

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.cc
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.cc b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.cc
deleted file mode 100644
index dd38b59..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.cc
+++ /dev/null
@@ -1,110 +0,0 @@
-#include <node.h>
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h>
-#include <v8.h>
-#include <node_buffer.h>
-#include <cstring>
-#include <cmath>
-#include <cstdlib>
-#include <iostream>
-#include <limits>
-
-#include "security_buffer.h"
-
-using namespace node;
-
-static Handle<Value> VException(const char *msg) {
-  HandleScope scope;
-  return ThrowException(Exception::Error(String::New(msg)));
-};
-
-Persistent<FunctionTemplate> SecurityBuffer::constructor_template;
-
-SecurityBuffer::SecurityBuffer(uint32_t security_type, size_t size) : ObjectWrap() {
-  this->size = size;
-  this->data = calloc(size, sizeof(char));
-  this->security_type = security_type;
-  // Set up the data in the sec_buffer
-  this->sec_buffer.BufferType = security_type;
-  this->sec_buffer.cbBuffer = (unsigned long)size;
-  this->sec_buffer.pvBuffer = this->data;  
-}
-
-SecurityBuffer::SecurityBuffer(uint32_t security_type, size_t size, void *data) : ObjectWrap() {
-  this->size = size;
-  this->data = data;
-  this->security_type = security_type;
-  // Set up the data in the sec_buffer
-  this->sec_buffer.BufferType = security_type;
-  this->sec_buffer.cbBuffer = (unsigned long)size;
-  this->sec_buffer.pvBuffer = this->data;  
-}
-
-SecurityBuffer::~SecurityBuffer() {
-  free(this->data);
-}
-
-Handle<Value> SecurityBuffer::New(const Arguments &args) {
-  HandleScope scope;  
-  SecurityBuffer *security_obj;
-
-  if(args.Length() != 2)
-    return VException("Two parameters needed integer buffer type and  [32 bit integer/Buffer] required");
-
-  if(!args[0]->IsInt32())
-    return VException("Two parameters needed integer buffer type and  [32 bit integer/Buffer] required");
-
-  if(!args[1]->IsInt32() && !Buffer::HasInstance(args[1]))
-    return VException("Two parameters needed integer buffer type and  [32 bit integer/Buffer] required");
-
-  // Unpack buffer type
-  uint32_t buffer_type = args[0]->ToUint32()->Value();
-
-  // If we have an integer
-  if(args[1]->IsInt32()) {
-    security_obj = new SecurityBuffer(buffer_type, args[1]->ToUint32()->Value());
-  } else {
-    // Get the length of the Buffer
-    size_t length = Buffer::Length(args[1]->ToObject());
-    // Allocate space for the internal void data pointer
-    void *data = calloc(length, sizeof(char));
-    // Write the data to out of V8 heap space
-    memcpy(data, Buffer::Data(args[1]->ToObject()), length);
-    // Create new SecurityBuffer
-    security_obj = new SecurityBuffer(buffer_type, length, data);
-  }
-  
-  // Wrap it
-  security_obj->Wrap(args.This());
-  // Return the object
-  return args.This();    
-}
-
-Handle<Value> SecurityBuffer::ToBuffer(const Arguments &args) {
-  HandleScope scope; 
-
-  // Unpack the Security Buffer object
-  SecurityBuffer *security_obj = ObjectWrap::Unwrap<SecurityBuffer>(args.This());
-  // Create a Buffer
-  Buffer *buffer = Buffer::New((char *)security_obj->data, (size_t)security_obj->size);
-
-  // Return the buffer
-  return scope.Close(buffer->handle_);  
-}
-
-void SecurityBuffer::Initialize(Handle<Object> target) {
-  // Grab the scope of the call from Node
-  HandleScope scope;
-  // Define a new function template
-  Local<FunctionTemplate> t = FunctionTemplate::New(New);
-  constructor_template = Persistent<FunctionTemplate>::New(t);
-  constructor_template->InstanceTemplate()->SetInternalFieldCount(1);
-  constructor_template->SetClassName(String::NewSymbol("SecurityBuffer"));
-
-  // Set up method for the Kerberos instance
-  NODE_SET_PROTOTYPE_METHOD(constructor_template, "toBuffer", ToBuffer);
- 
-  // Set up class
-  target->Set(String::NewSymbol("SecurityBuffer"), constructor_template->GetFunction());  
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.h
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.h b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.h
deleted file mode 100644
index d6a5675..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef SECURITY_BUFFER_H
-#define SECURITY_BUFFER_H
-
-#include <node.h>
-#include <node_object_wrap.h>
-#include <v8.h>
-
-#define SECURITY_WIN32 1
-
-#include <windows.h>
-#include <sspi.h>
-
-using namespace v8;
-using namespace node;
-
-class SecurityBuffer : public ObjectWrap {  
-  public:    
-    SecurityBuffer(uint32_t security_type, size_t size);
-    SecurityBuffer(uint32_t security_type, size_t size, void *data);
-    ~SecurityBuffer();    
-
-    // Internal values
-    void *data;
-    size_t size;
-    uint32_t security_type;
-    SecBuffer sec_buffer;
-
-    // Has instance check
-    static inline bool HasInstance(Handle<Value> val) {
-      if (!val->IsObject()) return false;
-      Local<Object> obj = val->ToObject();
-      return constructor_template->HasInstance(obj);
-    };
-
-    // Functions available from V8
-    static void Initialize(Handle<Object> target);    
-    static Handle<Value> ToBuffer(const Arguments &args);
-
-    // Constructor used for creating new Long objects from C++
-    static Persistent<FunctionTemplate> constructor_template;
-    
-  private:
-    static Handle<Value> New(const Arguments &args);
-};
-
-#endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.js b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.js
deleted file mode 100644
index 4996163..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var SecurityBufferNative = require('../../../build/Release/kerberos').SecurityBuffer;
-
-// Add some attributes
-SecurityBufferNative.VERSION  = 0;
-SecurityBufferNative.EMPTY    = 0;
-SecurityBufferNative.DATA     = 1;
-SecurityBufferNative.TOKEN    = 2;
-SecurityBufferNative.PADDING  = 9;
-SecurityBufferNative.STREAM   = 10;
-
-// Export the modified class
-exports.SecurityBuffer = SecurityBufferNative;
\ No newline at end of file



[29/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie/index.js b/web/demos/package/node_modules/express/node_modules/cookie/index.js
deleted file mode 100644
index 16bdb65..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie/index.js
+++ /dev/null
@@ -1,70 +0,0 @@
-
-/// Serialize the a name value pair into a cookie string suitable for
-/// http headers. An optional options object specified cookie parameters
-///
-/// serialize('foo', 'bar', { httpOnly: true })
-///   => "foo=bar; httpOnly"
-///
-/// @param {String} name
-/// @param {String} val
-/// @param {Object} options
-/// @return {String}
-var serialize = function(name, val, opt){
-    opt = opt || {};
-    var enc = opt.encode || encode;
-    var pairs = [name + '=' + enc(val)];
-
-    if (opt.maxAge) pairs.push('Max-Age=' + opt.maxAge);
-    if (opt.domain) pairs.push('Domain=' + opt.domain);
-    if (opt.path) pairs.push('Path=' + opt.path);
-    if (opt.expires) pairs.push('Expires=' + opt.expires.toUTCString());
-    if (opt.httpOnly) pairs.push('HttpOnly');
-    if (opt.secure) pairs.push('Secure');
-
-    return pairs.join('; ');
-};
-
-/// Parse the given cookie header string into an object
-/// The object has the various cookies as keys(names) => values
-/// @param {String} str
-/// @return {Object}
-var parse = function(str, opt) {
-    opt = opt || {};
-    var obj = {}
-    var pairs = str.split(/[;,] */);
-    var dec = opt.decode || decode;
-
-    pairs.forEach(function(pair) {
-        var eq_idx = pair.indexOf('=')
-
-        // skip things that don't look like key=value
-        if (eq_idx < 0) {
-            return;
-        }
-
-        var key = pair.substr(0, eq_idx).trim()
-        var val = pair.substr(++eq_idx, pair.length).trim();
-
-        // quoted values
-        if ('"' == val[0]) {
-            val = val.slice(1, -1);
-        }
-
-        // only assign once
-        if (undefined == obj[key]) {
-            try {
-                obj[key] = dec(val);
-            } catch (e) {
-                obj[key] = val;
-            }
-        }
-    });
-
-    return obj;
-};
-
-var encode = encodeURIComponent;
-var decode = decodeURIComponent;
-
-module.exports.serialize = serialize;
-module.exports.parse = parse;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie/package.json b/web/demos/package/node_modules/express/node_modules/cookie/package.json
deleted file mode 100644
index aef4e07..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-  "author": {
-    "name": "Roman Shtylman",
-    "email": "shtylman@gmail.com"
-  },
-  "name": "cookie",
-  "description": "cookie parsing and serialization",
-  "version": "0.1.0",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/shtylman/node-cookie.git"
-  },
-  "keywords": [
-    "cookie",
-    "cookies"
-  ],
-  "main": "index.js",
-  "scripts": {
-    "test": "mocha"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "mocha": "1.x.x"
-  },
-  "optionalDependencies": {},
-  "engines": {
-    "node": "*"
-  },
-  "readme": "# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) #\n\ncookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.\n\nSee [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies.\n\n## how?\n\n```\nnpm install cookie\n```\n\n```javascript\nvar cookie = require('cookie');\n\nvar hdr = cookie.serialize('foo', 'bar');\n// hdr = 'foo=bar';\n\nvar cookies = cookie.parse('foo=bar; cat=meow; dog=ruff');\n// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' };\n```\n\n## more\n\nThe serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values.\n\n### path\n> cookie path\n\n### expires\n> absolute expiration date for the cookie (Date object)\n\n### maxAge\n> relative max 
 age of the cookie from when the client receives it (seconds)\n\n### domain\n> domain for the cookie\n\n### secure\n> true or false\n\n### httpOnly\n> true or false\n\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/shtylman/node-cookie/issues"
-  },
-  "homepage": "https://github.com/shtylman/node-cookie",
-  "_id": "cookie@0.1.0",
-  "_from": "cookie@0.1.0"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie/test/mocha.opts
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie/test/mocha.opts b/web/demos/package/node_modules/express/node_modules/cookie/test/mocha.opts
deleted file mode 100644
index e2bfcc5..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie/test/mocha.opts
+++ /dev/null
@@ -1 +0,0 @@
---ui qunit

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie/test/parse.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie/test/parse.js b/web/demos/package/node_modules/express/node_modules/cookie/test/parse.js
deleted file mode 100644
index c6c27a2..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie/test/parse.js
+++ /dev/null
@@ -1,44 +0,0 @@
-
-var assert = require('assert');
-
-var cookie = require('..');
-
-suite('parse');
-
-test('basic', function() {
-    assert.deepEqual({ foo: 'bar' }, cookie.parse('foo=bar'));
-    assert.deepEqual({ foo: '123' }, cookie.parse('foo=123'));
-});
-
-test('ignore spaces', function() {
-    assert.deepEqual({ FOO: 'bar', baz: 'raz' },
-            cookie.parse('FOO    = bar;   baz  =   raz'));
-});
-
-test('escaping', function() {
-    assert.deepEqual({ foo: 'bar=123456789&name=Magic+Mouse' },
-            cookie.parse('foo="bar=123456789&name=Magic+Mouse"'));
-
-    assert.deepEqual({ email: ' ",;/' },
-            cookie.parse('email=%20%22%2c%3b%2f'));
-});
-
-test('ignore escaping error and return original value', function() {
-    assert.deepEqual({ foo: '%1', bar: 'bar' }, cookie.parse('foo=%1;bar=bar'));
-});
-
-test('ignore non values', function() {
-    assert.deepEqual({ foo: '%1', bar: 'bar' }, cookie.parse('foo=%1;bar=bar;HttpOnly;Secure'));
-});
-
-test('unencoded', function() {
-    assert.deepEqual({ foo: 'bar=123456789&name=Magic+Mouse' },
-            cookie.parse('foo="bar=123456789&name=Magic+Mouse"',{
-                decode: function(value) { return value; }
-            }));
-
-    assert.deepEqual({ email: '%20%22%2c%3b%2f' },
-            cookie.parse('email=%20%22%2c%3b%2f',{
-                decode: function(value) { return value; }
-            }));
-})

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/cookie/test/serialize.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/cookie/test/serialize.js b/web/demos/package/node_modules/express/node_modules/cookie/test/serialize.js
deleted file mode 100644
index 86bb8c9..0000000
--- a/web/demos/package/node_modules/express/node_modules/cookie/test/serialize.js
+++ /dev/null
@@ -1,64 +0,0 @@
-// builtin
-var assert = require('assert');
-
-var cookie = require('..');
-
-suite('serialize');
-
-test('basic', function() {
-    assert.equal('foo=bar', cookie.serialize('foo', 'bar'));
-    assert.equal('foo=bar%20baz', cookie.serialize('foo', 'bar baz'));
-});
-
-test('path', function() {
-    assert.equal('foo=bar; Path=/', cookie.serialize('foo', 'bar', {
-        path: '/'
-    }));
-});
-
-test('secure', function() {
-    assert.equal('foo=bar; Secure', cookie.serialize('foo', 'bar', {
-        secure: true
-    }));
-
-    assert.equal('foo=bar', cookie.serialize('foo', 'bar', {
-        secure: false
-    }));
-});
-
-test('domain', function() {
-    assert.equal('foo=bar; Domain=example.com', cookie.serialize('foo', 'bar', {
-        domain: 'example.com'
-    }));
-});
-
-test('httpOnly', function() {
-    assert.equal('foo=bar; HttpOnly', cookie.serialize('foo', 'bar', {
-        httpOnly: true
-    }));
-});
-
-test('maxAge', function() {
-    assert.equal('foo=bar; Max-Age=1000', cookie.serialize('foo', 'bar', {
-        maxAge: 1000
-    }));
-});
-
-test('escaping', function() {
-    assert.deepEqual('cat=%2B%20', cookie.serialize('cat', '+ '));
-});
-
-test('parse->serialize', function() {
-
-    assert.deepEqual({ cat: 'foo=123&name=baz five' }, cookie.parse(
-      cookie.serialize('cat', 'foo=123&name=baz five')));
-
-    assert.deepEqual({ cat: ' ";/' }, cookie.parse(
-      cookie.serialize('cat', ' ";/')));
-});
-
-test('unencoded', function() {
-    assert.deepEqual('cat=+ ', cookie.serialize('cat', '+ ', {
-        encode: function(value) { return value; }
-    }));
-})

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/debug/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/debug/Readme.md b/web/demos/package/node_modules/express/node_modules/debug/Readme.md
deleted file mode 100644
index c5a34e8..0000000
--- a/web/demos/package/node_modules/express/node_modules/debug/Readme.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# debug
-
-  tiny node.js debugging utility modelled after node core's debugging technique.
-
-## Installation
-
-```
-$ npm install debug
-```
-
-## Usage
-
- With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility.
- 
-Example _app.js_:
-
-```js
-var debug = require('debug')('http')
-  , http = require('http')
-  , name = 'My App';
-
-// fake app
-
-debug('booting %s', name);
-
-http.createServer(function(req, res){
-  debug(req.method + ' ' + req.url);
-  res.end('hello\n');
-}).listen(3000, function(){
-  debug('listening');
-});
-
-// fake worker of some kind
-
-require('./worker');
-```
-
-Example _worker.js_:
-
-```js
-var debug = require('debug')('worker');
-
-setInterval(function(){
-  debug('doing some work');
-}, 1000);
-```
-
- The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:
-
-  ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)
-
-  ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)
-
-## Millisecond diff
-
-  When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.
-
-  ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)
-
-  When stderr is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:
-  _(NOTE: Debug now uses stderr instead of stdout, so the correct shell command for this example is actually `DEBUG=* node example/worker 2> out &`)_
-  
-  ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)
-  
-## Conventions
-
- If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". 
-
-## Wildcards
-
-  The "*" character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.
-
-  You can also exclude specific debuggers by prefixing them with a "-" character.  For example, `DEBUG=* -connect:*` would include all debuggers except those starting with "connect:".
-
-## Browser support
-
- Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. 
-
-```js
-a = debug('worker:a');
-b = debug('worker:b');
-
-setInterval(function(){
-  a('doing some work');
-}, 1000);
-
-setInterval(function(){
-  a('doing some work');
-}, 1200);
-```
-
-## License 
-
-(The MIT License)
-
-Copyright (c) 2011 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/debug/debug.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/debug/debug.js b/web/demos/package/node_modules/express/node_modules/debug/debug.js
deleted file mode 100644
index 509dc0d..0000000
--- a/web/demos/package/node_modules/express/node_modules/debug/debug.js
+++ /dev/null
@@ -1,137 +0,0 @@
-
-/**
- * Expose `debug()` as the module.
- */
-
-module.exports = debug;
-
-/**
- * Create a debugger with the given `name`.
- *
- * @param {String} name
- * @return {Type}
- * @api public
- */
-
-function debug(name) {
-  if (!debug.enabled(name)) return function(){};
-
-  return function(fmt){
-    fmt = coerce(fmt);
-
-    var curr = new Date;
-    var ms = curr - (debug[name] || curr);
-    debug[name] = curr;
-
-    fmt = name
-      + ' '
-      + fmt
-      + ' +' + debug.humanize(ms);
-
-    // This hackery is required for IE8
-    // where `console.log` doesn't have 'apply'
-    window.console
-      && console.log
-      && Function.prototype.apply.call(console.log, console, arguments);
-  }
-}
-
-/**
- * The currently active debug mode names.
- */
-
-debug.names = [];
-debug.skips = [];
-
-/**
- * Enables a debug mode by name. This can include modes
- * separated by a colon and wildcards.
- *
- * @param {String} name
- * @api public
- */
-
-debug.enable = function(name) {
-  try {
-    localStorage.debug = name;
-  } catch(e){}
-
-  var split = (name || '').split(/[\s,]+/)
-    , len = split.length;
-
-  for (var i = 0; i < len; i++) {
-    name = split[i].replace('*', '.*?');
-    if (name[0] === '-') {
-      debug.skips.push(new RegExp('^' + name.substr(1) + '$'));
-    }
-    else {
-      debug.names.push(new RegExp('^' + name + '$'));
-    }
-  }
-};
-
-/**
- * Disable debug output.
- *
- * @api public
- */
-
-debug.disable = function(){
-  debug.enable('');
-};
-
-/**
- * Humanize the given `ms`.
- *
- * @param {Number} m
- * @return {String}
- * @api private
- */
-
-debug.humanize = function(ms) {
-  var sec = 1000
-    , min = 60 * 1000
-    , hour = 60 * min;
-
-  if (ms >= hour) return (ms / hour).toFixed(1) + 'h';
-  if (ms >= min) return (ms / min).toFixed(1) + 'm';
-  if (ms >= sec) return (ms / sec | 0) + 's';
-  return ms + 'ms';
-};
-
-/**
- * Returns true if the given mode name is enabled, false otherwise.
- *
- * @param {String} name
- * @return {Boolean}
- * @api public
- */
-
-debug.enabled = function(name) {
-  for (var i = 0, len = debug.skips.length; i < len; i++) {
-    if (debug.skips[i].test(name)) {
-      return false;
-    }
-  }
-  for (var i = 0, len = debug.names.length; i < len; i++) {
-    if (debug.names[i].test(name)) {
-      return true;
-    }
-  }
-  return false;
-};
-
-/**
- * Coerce `val`.
- */
-
-function coerce(val) {
-  if (val instanceof Error) return val.stack || val.message;
-  return val;
-}
-
-// persist
-
-try {
-  if (window.localStorage) debug.enable(localStorage.debug);
-} catch(e){}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/debug/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/debug/index.js b/web/demos/package/node_modules/express/node_modules/debug/index.js
deleted file mode 100644
index e02c13b..0000000
--- a/web/demos/package/node_modules/express/node_modules/debug/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-if ('undefined' == typeof window) {
-  module.exports = require('./lib/debug');
-} else {
-  module.exports = require('./debug');
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/debug/lib/debug.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/debug/lib/debug.js b/web/demos/package/node_modules/express/node_modules/debug/lib/debug.js
deleted file mode 100644
index 3b0a918..0000000
--- a/web/demos/package/node_modules/express/node_modules/debug/lib/debug.js
+++ /dev/null
@@ -1,147 +0,0 @@
-/**
- * Module dependencies.
- */
-
-var tty = require('tty');
-
-/**
- * Expose `debug()` as the module.
- */
-
-module.exports = debug;
-
-/**
- * Enabled debuggers.
- */
-
-var names = []
-  , skips = [];
-
-(process.env.DEBUG || '')
-  .split(/[\s,]+/)
-  .forEach(function(name){
-    name = name.replace('*', '.*?');
-    if (name[0] === '-') {
-      skips.push(new RegExp('^' + name.substr(1) + '$'));
-    } else {
-      names.push(new RegExp('^' + name + '$'));
-    }
-  });
-
-/**
- * Colors.
- */
-
-var colors = [6, 2, 3, 4, 5, 1];
-
-/**
- * Previous debug() call.
- */
-
-var prev = {};
-
-/**
- * Previously assigned color.
- */
-
-var prevColor = 0;
-
-/**
- * Is stdout a TTY? Colored output is disabled when `true`.
- */
-
-var isatty = tty.isatty(2);
-
-/**
- * Select a color.
- *
- * @return {Number}
- * @api private
- */
-
-function color() {
-  return colors[prevColor++ % colors.length];
-}
-
-/**
- * Humanize the given `ms`.
- *
- * @param {Number} m
- * @return {String}
- * @api private
- */
-
-function humanize(ms) {
-  var sec = 1000
-    , min = 60 * 1000
-    , hour = 60 * min;
-
-  if (ms >= hour) return (ms / hour).toFixed(1) + 'h';
-  if (ms >= min) return (ms / min).toFixed(1) + 'm';
-  if (ms >= sec) return (ms / sec | 0) + 's';
-  return ms + 'ms';
-}
-
-/**
- * Create a debugger with the given `name`.
- *
- * @param {String} name
- * @return {Type}
- * @api public
- */
-
-function debug(name) {
-  function disabled(){}
-  disabled.enabled = false;
-
-  var match = skips.some(function(re){
-    return re.test(name);
-  });
-
-  if (match) return disabled;
-
-  match = names.some(function(re){
-    return re.test(name);
-  });
-
-  if (!match) return disabled;
-  var c = color();
-
-  function colored(fmt) {
-    fmt = coerce(fmt);
-
-    var curr = new Date;
-    var ms = curr - (prev[name] || curr);
-    prev[name] = curr;
-
-    fmt = '  \u001b[9' + c + 'm' + name + ' '
-      + '\u001b[3' + c + 'm\u001b[90m'
-      + fmt + '\u001b[3' + c + 'm'
-      + ' +' + humanize(ms) + '\u001b[0m';
-
-    console.error.apply(this, arguments);
-  }
-
-  function plain(fmt) {
-    fmt = coerce(fmt);
-
-    fmt = new Date().toUTCString()
-      + ' ' + name + ' ' + fmt;
-    console.error.apply(this, arguments);
-  }
-
-  colored.enabled = plain.enabled = true;
-
-  return isatty || process.env.DEBUG_COLORS
-    ? colored
-    : plain;
-}
-
-/**
- * Coerce `val`.
- */
-
-function coerce(val) {
-  if (val instanceof Error) return val.stack || val.message;
-  return val;
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/debug/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/debug/package.json b/web/demos/package/node_modules/express/node_modules/debug/package.json
deleted file mode 100644
index f44874e..0000000
--- a/web/demos/package/node_modules/express/node_modules/debug/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "name": "debug",
-  "version": "0.7.4",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/debug.git"
-  },
-  "description": "small debugging utility",
-  "keywords": [
-    "debug",
-    "log",
-    "debugger"
-  ],
-  "author": {
-    "name": "TJ Holowaychuk",
-    "email": "tj@vision-media.ca"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "mocha": "*"
-  },
-  "main": "lib/debug.js",
-  "browser": "./debug.js",
-  "engines": {
-    "node": "*"
-  },
-  "files": [
-    "lib/debug.js",
-    "debug.js",
-    "index.js"
-  ],
-  "component": {
-    "scripts": {
-      "debug/index.js": "index.js",
-      "debug/debug.js": "debug.js"
-    }
-  },
-  "readme": "# debug\n\n  tiny node.js debugging utility modelled after node core's debugging technique.\n\n## Installation\n\n```\n$ npm install debug\n```\n\n## Usage\n\n With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility.\n \nExample _app.js_:\n\n```js\nvar debug = require('debug')('http')\n  , http = require('http')\n  , name = 'My App';\n\n// fake app\n\ndebug('booting %s', name);\n\nhttp.createServer(function(req, res){\n  debug(req.method + ' ' + req.url);\n  res.end('hello\\n');\n}).listen(3000, function(){\n  debug('listening');\n});\n\n// fake worker of some kind\n\nrequire('./worker');\n```\n\nExample _worker.js_:\n\n```js\nvar debug = require('debug')('worker');\n\nsetInterval(function(){\n  debug('doing some w
 ork');\n}, 1000);\n```\n\n The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:\n\n  ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)\n\n  ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)\n\n## Millisecond diff\n\n  When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the \"+NNNms\" will show you how much time was spent between calls.\n\n  ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)\n\n  When stderr is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:\n  _(NOTE: Debug now uses stderr instead of stdout, so the correct shell command for this example is actually `DEBUG=* node example/worker 2> out &`)_\n  \n  ![](h
 ttp://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)\n  \n## Conventions\n\n If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use \":\" to separate features. For example \"bodyParser\" from Connect would then be \"connect:bodyParser\". \n\n## Wildcards\n\n  The \"*\" character may be used as a wildcard. Suppose for example your library has debuggers named \"connect:bodyParser\", \"connect:compress\", \"connect:session\", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.\n\n  You can also exclude specific debuggers by prefixing them with a \"-\" character.  For example, `DEBUG=* -connect:*` would include all debuggers except those s
 tarting with \"connect:\".\n\n## Browser support\n\n Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. \n\n```js\na = debug('worker:a');\nb = debug('worker:b');\n\nsetInterval(function(){\n  a('doing some work');\n}, 1000);\n\nsetInterval(function(){\n  a('doing some work');\n}, 1200);\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to 
 whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
-  "readmeFilename": "Readme.md",
-  "bugs": {
-    "url": "https://github.com/visionmedia/debug/issues"
-  },
-  "homepage": "https://github.com/visionmedia/debug",
-  "_id": "debug@0.7.4",
-  "_from": "debug@*"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/fresh/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/fresh/.npmignore b/web/demos/package/node_modules/express/node_modules/fresh/.npmignore
deleted file mode 100644
index 9daeafb..0000000
--- a/web/demos/package/node_modules/express/node_modules/fresh/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-test

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/fresh/History.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/fresh/History.md b/web/demos/package/node_modules/express/node_modules/fresh/History.md
deleted file mode 100644
index 60a2903..0000000
--- a/web/demos/package/node_modules/express/node_modules/fresh/History.md
+++ /dev/null
@@ -1,5 +0,0 @@
-
-0.2.0 / 2013-08-11 
-==================
-
-  * fix: return false for no-cache

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/fresh/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/fresh/Makefile b/web/demos/package/node_modules/express/node_modules/fresh/Makefile
deleted file mode 100644
index 8e8640f..0000000
--- a/web/demos/package/node_modules/express/node_modules/fresh/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-
-test:
-	@./node_modules/.bin/mocha \
-		--reporter spec \
-		--require should
-
-.PHONY: test
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/fresh/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/fresh/Readme.md b/web/demos/package/node_modules/express/node_modules/fresh/Readme.md
deleted file mode 100644
index 61366c5..0000000
--- a/web/demos/package/node_modules/express/node_modules/fresh/Readme.md
+++ /dev/null
@@ -1,57 +0,0 @@
-
-# node-fresh
-
-  HTTP response freshness testing
-
-## fresh(req, res)
-
- Check freshness of `req` and `res` headers.
-
- When the cache is "fresh" __true__ is returned,
- otherwise __false__ is returned to indicate that
- the cache is now stale.
-
-## Example:
-
-```js
-var req = { 'if-none-match': 'tobi' };
-var res = { 'etag': 'luna' };
-fresh(req, res);
-// => false
-
-var req = { 'if-none-match': 'tobi' };
-var res = { 'etag': 'tobi' };
-fresh(req, res);
-// => true
-```
-
-## Installation
-
-```
-$ npm install fresh
-```
-
-## License 
-
-(The MIT License)
-
-Copyright (c) 2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/fresh/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/fresh/index.js b/web/demos/package/node_modules/express/node_modules/fresh/index.js
deleted file mode 100644
index 9c3f47d..0000000
--- a/web/demos/package/node_modules/express/node_modules/fresh/index.js
+++ /dev/null
@@ -1,53 +0,0 @@
-
-/**
- * Expose `fresh()`.
- */
-
-module.exports = fresh;
-
-/**
- * Check freshness of `req` and `res` headers.
- *
- * When the cache is "fresh" __true__ is returned,
- * otherwise __false__ is returned to indicate that
- * the cache is now stale.
- *
- * @param {Object} req
- * @param {Object} res
- * @return {Boolean}
- * @api public
- */
-
-function fresh(req, res) {
-  // defaults
-  var etagMatches = true;
-  var notModified = true;
-
-  // fields
-  var modifiedSince = req['if-modified-since'];
-  var noneMatch = req['if-none-match'];
-  var lastModified = res['last-modified'];
-  var etag = res['etag'];
-  var cc = req['cache-control'];
-
-  // unconditional request
-  if (!modifiedSince && !noneMatch) return false;
-
-  // check for no-cache cache request directive
-  if (cc && cc.indexOf('no-cache') !== -1) return false;  
-
-  // parse if-none-match
-  if (noneMatch) noneMatch = noneMatch.split(/ *, */);
-
-  // if-none-match
-  if (noneMatch) etagMatches = ~noneMatch.indexOf(etag) || '*' == noneMatch[0];
-
-  // if-modified-since
-  if (modifiedSince) {
-    modifiedSince = new Date(modifiedSince);
-    lastModified = new Date(lastModified);
-    notModified = lastModified <= modifiedSince;
-  }
-
-  return !! (etagMatches && notModified);
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/fresh/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/fresh/package.json b/web/demos/package/node_modules/express/node_modules/fresh/package.json
deleted file mode 100644
index f6dfe8d..0000000
--- a/web/demos/package/node_modules/express/node_modules/fresh/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  "name": "fresh",
-  "author": {
-    "name": "TJ Holowaychuk",
-    "email": "tj@vision-media.ca",
-    "url": "http://tjholowaychuk.com"
-  },
-  "description": "HTTP response freshness testing",
-  "version": "0.2.0",
-  "main": "index.js",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/visionmedia/node-fresh.git"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "mocha": "*",
-    "should": "*"
-  },
-  "readme": "\n# node-fresh\n\n  HTTP response freshness testing\n\n## fresh(req, res)\n\n Check freshness of `req` and `res` headers.\n\n When the cache is \"fresh\" __true__ is returned,\n otherwise __false__ is returned to indicate that\n the cache is now stale.\n\n## Example:\n\n```js\nvar req = { 'if-none-match': 'tobi' };\nvar res = { 'etag': 'luna' };\nfresh(req, res);\n// => false\n\nvar req = { 'if-none-match': 'tobi' };\nvar res = { 'etag': 'tobi' };\nfresh(req, res);\n// => true\n```\n\n## Installation\n\n```\n$ npm install fresh\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\n
 permit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
-  "readmeFilename": "Readme.md",
-  "bugs": {
-    "url": "https://github.com/visionmedia/node-fresh/issues"
-  },
-  "homepage": "https://github.com/visionmedia/node-fresh",
-  "_id": "fresh@0.2.0",
-  "_from": "fresh@0.2.0"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/methods/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/methods/index.js b/web/demos/package/node_modules/express/node_modules/methods/index.js
deleted file mode 100644
index 297d022..0000000
--- a/web/demos/package/node_modules/express/node_modules/methods/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-
-module.exports = [
-    'get'
-  , 'post'
-  , 'put'
-  , 'head'
-  , 'delete'
-  , 'options'
-  , 'trace'
-  , 'copy'
-  , 'lock'
-  , 'mkcol'
-  , 'move'
-  , 'propfind'
-  , 'proppatch'
-  , 'unlock'
-  , 'report'
-  , 'mkactivity'
-  , 'checkout'
-  , 'merge'
-  , 'm-search'
-  , 'notify'
-  , 'subscribe'
-  , 'unsubscribe'
-  , 'patch'
-];
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/methods/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/methods/package.json b/web/demos/package/node_modules/express/node_modules/methods/package.json
deleted file mode 100644
index f867a8b..0000000
--- a/web/demos/package/node_modules/express/node_modules/methods/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "name": "methods",
-  "version": "0.0.1",
-  "description": "HTTP methods that node supports",
-  "main": "index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "keywords": [
-    "http",
-    "methods"
-  ],
-  "author": {
-    "name": "TJ Holowaychuk"
-  },
-  "license": "MIT",
-  "readme": "ERROR: No README data found!",
-  "_id": "methods@0.0.1",
-  "_from": "methods@0.0.1"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/.npmignore b/web/demos/package/node_modules/express/node_modules/mkdirp/.npmignore
deleted file mode 100644
index 9303c34..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules/
-npm-debug.log
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/.travis.yml b/web/demos/package/node_modules/express/node_modules/mkdirp/.travis.yml
deleted file mode 100644
index 84fd7ca..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
-  - 0.6
-  - 0.8
-  - 0.9

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/LICENSE b/web/demos/package/node_modules/express/node_modules/mkdirp/LICENSE
deleted file mode 100644
index 432d1ae..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright 2010 James Halliday (mail@substack.net)
-
-This project is free software released under the MIT/X11 license:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/examples/pow.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/examples/pow.js b/web/demos/package/node_modules/express/node_modules/mkdirp/examples/pow.js
deleted file mode 100644
index e692421..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/examples/pow.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var mkdirp = require('mkdirp');
-
-mkdirp('/tmp/foo/bar/baz', function (err) {
-    if (err) console.error(err)
-    else console.log('pow!')
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/index.js b/web/demos/package/node_modules/express/node_modules/mkdirp/index.js
deleted file mode 100644
index fda6de8..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-var path = require('path');
-var fs = require('fs');
-
-module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
-
-function mkdirP (p, mode, f, made) {
-    if (typeof mode === 'function' || mode === undefined) {
-        f = mode;
-        mode = 0777 & (~process.umask());
-    }
-    if (!made) made = null;
-
-    var cb = f || function () {};
-    if (typeof mode === 'string') mode = parseInt(mode, 8);
-    p = path.resolve(p);
-
-    fs.mkdir(p, mode, function (er) {
-        if (!er) {
-            made = made || p;
-            return cb(null, made);
-        }
-        switch (er.code) {
-            case 'ENOENT':
-                mkdirP(path.dirname(p), mode, function (er, made) {
-                    if (er) cb(er, made);
-                    else mkdirP(p, mode, cb, made);
-                });
-                break;
-
-            // In the case of any other error, just see if there's a dir
-            // there already.  If so, then hooray!  If not, then something
-            // is borked.
-            default:
-                fs.stat(p, function (er2, stat) {
-                    // if the stat fails, then that's super weird.
-                    // let the original error be the failure reason.
-                    if (er2 || !stat.isDirectory()) cb(er, made)
-                    else cb(null, made);
-                });
-                break;
-        }
-    });
-}
-
-mkdirP.sync = function sync (p, mode, made) {
-    if (mode === undefined) {
-        mode = 0777 & (~process.umask());
-    }
-    if (!made) made = null;
-
-    if (typeof mode === 'string') mode = parseInt(mode, 8);
-    p = path.resolve(p);
-
-    try {
-        fs.mkdirSync(p, mode);
-        made = made || p;
-    }
-    catch (err0) {
-        switch (err0.code) {
-            case 'ENOENT' :
-                made = sync(path.dirname(p), mode, made);
-                sync(p, mode, made);
-                break;
-
-            // In the case of any other error, just see if there's a dir
-            // there already.  If so, then hooray!  If not, then something
-            // is borked.
-            default:
-                var stat;
-                try {
-                    stat = fs.statSync(p);
-                }
-                catch (err1) {
-                    throw err0;
-                }
-                if (!stat.isDirectory()) throw err0;
-                break;
-        }
-    }
-
-    return made;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/package.json b/web/demos/package/node_modules/express/node_modules/mkdirp/package.json
deleted file mode 100644
index 504acb6..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "name": "mkdirp",
-  "description": "Recursively mkdir, like `mkdir -p`",
-  "version": "0.3.5",
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
-  },
-  "main": "./index",
-  "keywords": [
-    "mkdir",
-    "directory"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/substack/node-mkdirp.git"
-  },
-  "scripts": {
-    "test": "tap test/*.js"
-  },
-  "devDependencies": {
-    "tap": "~0.4.0"
-  },
-  "license": "MIT",
-  "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n    \nmkdirp('/tmp/foo/bar/baz', function (err) {\n    if (err) console.error(err)\n    else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it def
 aults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n",
-  "readmeFilename": "readme.markdown",
-  "bugs": {
-    "url": "https://github.com/substack/node-mkdirp/issues"
-  },
-  "homepage": "https://github.com/substack/node-mkdirp",
-  "_id": "mkdirp@0.3.5",
-  "_from": "mkdirp@0.x.x"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/readme.markdown
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/readme.markdown b/web/demos/package/node_modules/express/node_modules/mkdirp/readme.markdown
deleted file mode 100644
index 83b0216..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/readme.markdown
+++ /dev/null
@@ -1,63 +0,0 @@
-# mkdirp
-
-Like `mkdir -p`, but in node.js!
-
-[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)
-
-# example
-
-## pow.js
-
-```js
-var mkdirp = require('mkdirp');
-    
-mkdirp('/tmp/foo/bar/baz', function (err) {
-    if (err) console.error(err)
-    else console.log('pow!')
-});
-```
-
-Output
-
-```
-pow!
-```
-
-And now /tmp/foo/bar/baz exists, huzzah!
-
-# methods
-
-```js
-var mkdirp = require('mkdirp');
-```
-
-## mkdirp(dir, mode, cb)
-
-Create a new directory and any necessary subdirectories at `dir` with octal
-permission string `mode`.
-
-If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
-
-`cb(err, made)` fires with the error or the first directory `made`
-that had to be created, if any.
-
-## mkdirp.sync(dir, mode)
-
-Synchronously create a new directory and any necessary subdirectories at `dir`
-with octal permission string `mode`.
-
-If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
-
-Returns the first directory that had to be created, if any.
-
-# install
-
-With [npm](http://npmjs.org) do:
-
-```
-npm install mkdirp
-```
-
-# license
-
-MIT

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/chmod.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/chmod.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/chmod.js
deleted file mode 100644
index 520dcb8..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/chmod.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-var ps = [ '', 'tmp' ];
-
-for (var i = 0; i < 25; i++) {
-    var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    ps.push(dir);
-}
-
-var file = ps.join('/');
-
-test('chmod-pre', function (t) {
-    var mode = 0744
-    mkdirp(file, mode, function (er) {
-        t.ifError(er, 'should not error');
-        fs.stat(file, function (er, stat) {
-            t.ifError(er, 'should exist');
-            t.ok(stat && stat.isDirectory(), 'should be directory');
-            t.equal(stat && stat.mode & 0777, mode, 'should be 0744');
-            t.end();
-        });
-    });
-});
-
-test('chmod', function (t) {
-    var mode = 0755
-    mkdirp(file, mode, function (er) {
-        t.ifError(er, 'should not error');
-        fs.stat(file, function (er, stat) {
-            t.ifError(er, 'should exist');
-            t.ok(stat && stat.isDirectory(), 'should be directory');
-            t.end();
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/clobber.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/clobber.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/clobber.js
deleted file mode 100644
index 0eb7099..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/clobber.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-var ps = [ '', 'tmp' ];
-
-for (var i = 0; i < 25; i++) {
-    var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    ps.push(dir);
-}
-
-var file = ps.join('/');
-
-// a file in the way
-var itw = ps.slice(0, 3).join('/');
-
-
-test('clobber-pre', function (t) {
-    console.error("about to write to "+itw)
-    fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.');
-
-    fs.stat(itw, function (er, stat) {
-        t.ifError(er)
-        t.ok(stat && stat.isFile(), 'should be file')
-        t.end()
-    })
-})
-
-test('clobber', function (t) {
-    t.plan(2);
-    mkdirp(file, 0755, function (err) {
-        t.ok(err);
-        t.equal(err.code, 'ENOTDIR');
-        t.end();
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/mkdirp.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/mkdirp.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/mkdirp.js
deleted file mode 100644
index b07cd70..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/mkdirp.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('woo', function (t) {
-    t.plan(2);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    
-    var file = '/tmp/' + [x,y,z].join('/');
-    
-    mkdirp(file, 0755, function (err) {
-        if (err) t.fail(err);
-        else path.exists(file, function (ex) {
-            if (!ex) t.fail('file not created')
-            else fs.stat(file, function (err, stat) {
-                if (err) t.fail(err)
-                else {
-                    t.equal(stat.mode & 0777, 0755);
-                    t.ok(stat.isDirectory(), 'target not a directory');
-                    t.end();
-                }
-            })
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/perm.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/perm.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/perm.js
deleted file mode 100644
index 23a7abb..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/perm.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('async perm', function (t) {
-    t.plan(2);
-    var file = '/tmp/' + (Math.random() * (1<<30)).toString(16);
-    
-    mkdirp(file, 0755, function (err) {
-        if (err) t.fail(err);
-        else path.exists(file, function (ex) {
-            if (!ex) t.fail('file not created')
-            else fs.stat(file, function (err, stat) {
-                if (err) t.fail(err)
-                else {
-                    t.equal(stat.mode & 0777, 0755);
-                    t.ok(stat.isDirectory(), 'target not a directory');
-                    t.end();
-                }
-            })
-        })
-    });
-});
-
-test('async root perm', function (t) {
-    mkdirp('/tmp', 0755, function (err) {
-        if (err) t.fail(err);
-        t.end();
-    });
-    t.end();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/perm_sync.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/perm_sync.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/perm_sync.js
deleted file mode 100644
index f685f60..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/perm_sync.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('sync perm', function (t) {
-    t.plan(2);
-    var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json';
-    
-    mkdirp.sync(file, 0755);
-    path.exists(file, function (ex) {
-        if (!ex) t.fail('file not created')
-        else fs.stat(file, function (err, stat) {
-            if (err) t.fail(err)
-            else {
-                t.equal(stat.mode & 0777, 0755);
-                t.ok(stat.isDirectory(), 'target not a directory');
-                t.end();
-            }
-        })
-    });
-});
-
-test('sync root perm', function (t) {
-    t.plan(1);
-    
-    var file = '/tmp';
-    mkdirp.sync(file, 0755);
-    path.exists(file, function (ex) {
-        if (!ex) t.fail('file not created')
-        else fs.stat(file, function (err, stat) {
-            if (err) t.fail(err)
-            else {
-                t.ok(stat.isDirectory(), 'target not a directory');
-                t.end();
-            }
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/race.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/race.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/race.js
deleted file mode 100644
index 96a0447..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/race.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('race', function (t) {
-    t.plan(4);
-    var ps = [ '', 'tmp' ];
-    
-    for (var i = 0; i < 25; i++) {
-        var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-        ps.push(dir);
-    }
-    var file = ps.join('/');
-    
-    var res = 2;
-    mk(file, function () {
-        if (--res === 0) t.end();
-    });
-    
-    mk(file, function () {
-        if (--res === 0) t.end();
-    });
-    
-    function mk (file, cb) {
-        mkdirp(file, 0755, function (err) {
-            if (err) t.fail(err);
-            else path.exists(file, function (ex) {
-                if (!ex) t.fail('file not created')
-                else fs.stat(file, function (err, stat) {
-                    if (err) t.fail(err)
-                    else {
-                        t.equal(stat.mode & 0777, 0755);
-                        t.ok(stat.isDirectory(), 'target not a directory');
-                        if (cb) cb();
-                    }
-                })
-            })
-        });
-    }
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/rel.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/rel.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/rel.js
deleted file mode 100644
index 7985824..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/rel.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('rel', function (t) {
-    t.plan(2);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    
-    var cwd = process.cwd();
-    process.chdir('/tmp');
-    
-    var file = [x,y,z].join('/');
-    
-    mkdirp(file, 0755, function (err) {
-        if (err) t.fail(err);
-        else path.exists(file, function (ex) {
-            if (!ex) t.fail('file not created')
-            else fs.stat(file, function (err, stat) {
-                if (err) t.fail(err)
-                else {
-                    process.chdir(cwd);
-                    t.equal(stat.mode & 0777, 0755);
-                    t.ok(stat.isDirectory(), 'target not a directory');
-                    t.end();
-                }
-            })
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/return.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/return.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/return.js
deleted file mode 100644
index bce68e5..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/return.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('return value', function (t) {
-    t.plan(4);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
-    var file = '/tmp/' + [x,y,z].join('/');
-
-    // should return the first dir created.
-    // By this point, it would be profoundly surprising if /tmp didn't
-    // already exist, since every other test makes things in there.
-    mkdirp(file, function (err, made) {
-        t.ifError(err);
-        t.equal(made, '/tmp/' + x);
-        mkdirp(file, function (err, made) {
-          t.ifError(err);
-          t.equal(made, null);
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/return_sync.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/return_sync.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/return_sync.js
deleted file mode 100644
index 7c222d3..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/return_sync.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('return value', function (t) {
-    t.plan(2);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
-    var file = '/tmp/' + [x,y,z].join('/');
-
-    // should return the first dir created.
-    // By this point, it would be profoundly surprising if /tmp didn't
-    // already exist, since every other test makes things in there.
-    // Note that this will throw on failure, which will fail the test.
-    var made = mkdirp.sync(file);
-    t.equal(made, '/tmp/' + x);
-
-    // making the same file again should have no effect.
-    made = mkdirp.sync(file);
-    t.equal(made, null);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/root.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/root.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/root.js
deleted file mode 100644
index 97ad7a2..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/root.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('root', function (t) {
-    // '/' on unix, 'c:/' on windows.
-    var file = path.resolve('/');
-
-    mkdirp(file, 0755, function (err) {
-        if (err) throw err
-        fs.stat(file, function (er, stat) {
-            if (er) throw er
-            t.ok(stat.isDirectory(), 'target is a directory');
-            t.end();
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/sync.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/sync.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/sync.js
deleted file mode 100644
index 7530cad..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/sync.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('sync', function (t) {
-    t.plan(2);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
-    var file = '/tmp/' + [x,y,z].join('/');
-
-    try {
-        mkdirp.sync(file, 0755);
-    } catch (err) {
-        t.fail(err);
-        return t.end();
-    }
-
-    path.exists(file, function (ex) {
-        if (!ex) t.fail('file not created')
-        else fs.stat(file, function (err, stat) {
-            if (err) t.fail(err)
-            else {
-                t.equal(stat.mode & 0777, 0755);
-                t.ok(stat.isDirectory(), 'target not a directory');
-                t.end();
-            }
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/umask.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/umask.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/umask.js
deleted file mode 100644
index 64ccafe..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/umask.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('implicit mode from umask', function (t) {
-    t.plan(2);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    
-    var file = '/tmp/' + [x,y,z].join('/');
-    
-    mkdirp(file, function (err) {
-        if (err) t.fail(err);
-        else path.exists(file, function (ex) {
-            if (!ex) t.fail('file not created')
-            else fs.stat(file, function (err, stat) {
-                if (err) t.fail(err)
-                else {
-                    t.equal(stat.mode & 0777, 0777 & (~process.umask()));
-                    t.ok(stat.isDirectory(), 'target not a directory');
-                    t.end();
-                }
-            })
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/mkdirp/test/umask_sync.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/mkdirp/test/umask_sync.js b/web/demos/package/node_modules/express/node_modules/mkdirp/test/umask_sync.js
deleted file mode 100644
index 35bd5cb..0000000
--- a/web/demos/package/node_modules/express/node_modules/mkdirp/test/umask_sync.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('umask sync modes', function (t) {
-    t.plan(2);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
-    var file = '/tmp/' + [x,y,z].join('/');
-
-    try {
-        mkdirp.sync(file);
-    } catch (err) {
-        t.fail(err);
-        return t.end();
-    }
-
-    path.exists(file, function (ex) {
-        if (!ex) t.fail('file not created')
-        else fs.stat(file, function (err, stat) {
-            if (err) t.fail(err)
-            else {
-                t.equal(stat.mode & 0777, (0777 & (~process.umask())));
-                t.ok(stat.isDirectory(), 'target not a directory');
-                t.end();
-            }
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/range-parser/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/range-parser/.npmignore b/web/demos/package/node_modules/express/node_modules/range-parser/.npmignore
deleted file mode 100644
index 9daeafb..0000000
--- a/web/demos/package/node_modules/express/node_modules/range-parser/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-test

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/range-parser/History.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/range-parser/History.md b/web/demos/package/node_modules/express/node_modules/range-parser/History.md
deleted file mode 100644
index 82df7b1..0000000
--- a/web/demos/package/node_modules/express/node_modules/range-parser/History.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-0.0.4 / 2012-06-17 
-==================
-
-  * changed: ret -1 for unsatisfiable and -2 when invalid
-
-0.0.3 / 2012-06-17 
-==================
-
-  * fix last-byte-pos default to len - 1
-
-0.0.2 / 2012-06-14 
-==================
-
-  * add `.type`

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/range-parser/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/range-parser/Makefile b/web/demos/package/node_modules/express/node_modules/range-parser/Makefile
deleted file mode 100644
index 8e8640f..0000000
--- a/web/demos/package/node_modules/express/node_modules/range-parser/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-
-test:
-	@./node_modules/.bin/mocha \
-		--reporter spec \
-		--require should
-
-.PHONY: test
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/range-parser/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/range-parser/Readme.md b/web/demos/package/node_modules/express/node_modules/range-parser/Readme.md
deleted file mode 100644
index b2a67fe..0000000
--- a/web/demos/package/node_modules/express/node_modules/range-parser/Readme.md
+++ /dev/null
@@ -1,28 +0,0 @@
-
-# node-range-parser
-
-  Range header field parser.
-
-## Example:
-
-```js
-assert(-1 == parse(200, 'bytes=500-20'));
-assert(-2 == parse(200, 'bytes=malformed'));
-parse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }]));
-parse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }]));
-parse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }]));
-parse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }]));
-parse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }]));
-parse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }]));
-parse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }]));
-parse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }]));
-parse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }]));
-parse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }]));
-parse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }]));
-```
-
-## Installation
-
-```
-$ npm install range-parser
-```
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/range-parser/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/range-parser/index.js b/web/demos/package/node_modules/express/node_modules/range-parser/index.js
deleted file mode 100644
index 9b0f7a8..0000000
--- a/web/demos/package/node_modules/express/node_modules/range-parser/index.js
+++ /dev/null
@@ -1,49 +0,0 @@
-
-/**
- * Parse "Range" header `str` relative to the given file `size`.
- *
- * @param {Number} size
- * @param {String} str
- * @return {Array}
- * @api public
- */
-
-module.exports = function(size, str){
-  var valid = true;
-  var i = str.indexOf('=');
-
-  if (-1 == i) return -2;
-
-  var arr = str.slice(i + 1).split(',').map(function(range){
-    var range = range.split('-')
-      , start = parseInt(range[0], 10)
-      , end = parseInt(range[1], 10);
-
-    // -nnn
-    if (isNaN(start)) {
-      start = size - end;
-      end = size - 1;
-    // nnn-
-    } else if (isNaN(end)) {
-      end = size - 1;
-    }
-
-    // limit last-byte-pos to current length
-    if (end > size - 1) end = size - 1;
-
-    // invalid
-    if (isNaN(start)
-      || isNaN(end)
-      || start > end
-      || start < 0) valid = false;
-
-    return {
-      start: start,
-      end: end
-    };
-  });
-
-  arr.type = str.slice(0, i);
-
-  return valid ? arr : -1;
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/range-parser/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/range-parser/package.json b/web/demos/package/node_modules/express/node_modules/range-parser/package.json
deleted file mode 100644
index efdf450..0000000
--- a/web/demos/package/node_modules/express/node_modules/range-parser/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "name": "range-parser",
-  "author": {
-    "name": "TJ Holowaychuk",
-    "email": "tj@vision-media.ca",
-    "url": "http://tjholowaychuk.com"
-  },
-  "description": "Range header field string parser",
-  "version": "0.0.4",
-  "main": "index.js",
-  "dependencies": {},
-  "devDependencies": {
-    "mocha": "*",
-    "should": "*"
-  },
-  "readme": "\n# node-range-parser\n\n  Range header field parser.\n\n## Example:\n\n```js\nassert(-1 == parse(200, 'bytes=500-20'));\nassert(-2 == parse(200, 'bytes=malformed'));\nparse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }]));\nparse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }]));\nparse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }]));\nparse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }]));\nparse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }]));\nparse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }]));\nparse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }]));\nparse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }]));\nparse(1000, 'bytes=40-
 80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }]));\n```\n\n## Installation\n\n```\n$ npm install range-parser\n```",
-  "readmeFilename": "Readme.md",
-  "_id": "range-parser@0.0.4",
-  "_from": "range-parser@0.0.4"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/.npmignore b/web/demos/package/node_modules/express/node_modules/send/.npmignore
deleted file mode 100644
index f1250e5..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-support
-test
-examples
-*.sock

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/History.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/History.md b/web/demos/package/node_modules/express/node_modules/send/History.md
deleted file mode 100644
index 55c4af7..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/History.md
+++ /dev/null
@@ -1,40 +0,0 @@
-
-0.1.4 / 2013-08-11 
-==================
-
- * update fresh
-
-0.1.3 / 2013-07-08 
-==================
-
- * Revert "Fix fd leak"
-
-0.1.2 / 2013-07-03 
-==================
-
- * Fix fd leak
-
-0.1.0 / 2012-08-25 
-==================
-
-  * add options parameter to send() that is passed to fs.createReadStream() [kanongil]
-
-0.0.4 / 2012-08-16 
-==================
-
-  * allow custom "Accept-Ranges" definition
-
-0.0.3 / 2012-07-16 
-==================
-
-  * fix normalization of the root directory. Closes #3
-
-0.0.2 / 2012-07-09 
-==================
-
-  * add passing of req explicitly for now (YUCK)
-
-0.0.1 / 2010-01-03
-==================
-
-  * Initial release

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/Makefile b/web/demos/package/node_modules/express/node_modules/send/Makefile
deleted file mode 100644
index a9dcfd5..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-
-test:
-	@./node_modules/.bin/mocha \
-		--require should \
-		--reporter spec \
-		--bail
-
-.PHONY: test
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/Readme.md b/web/demos/package/node_modules/express/node_modules/send/Readme.md
deleted file mode 100644
index ea7b234..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/Readme.md
+++ /dev/null
@@ -1,128 +0,0 @@
-# send
-
-  Send is Connect's `static()` extracted for generalized use, a streaming static file
-  server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework.
-
-## Installation
-
-    $ npm install send
-
-## Examples
-
-  Small:
-
-```js
-var http = require('http');
-var send = require('send');
-
-var app = http.createServer(function(req, res){
-  send(req, req.url).pipe(res);
-}).listen(3000);
-```
-
-  Serving from a root directory with custom error-handling:
-
-```js
-var http = require('http');
-var send = require('send');
-var url = require('url');
-
-var app = http.createServer(function(req, res){
-  // your custom error-handling logic:
-  function error(err) {
-    res.statusCode = err.status || 500;
-    res.end(err.message);
-  }
-
-  // your custom directory handling logic:
-  function redirect() {
-    res.statusCode = 301;
-    res.setHeader('Location', req.url + '/');
-    res.end('Redirecting to ' + req.url + '/');
-  }
-
-  // transfer arbitrary files from within
-  // /www/example.com/public/*
-  send(req, url.parse(req.url).pathname)
-  .root('/www/example.com/public')
-  .on('error', error)
-  .on('directory', redirect)
-  .pipe(res);
-}).listen(3000);
-```
-
-## API
-
-### Events
-
-  - `error` an error occurred `(err)`
-  - `directory` a directory was requested
-  - `file` a file was requested `(path, stat)`
-  - `stream` file streaming has started `(stream)`
-  - `end` streaming has completed
-
-### .root(dir)
-
-  Serve files relative to `path`. Aliased as `.from(dir)`.
-
-### .index(path)
-
-  By default send supports "index.html" files, to disable this
-  invoke `.index(false)` or to supply a new index pass a string.
-
-### .maxage(ms)
-
-  Provide a max-age in milliseconds for http caching, defaults to 0.
-
-### .hidden(bool)
-
-  Enable or disable transfer of hidden files, defaults to false.
-
-## Error-handling
-
-  By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc.
-
-## Caching
-
-  It does _not_ perform internal caching, you should use a reverse proxy cache such
-  as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;).
-
-## Debugging
-
- To enable `debug()` instrumentation output export __DEBUG__:
-
-```
-$ DEBUG=send node app
-```
-
-## Running tests
-
-```
-$ npm install
-$ make test
-```
-
-## License 
-
-(The MIT License)
-
-Copyright (c) 2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/index.js b/web/demos/package/node_modules/express/node_modules/send/index.js
deleted file mode 100644
index f17158d..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-
-module.exports = require('./lib/send');
\ No newline at end of file


[95/98] [abbrv] incubator-apex-malhar git commit: MLHR-1899 Workaround problematic test file content.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f9875f6d/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories.rss
----------------------------------------------------------------------
diff --git a/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories.rss b/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories.rss
deleted file mode 100644
index 88638d9..0000000
--- a/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories.rss
+++ /dev/null
@@ -1,242 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://rss.cnn.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
-<channel>
-<title>CNN.com - Top Stories</title>
-<link>http://www.cnn.com/index.html?eref=rss_topstories</link>
-<description>CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.</description>
-<language>en-US</language>
-<copyright>Copyright 2013 Cable News Network LP, LLLP.</copyright>
-<pubDate>Wed, 13 Mar 2013 13:06:55 EDT</pubDate>
-<ttl>10</ttl>
-<image>
-<title>CNN.com - Top Stories</title>
-<link>http://www.cnn.com/index.html?eref=rss_topstories</link>
-<url>http://i.cdn.turner.com/cnn/.e/img/1.0/logo/cnn.logo.rss.gif</url>
-<width>144</width>
-<height>33</height>
-<description>CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.</description>
-</image>
-<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://rss.cnn.com/rss/cnn_topstories" /><feedburner:info uri="rss/cnn_topstories" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><thespringbox:skin xmlns:thespringbox="http://www.thespringbox.com/dtds/thespringbox-1.0.dtd">http://rss.cnn.com/rss/cnn_topstories?format=skin</thespringbox:skin><item><title>Our favorite surprise homecomings</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2012/09/21/soldier-surprises-daughter-maine.wabi</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/CwGHwn3c8-o/</link><description>U.S. Army Specialist Daniel Riendeau surprised his daugher at school after being away in Afghanistan for almost a year.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=CwGHwn3c8-o:dG6sDqiiEjA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=CwGHwn3c8-o:dG6sDqiiEjA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/CwGHwn3c8-o" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:37:07 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2012/09/21/soldier-surprises-daughter-maine.wabi</feedburner:origLink></item>
-<item><title>Guy pushes his girlfriend off a cliff</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/08/tsr-moos-girlfriend-pushed-off-cliff.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/B34SivME0XM/</link><description>Watch a guy push his girlfriend off a cliff. Are they still together? CNN's Jeanne Moos has the cliffhanger ending.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=B34SivME0XM:ZP1LA_cNGk0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=B34SivME0XM:ZP1LA_cNGk0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/B34SivME0XM" height="1" width="1"/&gt;</description><pubDate>Tue, 12 Mar 2013 10:56:20 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/08/tsr-moos-girlfriend-pushed-off-cliff.cnn</feedburner:origLink></item>
-<item><title>Cardinals set for another round of papal voting</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/europe/vatican-pope-selection/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/amKpV7fqwQk/index.html</link><description>Expectation is building after the cardinals entered the Sistine Chapel for a second time today to cast their votes for the next pope.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=amKpV7fqwQk:XH5y7KMsY60:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=amKpV7fqwQk:XH5y7KMsY60:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=amKpV7fqwQk:XH5y7KMsY60:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=amKpV7fqwQk:XH5y7KMsY60:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=amKpV7fqwQk:XH5y7KMsY60:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=amKpV7fqwQk:XH5y7KMsY60:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=amKpV7fqwQk:XH5y7KMsY60:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/amKpV7fqwQk" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:49:08 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/europe/vatican-pope-selection/index.html</feedburner:origLink></item>
-<item><title>It once took 3 years to pick a pope</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/world/2013/03/13/ac-dnt-cooper-fun-facts-conclave.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/l-lN9JNz55Q/</link><description>Anderson Cooper lists some of the lesser-known facts surrounding the papal election.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:dnYqe2BOmKs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:dnYqe2BOmKs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:dnYqe2BOmKs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=l-lN9JNz55Q:dnYqe2BOmKs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:dnYqe2BOmKs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:dnYqe2BOmKs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=l-lN9JNz55Q:dnYqe2BOmKs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/l-lN9JNz55Q" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 06:36:56 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/world/2013/03/13/ac-dnt-cooper-fun-facts-conclave.cnn</feedburner:origLink></item>
-<item><title>Conclave schedule: What their day's like</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/europe/vatican-conclave-schedule/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/RqsgoEPeeZw/index.html</link><description>Cardinals tasked with electing the next pope convene for a second day of the papal conclave on Wednesday. Here is how their day will unfold. (All smoke timings are approximate)&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=RqsgoEPeeZw:z3Is-FVnWNY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=RqsgoEPeeZw:z3Is-FVnWNY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=RqsgoEPeeZw:z3Is-FVnWNY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=RqsgoEPeeZw:z3Is-FVnWNY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=RqsgoEPeeZw:z3Is-FVnWNY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=RqsgoEPeeZw:z3Is-FVnWNY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=RqsgoEPeeZw:z3Is-FVnWNY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/RqsgoEPeeZw" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 05:39:04 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/europe/vatican-conclave-schedule/index.html</feedburner:origLink></item>
-<item><title>Time for a pope from Latin America?</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/americas/latin-american-pope/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/qWkTCz4V3PY/index.html</link><description>With its approximately 480 million adherents, Latin America is home to an overwhelming plurality of the world's Catholics. But no one from this region (or hemisphere, for that matter) has been ever been chosen to lead the church as pope.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=qWkTCz4V3PY:pyNU0TBvSCk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=qWkTCz4V3PY:pyNU0TBvSCk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=qWkTCz4V3PY:pyNU0TBvSCk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=qWkTCz4V3PY:pyNU0TBvSCk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=qWkTCz4V3PY:pyNU0TBvSCk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=qWkTCz4V3PY:pyNU0TBvSCk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=qWkTCz4V3PY:pyNU0TBvSCk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/qWkTCz4V3PY" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:50:53 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/americas/latin-american-pope/index.html</feedburner:origLink></item>
-<item><title>Boy pulled from Disney pool dies</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/us/florida-disney-death/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/HD-OAU1UtP8/index.html</link><description>Two days after he was pulled from the bottom of a swimming pool in 4 feet of water at a Disney World resort in Florida, a 13-year-old boy has died.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:XJlJoUCt2ko:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:XJlJoUCt2ko:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:XJlJoUCt2ko:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=HD-OAU1UtP8:XJlJoUCt2ko:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:XJlJoUCt2ko:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:XJlJoUCt2ko:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=HD-OAU1UtP8:XJlJoUCt2ko:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/HD-OAU1UtP8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 05:08:09 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/us/florida-disney-death/index.html</feedburner:origLink></item>
-<item><title>FDA: Zmax can cause fatal heart rhythms</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/health/fda-antibiotic-heart-warning/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/xJZv4qP0q-Y/index.html</link><description>A popular antibiotic used to treat bacterial infections can cause abnormal -- and possibly fatal -- heart rhythms in some patients, according to a new warning from the Food and Drug Administration.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=xJZv4qP0q-Y:xclw3SXKpDw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=xJZv4qP0q-Y:xclw3SXKpDw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/xJZv4qP0q-Y" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:29:32 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/health/fda-antibiotic-heart-warning/index.html</feedburner:origLink></item>
-<item><title>4 killed in N.Y. shootings</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/justice/new-york-shooting/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/ZDB3l7eM8kw/index.html</link><description>Four people have been killed and at least two others wounded in shootings in Herkimer County, New York, state police trooper Jack Keller said Wednesday.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:okEM5m5FSv4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:okEM5m5FSv4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:okEM5m5FSv4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=ZDB3l7eM8kw:okEM5m5FSv4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:okEM5m5FSv4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:okEM5m5FSv4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=ZDB3l7eM8kw:okEM5m5FSv4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/ZDB3l7eM8kw" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:29:27 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/justice/new-york-shooting/index.html</feedburner:origLink></item>
-<item><title>Iran to sue Hollywood over 'Argo'</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/meast/iran-argo-response/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/_l_ASk7x-vM/index.html</link><description>First, Iran said it would produce its own cinematic response to "Argo." Now, Tehran plans to sue Hollywood filmmakers who contribute to the production of such "anti-Iran" propaganda films.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=_l_ASk7x-vM:UxWBLvRIZCA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=_l_ASk7x-vM:UxWBLvRIZCA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/_l_ASk7x-vM" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:26:48 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/meast/iran-argo-response/index.html</feedburner:origLink></item>
-<item><title>15 teens dead in 3 wrecks</title><guid isPermaLink="false">http://www.cnn.com/2013/03/12/travel/teen-drivers/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/isn-AMVmNr8/index.html</link><description>Though traffic fatalities have seen a historic drop in recent decades, young drivers remain at highest risk. Weekend crashes in Ohio and Texas fit even higher risk profiles. We explore solutions to keep teen drivers safe.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=isn-AMVmNr8:oSwhLci5b8o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=isn-AMVmNr8:oSwhLci5b8o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/isn-AMVmNr8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:17:22 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/12/travel/teen-drivers/index.html</feedburner:origLink></item>
-<item><title>Saudi Arabia beheads 7 for stealing</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/meast/saudi-executions-beheading/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/6fuBbJS8Lkc/index.html</link><description>Seven men were executed by beheading Wednesday in Saudi Arabia for stealing, according to SPA, the official Saudi New agency.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=6fuBbJS8Lkc:x838-Ws_FFw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=6fuBbJS8Lkc:x838-Ws_FFw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/6fuBbJS8Lkc" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 13:00:38 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/meast/saudi-executions-beheading/index.html</feedburner:origLink></item>
-<item><title>Ohio teen rape trial </title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/justice/ohio-steubenville-case/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/ZXh6dRcOkOs/index.html</link><description>Once, high school football was the thing that brought people together in the eastern Ohio town of Steubenville. That was before two star players of the football team were accused of raping a 16-year-old girl.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=ZXh6dRcOkOs:GyXyk62ziDU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=ZXh6dRcOkOs:GyXyk62ziDU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/ZXh6dRcOkOs" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:03:20 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/justice/ohio-steubenville-case/index.html</feedburner:origLink></item>
-<item><title>5 things we learned at SXSW 2013</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/tech/innovation/5-things-sxsw/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/3Tj3auTVI9M/index.html</link><description>Hoopla surrounding South by Southwest Interactive, the techie festival that wrapped up here Tuesday, has exploded in recent years.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=3Tj3auTVI9M:Sfdgyj9yIkU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=3Tj3auTVI9M:Sfdgyj9yIkU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/3Tj3auTVI9M" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:56:16 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/tech/innovation/5-things-sxsw/index.html</feedburner:origLink></item>
-<item><title>GOP wary of Obama charm offensive</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/politics/obama-house-gop/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/uKBsor5RkZs/index.html</link><description>When President Barack Obama enters the conference room in the Capitol basement Wednesday to sit down with House Republicans, he'll be met by a group that says it's willing to listen but deeply skeptical of the president's so-called "charm offensive."&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=uKBsor5RkZs:H95TSRJ3BHI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=uKBsor5RkZs:H95TSRJ3BHI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/uKBsor5RkZs" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:25:26 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/politics/obama-house-gop/index.html</feedburner:origLink></item>
-<item><title>Nearly 6,000 dead pigs in Chinese river</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/asia/pigs-china-river/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/cw3KqL4R3P8/index.html</link><description>5,916 dead, bloated pigs and counting.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=cw3KqL4R3P8:OQA-S_oq_l0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=cw3KqL4R3P8:OQA-S_oq_l0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/cw3KqL4R3P8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 05:42:47 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/asia/pigs-china-river/index.html</feedburner:origLink></item>
-<item><title>Baby shot while dad changes diaper</title><guid isPermaLink="false">http://www.cnn.com/2013/03/12/justice/illinois-baby-shooting/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/W3RpQDp4cQo/index.html</link><description>The father was also shot. Police are looking for the killer, who jumped into a blue van after the shooting and drove away.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=W3RpQDp4cQo:cKXcNfrbzGE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=W3RpQDp4cQo:cKXcNfrbzGE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=W3RpQDp4cQo:cKXcNfrbzGE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=W3RpQDp4cQo:cKXcNfrbzGE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=W3RpQDp4cQo:cKXcNfrbzGE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=W3RpQDp4cQo:cKXcNfrbzGE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=W3RpQDp4cQo:cKXcNfrbzGE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/W3RpQDp4cQo" height="1" width="1"/&gt;</description><pubDate>Tue, 12 Mar 2013 20:39:39 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/12/justice/illinois-baby-shooting/index.html</feedburner:origLink></item>
-<item><title>Opinion: Office face time overrated</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/opinion/albison-correll-women-face-time/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/WEPmatCeEps/index.html</link><description>Shelley Correll and Catherine Albiston say Yahoo got it wrong: research shows that people who have control over when and where they work are more productive. have better morale and are more loyal&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=WEPmatCeEps:b4Ny-A_jphA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=WEPmatCeEps:b4Ny-A_jphA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/WEPmatCeEps" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 13:02:30 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/opinion/albison-correll-women-face-time/index.html</feedburner:origLink></item>
-<item><title>Pro soccer player quits to be priest</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-erin-dnt-from-pro-soccer-to-priesthood-chase-hilgenbrinck.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Y5x38vRBxaI/</link><description>A former pro soccer player gave up his promising career for the priesthood. Erin Burnett reports.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Y5x38vRBxaI:wlfNkPX6ZEA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Y5x38vRBxaI:wlfNkPX6ZEA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Y5x38vRBxaI" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 09:23:35 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-erin-dnt-from-pro-soccer-to-priesthood-chase-hilgenbrinck.cnn</feedburner:origLink></item>
-<item><title>The creepy things Facebook knows</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-erin-facebook-likes-reveals-everything-about-you.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/6t14Vaays8I/</link><description>Erin Burnett talks about a new study that reveals Facebook's ability to know your intimate and personal information.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=6t14Vaays8I:rqkVXLJ-ICw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=6t14Vaays8I:rqkVXLJ-ICw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/6t14Vaays8I" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 09:24:31 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-erin-facebook-likes-reveals-everything-about-you.cnn</feedburner:origLink></item>
-<item><title>Quarter size mosquitoes invade Fla.</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/13/pkg-giant-mosquitos-florida.bay-news-9</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/G2W-pxU5etE/</link><description>Gallinippers can be 20 times the size of typical mosquitoes. They are expected to invade Florida this summer.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=G2W-pxU5etE:I46WXCArNz8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=G2W-pxU5etE:I46WXCArNz8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/G2W-pxU5etE" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 08:56:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/13/pkg-giant-mosquitos-florida.bay-news-9</feedburner:origLink></item>
-<item><title>How you stop a deadly shark bite</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/12/tsr-dnt-zarella-shark-bite-study.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/kNb_Henz38A/</link><description>Researchers are looking in the mouths of sharks for a way to help bite victims. CNN's John Zarrella reports.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=kNb_Henz38A:s67OEOVCZEs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=kNb_Henz38A:s67OEOVCZEs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/kNb_Henz38A" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 07:36:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/12/tsr-dnt-zarella-shark-bite-study.cnn</feedburner:origLink></item>
-<item><title>Kim Kardashian gets bloody facial</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/showbiz/2013/03/13/sbt-kim-kardashian-vampire-facial.hln</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/lCnIZ62je7g/</link><description>HLN's A.J. Hammer asks an expert if Kim Kardashian's "vampire facial" really works and if it's worth the pain.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=lCnIZ62je7g:GxKc7s5sSVc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=lCnIZ62je7g:GxKc7s5sSVc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/lCnIZ62je7g" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 09:27:36 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/showbiz/2013/03/13/sbt-kim-kardashian-vampire-facial.hln</feedburner:origLink></item>
-<item><title>Epic battle overlooked</title><guid isPermaLink="false">http://www.cnn.com/2013/03/12/world/asia/korean-war-chosin-reservoir/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/wR0iNV_0Hpw/index.html</link><description>In 1950, 30,000 U.N. soldiers hacked through 80,000 Chinese and North Korean troops in brutal cold to escape their trapped position.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=wR0iNV_0Hpw:k2IRQf4LZO8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=wR0iNV_0Hpw:k2IRQf4LZO8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=wR0iNV_0Hpw:k2IRQf4LZO8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=wR0iNV_0Hpw:k2IRQf4LZO8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=wR0iNV_0Hpw:k2IRQf4LZO8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=wR0iNV_0Hpw:k2IRQf4LZO8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=wR0iNV_0Hpw:k2IRQf4LZO8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/wR0iNV_0Hpw" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:56:30 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/12/world/asia/korean-war-chosin-reservoir/index.html</feedburner:origLink></item>
-<item><title>North Korea ready to 'rain bullets'</title><guid isPermaLink="false">http://www.cnn.com/2013/03/12/world/asia/koreas-tensions/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/u5ZejGQRTTA/index.html</link><description>The 80-year-old North Korean war vet says he's been holding onto a bullet he didn't get to fire when his country declared a truce with its neighbor 60 years ago.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=u5ZejGQRTTA:6IxT5d-6gFI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=u5ZejGQRTTA:6IxT5d-6gFI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=u5ZejGQRTTA:6IxT5d-6gFI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=u5ZejGQRTTA:6IxT5d-6gFI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=u5ZejGQRTTA:6IxT5d-6gFI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=u5ZejGQRTTA:6IxT5d-6gFI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=u5ZejGQRTTA:6IxT5d-6gFI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/u5ZejGQRTTA" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:57:52 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/12/world/asia/koreas-tensions/index.html</feedburner:origLink></item>
-<item><title>New show 'too white'?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/23/exp-point-waxman-girls.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/30hpqQsjVnM/</link><description>HBO's 'Girls' is the latest TV show depicting life in New York City without one of its most crucial elements: diversity.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=30hpqQsjVnM:QAZRKus08_A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=30hpqQsjVnM:QAZRKus08_A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/30hpqQsjVnM" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 12:02:24 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/23/exp-point-waxman-girls.cnn</feedburner:origLink></item>
-<item><title>Zimmerman's body language</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-erin-zimmerman-body-language.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/sPynL-fKm2k/</link><description>An expert in body language says George Zimmerman showed signs of anger in court in Florida.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=sPynL-fKm2k:LPEJeh2Ua3Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=sPynL-fKm2k:LPEJeh2Ua3Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/sPynL-fKm2k" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 10:28:12 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-erin-zimmerman-body-language.cnn</feedburner:origLink></item>
-<item><title>Anderson battles on 'Jeopardy!'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/offbeat/2012/04/21/ac-ridiculist-jeopardy-appearances.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/TT8Ec4zVGJk/</link><description>CNN's Anderson Cooper reflects on the highs and lows of his past "Jeopardy" appearances and weighs his odds of winning.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=TT8Ec4zVGJk:Je0Nb01racE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=TT8Ec4zVGJk:Je0Nb01racE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/TT8Ec4zVGJk" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 10:34:51 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/offbeat/2012/04/21/ac-ridiculist-jeopardy-appearances.cnn</feedburner:origLink></item>
-<item><title>Steinem on GOP and women</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ybl-steinem-.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/uBSQZcXo-zc/</link><description>Activist and author Gloria Steinem analyzes the "war on women" and says extremists have taken over the Republican party.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=uBSQZcXo-zc:HPm4xJzXdEQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=uBSQZcXo-zc:HPm4xJzXdEQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/uBSQZcXo-zc" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 18:29:45 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ybl-steinem-.cnn</feedburner:origLink></item>
-<item><title>Facebook fans 'lonely'?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/22/exp-rs-media-monitor.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Z8koXr-c0hM/</link><description>A report on Facebook, Bill O'Reilly and the Fox "brand," Current TV"s new hire, a Pulitzer for a PA reporter, GMA rises&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Z8koXr-c0hM:hu-rwcn5UgU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Z8koXr-c0hM:hu-rwcn5UgU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Z8koXr-c0hM" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 14:38:31 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/22/exp-rs-media-monitor.cnn</feedburner:origLink></item>
-<item><title>Working moms of CNN </title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/19/cnn-working-moms-share-their-stories.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/P9wFf4tbbyw/</link><description>CNN goes behind the scenes with the working moms on Suzanne Malveaux's team to see how they juggle it all.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=P9wFf4tbbyw:SbjMSo2IH6w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=P9wFf4tbbyw:SbjMSo2IH6w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/P9wFf4tbbyw" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 16:43:37 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/19/cnn-working-moms-share-their-stories.cnn</feedburner:origLink></item>
-<item><title>Levon Helm remembered</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-levon-helm-obit.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/JYYIEYXqn34/</link><description>Anderson Cooper takes a look back at the life of The Band's Levon Helm and his many contributions to music.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=JYYIEYXqn34:8Lgb0FOsAmg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=JYYIEYXqn34:8Lgb0FOsAmg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/JYYIEYXqn34" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 16:43:45 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-levon-helm-obit.cnn</feedburner:origLink></item>
-<item><title>Man makes dating spreadsheet</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-get-real-dating-spreadsheet.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/vx0ARutyCFQ/</link><description>Soledad O'Brien discusses the investment banker who created an elaborate spreadsheet to keep track of his dates.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=vx0ARutyCFQ:3qe2x7NrwN0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=vx0ARutyCFQ:3qe2x7NrwN0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/vx0ARutyCFQ" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 11:29:57 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-get-real-dating-spreadsheet.cnn</feedburner:origLink></item>
-<item><title>Political dog tale duel</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-ridiculist-obama-romney-dogs.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/f2pQv1EmVbY/</link><description>In the RidicuList, Anderson Cooper examines which candidate's dog tale will have a greater election impact.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=f2pQv1EmVbY:sWQXHXG0FmA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=f2pQv1EmVbY:sWQXHXG0FmA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/f2pQv1EmVbY" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 09:38:44 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-ridiculist-obama-romney-dogs.cnn</feedburner:origLink></item>
-<item><title>Vanessa Williams' perfect man</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/showbiz/2012/04/20/piers-williams-love.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/XdISDjJ8ssM/</link><description>Entertainer Vanessa Williams talks to CNN's Piers Morgan about "being properly in love" and relationships.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=XdISDjJ8ssM:vg92Ai16Gc4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=XdISDjJ8ssM:vg92Ai16Gc4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/XdISDjJ8ssM" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 09:38:33 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/showbiz/2012/04/20/piers-williams-love.cnn</feedburner:origLink></item>
-<item><title>'Only in America': Defending Axl Rose</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/piers-morgan-only-in-america-in-defense-of-axl-rose.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/CE0-oIRG7AY/</link><description>Piers Morgan defends Axl Rose for deciding not to attend the Rock'N'Roll Hall of Fame induction of Guns N' Roses.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=CE0-oIRG7AY:iYNae62SbM8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=CE0-oIRG7AY:iYNae62SbM8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/CE0-oIRG7AY" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 09:41:33 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/piers-morgan-only-in-america-in-defense-of-axl-rose.cnn</feedburner:origLink></item>
-<item><title>Rep. won't name 'Communists'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-west-communist-reax.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Xwa7iI_z-DI/</link><description>Rep. Allen West (R-FL) responds to criticism after he claimed a number of Democratic reps in Congress are Communists.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Xwa7iI_z-DI:d2IDNIqeKok:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Xwa7iI_z-DI:d2IDNIqeKok:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Xwa7iI_z-DI" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Apr 2012 14:59:47 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-west-communist-reax.cnn</feedburner:origLink></item>
-<item><title>RidicuList: Quest for 'sexy veggies'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/offbeat/2012/04/18/ac-ridiculist-sexy-veggies.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/mxmh2VeX1es/</link><description>CNN's Anderson Cooper riffs on a staple of Courtney Stodden's grocery list, "sexy veggies."&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=mxmh2VeX1es:5nXnJlPtEX4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=mxmh2VeX1es:5nXnJlPtEX4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/mxmh2VeX1es" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Apr 2012 13:35:19 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/offbeat/2012/04/18/ac-ridiculist-sexy-veggies.cnn</feedburner:origLink></item>
-<item><title>Kim Kardashian for mayor?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-get-real-kardashian.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/hyXOp5VGCeI/</link><description>Soledad O'Brien discusses Kim Kardashian's comments about running for Mayor in Glendale, California.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=hyXOp5VGCeI:zqSiobweMvc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=hyXOp5VGCeI:zqSiobweMvc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/hyXOp5VGCeI" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Apr 2012 11:29:15 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-get-real-kardashian.cnn</feedburner:origLink></item>
-<item><title>New judge in Martin case </title><guid isPermaLink="false">http://www.cnn.com/video/#/video/crime/2012/04/18/erin-new-judge-martin-case.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Vl4YhIIOBw4/</link><description>CNN's Erin Burnett speaks to a panel of analysts about the new judge in the Trayvon Martin shooting case.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Vl4YhIIOBw4:T5k_0MYGA9c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Vl4YhIIOBw4:T5k_0MYGA9c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Vl4YhIIOBw4" height="1" width="1"/&gt;</description><pubDate>Thu, 27 Sep 2012 00:17:36 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/crime/2012/04/18/erin-new-judge-martin-case.cnn</feedburner:origLink></item>
-<item><title>Valerie Harper: 'We're all terminal'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-pmt-valerie-harper-were-all-terminal.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/DcIKG783Xw0/</link><description>Valerie Harper talks to Piers Morgan about her diagnosis with a rare terminal cancer and how she is living in the moment.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=DcIKG783Xw0:JmCSxquD-GM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=DcIKG783Xw0:JmCSxquD-GM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/DcIKG783Xw0" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:30:08 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-pmt-valerie-harper-were-all-terminal.cnn</feedburner:origLink></item>
-<item><title>Secret motive behind Arias sex tape?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-jvm-ariasphone-sex-call.hln</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/KMmhmMWuYFY/</link><description>Travis' coworker says she believes Jodi recorded the secret phone sex call to listen to after Travis died&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=KMmhmMWuYFY:8kCpV3BIuQU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=KMmhmMWuYFY:8kCpV3BIuQU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/KMmhmMWuYFY" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:55:02 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-jvm-ariasphone-sex-call.hln</feedburner:origLink></item>
-<item><title>Airport flash mob with surprise ending</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/12/pkg-airport-flashmob-marriage-proposal.kfor</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/JCD9NOfjTQk/</link><description>An Oklahoma City man received a surprise proposal from his girlfriend after a two-year mission trip.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=JCD9NOfjTQk:9wVKT-CZ_Nc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=JCD9NOfjTQk:9wVKT-CZ_Nc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/JCD9NOfjTQk" height="1" width="1"/&gt;</description><pubDate>Tue, 12 Mar 2013 19:45:06 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/12/pkg-airport-flashmob-marriage-proposal.kfor</feedburner:origLink></item>
-<item><title>Opinion: Sandberg slights single moms</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/opinion/faludi-poor-single-mothers-sandberg/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/gkgo4pkSPW4/index.html</link><description>Susan Faludi: Sheryl Sandberg's "Lean In" venture could have lifted up single mothers mired in poverty, but gave them short shrift instead.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=gkgo4pkSPW4:xyDuWQBdQ-g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=gkgo4pkSPW4:xyDuWQBdQ-g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/gkgo4pkSPW4" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:56:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/opinion/faludi-poor-single-mothers-sandberg/index.html</feedburner:origLink></item>
-<item><title>Seals, sea lion pup try to catch free rides </title><guid isPermaLink="false">http://www.cnn.com/video/#/video/living/2013/03/12/tsr-pkg-moos-sea-lion-pup-stowaway.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Re--Lyq5Bq8/</link><description>A sea lion pup catches a ride on a kayak. CNN's Jeanne Moos reports on the adorable stowaway making waves.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Re--Lyq5Bq8:gK_dYxcfc2o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Re--Lyq5Bq8:gK_dYxcfc2o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Re--Lyq5Bq8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 07:12:43 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/living/2013/03/12/tsr-pkg-moos-sea-lion-pup-stowaway.cnn</feedburner:origLink></item>
-<item><title>Billy Joel surprises, plays with student</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/showbiz/2013/03/13/mxp-billy-joel-student-performance.hln</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/yCpcOyTWsS0/</link><description>Artist Billy Joel surprised everyone during a Vanderbilt University Q&amp;A session when a freshman asked to play with him.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=yCpcOyTWsS0:AU4_6tlORKI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=yCpcOyTWsS0:AU4_6tlORKI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/yCpcOyTWsS0" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:07:59 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/showbiz/2013/03/13/mxp-billy-joel-student-performance.hln</feedburner:origLink></item>
-<item><title>Colbert asked Howard Dean what??!</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/12/exp-lead-tapper-colbert-tease.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/QQJ7k8gM5TA/</link><description>Comedian Stephen Colbert tells the story of when he first met CNN's Jake Tapper on the 2004 campaign trail.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=QQJ7k8gM5TA:xNpo6V4NNII:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=QQJ7k8gM5TA:xNpo6V4NNII:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/QQJ7k8gM5TA" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:09:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/12/exp-lead-tapper-colbert-tease.cnn</feedburner:origLink></item>
-<item><title>Why my pet gets antidepressants</title><guid isPermaLink="false">http://www.cnn.com/2013/03/10/opinion/walmsley-pet-drugs/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/DDRmE_nE5sA/index.html</link><description>Would you put your pet on antidepressants? CNN's Katie Walmsley says while it's easy to laugh at the thought, it's a huge disservice to animals to write off a medicated approach to their problems.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DDRmE_nE5sA:KFu2xtxk3gM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DDRmE_nE5sA:KFu2xtxk3gM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DDRmE_nE5sA:KFu2xtxk3gM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/c

<TRUNCATED>


[07/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/ext/bson.h
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/bson.h b/web/demos/package/node_modules/mongodb/node_modules/bson/ext/bson.h
deleted file mode 100644
index 13f0cc4..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/bson.h
+++ /dev/null
@@ -1,278 +0,0 @@
-//===========================================================================
-
-#ifndef BSON_H_
-#define BSON_H_
-
-//===========================================================================
-
-#ifdef __arm__
-#define USE_MISALIGNED_MEMORY_ACCESS 0
-#else
-#define USE_MISALIGNED_MEMORY_ACCESS 1
-#endif
-
-#include <node.h>
-#include <node_object_wrap.h>
-#include <v8.h>
-#include "nan.h"
-
-using namespace v8;
-using namespace node;
-
-//===========================================================================
-
-enum BsonType
-{
-	BSON_TYPE_NUMBER		= 1,
-	BSON_TYPE_STRING		= 2,
-	BSON_TYPE_OBJECT		= 3,
-	BSON_TYPE_ARRAY			= 4,
-	BSON_TYPE_BINARY		= 5,
-	BSON_TYPE_UNDEFINED		= 6,
-	BSON_TYPE_OID			= 7,
-	BSON_TYPE_BOOLEAN		= 8,
-	BSON_TYPE_DATE			= 9,
-	BSON_TYPE_NULL			= 10,
-	BSON_TYPE_REGEXP		= 11,
-	BSON_TYPE_CODE			= 13,
-	BSON_TYPE_SYMBOL		= 14,
-	BSON_TYPE_CODE_W_SCOPE	= 15,
-	BSON_TYPE_INT			= 16,
-	BSON_TYPE_TIMESTAMP		= 17,
-	BSON_TYPE_LONG			= 18,
-	BSON_TYPE_MAX_KEY		= 0x7f,
-	BSON_TYPE_MIN_KEY		= 0xff
-};
-
-//===========================================================================
-
-template<typename T> class BSONSerializer;
-
-class BSON : public ObjectWrap {
-public:
-	BSON();
-	~BSON() {}
-
-	static void Initialize(Handle<Object> target);
-        static NAN_METHOD(BSONDeserializeStream);
-
-	// JS based objects
-	static NAN_METHOD(BSONSerialize);
-	static NAN_METHOD(BSONDeserialize);
-
-        // Calculate size of function
-	static NAN_METHOD(CalculateObjectSize);
-	static NAN_METHOD(SerializeWithBufferAndIndex);
-
-	// Constructor used for creating new BSON objects from C++
-	static Persistent<FunctionTemplate> constructor_template;
-
-private:
-	static NAN_METHOD(New);
-	static Handle<Value> deserialize(BSON *bson, char *data, uint32_t dataLength, uint32_t startIndex, bool is_array_item);
-
-	// BSON type instantiate functions
-	Persistent<Function> longConstructor;
-	Persistent<Function> objectIDConstructor;
-	Persistent<Function> binaryConstructor;
-	Persistent<Function> codeConstructor;
-	Persistent<Function> dbrefConstructor;
-	Persistent<Function> symbolConstructor;
-	Persistent<Function> doubleConstructor;
-	Persistent<Function> timestampConstructor;
-	Persistent<Function> minKeyConstructor;
-	Persistent<Function> maxKeyConstructor;
-
-	// Equality Objects
-	Persistent<String> longString;
-	Persistent<String> objectIDString;
-	Persistent<String> binaryString;
-	Persistent<String> codeString;
-	Persistent<String> dbrefString;
-	Persistent<String> symbolString;
-	Persistent<String> doubleString;
-	Persistent<String> timestampString;
-	Persistent<String> minKeyString;
-	Persistent<String> maxKeyString;
-
-	// Equality speed up comparison objects
-	Persistent<String> _bsontypeString;
-	Persistent<String> _longLowString;
-	Persistent<String> _longHighString;
-	Persistent<String> _objectIDidString;
-	Persistent<String> _binaryPositionString;
-	Persistent<String> _binarySubTypeString;
-	Persistent<String> _binaryBufferString;
-	Persistent<String> _doubleValueString;
-	Persistent<String> _symbolValueString;
-
-	Persistent<String> _dbRefRefString;
-	Persistent<String> _dbRefIdRefString;
-	Persistent<String> _dbRefDbRefString;
-	Persistent<String> _dbRefNamespaceString;
-	Persistent<String> _dbRefDbString;
-	Persistent<String> _dbRefOidString;
-
-	Persistent<String> _codeCodeString;
-	Persistent<String> _codeScopeString;
-	Persistent<String> _toBSONString;
-
-	Local<Object> GetSerializeObject(const Handle<Value>& object);
-
-	template<typename T> friend class BSONSerializer;
-	friend class BSONDeserializer;
-};
-
-//===========================================================================
-
-class CountStream
-{
-public:
-	CountStream() : count(0) { }
-
-	void	WriteByte(int value)									{ ++count; }
-	void	WriteByte(const Handle<Object>&, const Handle<String>&)	{ ++count; }
-	void	WriteBool(const Handle<Value>& value)					{ ++count; }
-	void	WriteInt32(int32_t value)								{ count += 4; }
-	void	WriteInt32(const Handle<Value>& value)					{ count += 4; }
-	void	WriteInt32(const Handle<Object>& object, const Handle<String>& key) { count += 4; }
-	void	WriteInt64(int64_t value)								{ count += 8; }
-	void	WriteInt64(const Handle<Value>& value)					{ count += 8; }
-	void	WriteDouble(double value)								{ count += 8; }
-	void	WriteDouble(const Handle<Value>& value)					{ count += 8; }
-	void	WriteDouble(const Handle<Object>&, const Handle<String>&) { count += 8; }
-	void	WriteUInt32String(uint32_t name)						{ char buffer[32]; count += sprintf(buffer, "%u", name) + 1; }
-	void	WriteLengthPrefixedString(const Local<String>& value)	{ count += value->Utf8Length()+5; }
-	void	WriteObjectId(const Handle<Object>& object, const Handle<String>& key)				{ count += 12; }
-	void	WriteString(const Local<String>& value)					{ count += value->Utf8Length() + 1; }	// This returns the number of bytes exclusive of the NULL terminator
-	void	WriteData(const char* data, size_t length)				{ count += length; }
-
-	void*	BeginWriteType()										{ ++count; return NULL; }
-	void	CommitType(void*, BsonType)								{ }
-	void*	BeginWriteSize()										{ count += 4; return NULL; }
-	void	CommitSize(void*)										{ }
-
-	size_t GetSerializeSize() const									{ return count; }
-
-	// Do nothing. CheckKey is implemented for DataStream
-	void	CheckKey(const Local<String>&)							{ }
-
-private:
-	size_t	count;
-};
-
-class DataStream
-{
-public:
-	DataStream(char* aDestinationBuffer) : destinationBuffer(aDestinationBuffer), p(aDestinationBuffer) { }
-
-	void	WriteByte(int value)									{ *p++ = value; }
-	void	WriteByte(const Handle<Object>& object, const Handle<String>& key)	{ *p++ = object->Get(key)->Int32Value(); }
-#if USE_MISALIGNED_MEMORY_ACCESS
-	void	WriteInt32(int32_t value)								{ *reinterpret_cast<int32_t*>(p) = value; p += 4; }
-	void	WriteInt64(int64_t value)								{ *reinterpret_cast<int64_t*>(p) = value; p += 8; }
-	void	WriteDouble(double value)								{ *reinterpret_cast<double*>(p) = value; p += 8; }
-#else
-	void	WriteInt32(int32_t value)								{ memcpy(p, &value, 4); p += 4; }
-	void	WriteInt64(int64_t value)								{ memcpy(p, &value, 8); p += 8; }
-	void	WriteDouble(double value)								{ memcpy(p, &value, 8); p += 8; }
-#endif
-	void	WriteBool(const Handle<Value>& value)					{ WriteByte(value->BooleanValue() ? 1 : 0); }
-	void	WriteInt32(const Handle<Value>& value)					{ WriteInt32(value->Int32Value());			}
-	void	WriteInt32(const Handle<Object>& object, const Handle<String>& key) { WriteInt32(object->Get(key)); }
-	void	WriteInt64(const Handle<Value>& value)					{ WriteInt64(value->IntegerValue());		}
-	void	WriteDouble(const Handle<Value>& value)					{ WriteDouble(value->NumberValue());		}
-	void	WriteDouble(const Handle<Object>& object, const Handle<String>& key) { WriteDouble(object->Get(key)); }
-	void	WriteUInt32String(uint32_t name)						{ p += sprintf(p, "%u", name) + 1;			}
-	void	WriteLengthPrefixedString(const Local<String>& value)	{ WriteInt32(value->Utf8Length()+1); WriteString(value); }
-	void	WriteObjectId(const Handle<Object>& object, const Handle<String>& key);
-	void	WriteString(const Local<String>& value)					{ p += value->WriteUtf8(p); }		// This returns the number of bytes inclusive of the NULL terminator.
-	void	WriteData(const char* data, size_t length)				{ memcpy(p, data, length); p += length; }
-
-	void*	BeginWriteType()										{ void* returnValue = p; p++; return returnValue; }
-	void	CommitType(void* beginPoint, BsonType value)			{ *reinterpret_cast<unsigned char*>(beginPoint) = value; }
-	void*	BeginWriteSize()										{ void* returnValue = p; p += 4; return returnValue; }
-
-#if USE_MISALIGNED_MEMORY_ACCESS
-	void	CommitSize(void* beginPoint)							{ *reinterpret_cast<int32_t*>(beginPoint) = (int32_t) (p - (char*) beginPoint); }
-#else
-	void	CommitSize(void* beginPoint)							{ int32_t value = (int32_t) (p - (char*) beginPoint); memcpy(beginPoint, &value, 4); }
-#endif
-
-	size_t GetSerializeSize() const									{ return p - destinationBuffer; }
-
-	void	CheckKey(const Local<String>& keyName);
-
-protected:
-	char *const	destinationBuffer;		// base, never changes
-	char*		p;						// cursor into buffer
-};
-
-template<typename T> class BSONSerializer : public T
-{
-private:
-	typedef T Inherited;
-
-public:
-	BSONSerializer(BSON* aBson, bool aCheckKeys, bool aSerializeFunctions) : Inherited(), checkKeys(aCheckKeys), serializeFunctions(aSerializeFunctions), bson(aBson) { }
-	BSONSerializer(BSON* aBson, bool aCheckKeys, bool aSerializeFunctions, char* parentParam) : Inherited(parentParam), checkKeys(aCheckKeys), serializeFunctions(aSerializeFunctions), bson(aBson) { }
-
-	void SerializeDocument(const Handle<Value>& value);
-	void SerializeArray(const Handle<Value>& value);
-	void SerializeValue(void* typeLocation, const Handle<Value>& value);
-
-private:
-	bool		checkKeys;
-	bool		serializeFunctions;
-	BSON*		bson;
-};
-
-//===========================================================================
-
-class BSONDeserializer
-{
-public:
-	BSONDeserializer(BSON* aBson, char* data, size_t length);
-	BSONDeserializer(BSONDeserializer& parentSerializer, size_t length);
-
-	Handle<Value> DeserializeDocument(bool promoteLongs);
-
-	bool			HasMoreData() const { return p < pEnd; }
-	Handle<Value>	ReadCString();
-	uint32_t		ReadIntegerString();
-	int32_t			ReadRegexOptions();
-	Local<String>	ReadString();
-	Local<String>	ReadObjectId();
-
-	unsigned char	ReadByte()			{ return *reinterpret_cast<unsigned char*>(p++); }
-#if USE_MISALIGNED_MEMORY_ACCESS
-	int32_t			ReadInt32()			{ int32_t returnValue = *reinterpret_cast<int32_t*>(p); p += 4; return returnValue; }
-	uint32_t		ReadUInt32()		{ uint32_t returnValue = *reinterpret_cast<uint32_t*>(p); p += 4; return returnValue; }
-	int64_t			ReadInt64()			{ int64_t returnValue = *reinterpret_cast<int64_t*>(p); p += 8; return returnValue; }
-	double			ReadDouble()		{ double returnValue = *reinterpret_cast<double*>(p); p += 8; return returnValue; }
-#else
-	int32_t			ReadInt32()			{ int32_t returnValue; memcpy(&returnValue, p, 4); p += 4; return returnValue; }
-	uint32_t		ReadUInt32()		{ uint32_t returnValue; memcpy(&returnValue, p, 4); p += 4; return returnValue; }
-	int64_t			ReadInt64()			{ int64_t returnValue; memcpy(&returnValue, p, 8); p += 8; return returnValue; }
-	double			ReadDouble()		{ double returnValue; memcpy(&returnValue, p, 8); p += 8; return returnValue; }
-#endif
-
-	size_t			GetSerializeSize() const { return p - pStart; }
-
-private:
-	Handle<Value> DeserializeArray(bool promoteLongs);
-	Handle<Value> DeserializeValue(BsonType type, bool promoteLongs);
-	Handle<Value> DeserializeDocumentInternal(bool promoteLongs);
-	Handle<Value> DeserializeArrayInternal(bool promoteLongs);
-
-	BSON*		bson;
-	char* const pStart;
-	char*		p;
-	char* const	pEnd;
-};
-
-//===========================================================================
-
-#endif  // BSON_H_
-
-//===========================================================================

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/ext/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/index.js b/web/demos/package/node_modules/mongodb/node_modules/bson/ext/index.js
deleted file mode 100644
index 65affae..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/index.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var bson = null;
-
-try {
-	// Load the precompiled win32 binary
-	if(process.platform == "win32" && process.arch == "x64") {
-	  bson = require('./win32/x64/bson');  
-	} else if(process.platform == "win32" && process.arch == "ia32") {
-	  bson = require('./win32/ia32/bson');  
-	} else {
-	  bson = require('../build/Release/bson');  
-	}	
-} catch(err) {
-	console.error("Failed to load c++ bson extension, using pure JS version");
-	bson = require('../lib/bson/bson');
-}
-
-exports.BSON = bson.BSON;
-exports.Long = require('../lib/bson/long').Long;
-exports.ObjectID = require('../lib/bson/objectid').ObjectID;
-exports.DBRef = require('../lib/bson/db_ref').DBRef;
-exports.Code = require('../lib/bson/code').Code;
-exports.Timestamp = require('../lib/bson/timestamp').Timestamp;
-exports.Binary = require('../lib/bson/binary').Binary;
-exports.Double = require('../lib/bson/double').Double;
-exports.MaxKey = require('../lib/bson/max_key').MaxKey;
-exports.MinKey = require('../lib/bson/min_key').MinKey;
-exports.Symbol = require('../lib/bson/symbol').Symbol;
-
-// Just add constants tot he Native BSON parser
-exports.BSON.BSON_BINARY_SUBTYPE_DEFAULT = 0;
-exports.BSON.BSON_BINARY_SUBTYPE_FUNCTION = 1;
-exports.BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2;
-exports.BSON.BSON_BINARY_SUBTYPE_UUID = 3;
-exports.BSON.BSON_BINARY_SUBTYPE_MD5 = 4;
-exports.BSON.BSON_BINARY_SUBTYPE_USER_DEFINED = 128;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/ext/nan.h
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/nan.h b/web/demos/package/node_modules/mongodb/node_modules/bson/ext/nan.h
deleted file mode 100644
index 822cb4d..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/nan.h
+++ /dev/null
@@ -1,1196 +0,0 @@
-/**********************************************************************************
- * NAN - Native Abstractions for Node.js
- *
- * Copyright (c) 2014 NAN contributors:
- *   - Rod Vagg <https://github.com/rvagg>
- *   - Benjamin Byholm <https://github.com/kkoopa>
- *   - Trevor Norris <https://github.com/trevnorris>
- *   - Nathan Rajlich <https://github.com/TooTallNate>
- *   - Brett Lawson <https://github.com/brett19>
- *   - Ben Noordhuis <https://github.com/bnoordhuis>
- *
- * MIT +no-false-attribs License <https://github.com/rvagg/nan/blob/master/LICENSE>
- *
- * Version 0.8.0 (current Node unstable: 0.11.10, Node stable: 0.10.24)
- *
- * ChangeLog:
- *  * 0.8.0 Jan 9 2014
- *    - NanDispose -> NanDisposePersistent, deprecate NanDispose
- *    - Extract _NAN_*_RETURN_TYPE, pull up NAN_*()
- *
- *  * 0.7.1 Jan 9 2014
- *    - Fixes to work against debug builds of Node
- *    - Safer NanPersistentToLocal (avoid reinterpret_cast)
- *    - Speed up common NanRawString case by only extracting flattened string when necessary
- *
- *  * 0.7.0 Dec 17 2013
- *    - New no-arg form of NanCallback() constructor.
- *    - NanCallback#Call takes Handle rather than Local
- *    - Removed deprecated NanCallback#Run method, use NanCallback#Call instead
- *    - Split off _NAN_*_ARGS_TYPE from _NAN_*_ARGS
- *    - Restore (unofficial) Node 0.6 compatibility at NanCallback#Call()
- *    - Introduce NanRawString() for char* (or appropriate void*) from v8::String
- *      (replacement for NanFromV8String)
- *    - Introduce NanCString() for null-terminated char* from v8::String
- *
- *  * 0.6.0 Nov 21 2013
- *    - Introduce NanNewLocal<T>(v8::Handle<T> value) for use in place of
- *      v8::Local<T>::New(...) since v8 started requiring isolate in Node 0.11.9
- *
- *  * 0.5.2 Nov 16 2013
- *    - Convert SavePersistent and GetFromPersistent in NanAsyncWorker from protected and public
- *
- *  * 0.5.1 Nov 12 2013
- *    - Use node::MakeCallback() instead of direct v8::Function::Call()
- *
- *  * 0.5.0 Nov 11 2013
- *    - Added @TooTallNate as collaborator
- *    - New, much simpler, "include_dirs" for binding.gyp
- *    - Added full range of NAN_INDEX_* macros to match NAN_PROPERTY_* macros
- *
- *  * 0.4.4 Nov 2 2013
- *    - Isolate argument from v8::Persistent::MakeWeak removed for 0.11.8+
- *
- *  * 0.4.3 Nov 2 2013
- *    - Include node_object_wrap.h, removed from node.h for Node 0.11.8.
- *
- *  * 0.4.2 Nov 2 2013
- *    - Handle deprecation of v8::Persistent::Dispose(v8::Isolate* isolate)) for
- *      Node 0.11.8 release.
- *
- *  * 0.4.1 Sep 16 2013
- *    - Added explicit `#include <uv.h>` as it was removed from node.h for v0.11.8
- *
- *  * 0.4.0 Sep 2 2013
- *    - Added NAN_INLINE and NAN_DEPRECATED and made use of them
- *    - Added NanError, NanTypeError and NanRangeError
- *    - Cleaned up code
- *
- *  * 0.3.2 Aug 30 2013
- *    - Fix missing scope declaration in GetFromPersistent() and SaveToPersistent
- *      in NanAsyncWorker
- *
- *  * 0.3.1 Aug 20 2013
- *    - fix "not all control paths return a value" compile warning on some platforms
- *
- *  * 0.3.0 Aug 19 2013
- *    - Made NAN work with NPM
- *    - Lots of fixes to NanFromV8String, pulling in features from new Node core
- *    - Changed node::encoding to Nan::Encoding in NanFromV8String to unify the API
- *    - Added optional error number argument for NanThrowError()
- *    - Added NanInitPersistent()
- *    - Added NanReturnNull() and NanReturnEmptyString()
- *    - Added NanLocker and NanUnlocker
- *    - Added missing scopes
- *    - Made sure to clear disposed Persistent handles
- *    - Changed NanAsyncWorker to allocate error messages on the heap
- *    - Changed NanThrowError(Local<Value>) to NanThrowError(Handle<Value>)
- *    - Fixed leak in NanAsyncWorker when errmsg is used
- *
- *  * 0.2.2 Aug 5 2013
- *    - Fixed usage of undefined variable with node::BASE64 in NanFromV8String()
- *
- *  * 0.2.1 Aug 5 2013
- *    - Fixed 0.8 breakage, node::BUFFER encoding type not available in 0.8 for
- *      NanFromV8String()
- *
- *  * 0.2.0 Aug 5 2013
- *    - Added NAN_PROPERTY_GETTER, NAN_PROPERTY_SETTER, NAN_PROPERTY_ENUMERATOR,
- *      NAN_PROPERTY_DELETER, NAN_PROPERTY_QUERY
- *    - Extracted _NAN_METHOD_ARGS, _NAN_GETTER_ARGS, _NAN_SETTER_ARGS,
- *      _NAN_PROPERTY_GETTER_ARGS, _NAN_PROPERTY_SETTER_ARGS,
- *      _NAN_PROPERTY_ENUMERATOR_ARGS, _NAN_PROPERTY_DELETER_ARGS,
- *      _NAN_PROPERTY_QUERY_ARGS
- *    - Added NanGetInternalFieldPointer, NanSetInternalFieldPointer
- *    - Added NAN_WEAK_CALLBACK, NAN_WEAK_CALLBACK_OBJECT,
- *      NAN_WEAK_CALLBACK_DATA, NanMakeWeak
- *    - Renamed THROW_ERROR to _NAN_THROW_ERROR
- *    - Added NanNewBufferHandle(char*, size_t, node::smalloc::FreeCallback, void*)
- *    - Added NanBufferUse(char*, uint32_t)
- *    - Added NanNewContextHandle(v8::ExtensionConfiguration*,
- *        v8::Handle<v8::ObjectTemplate>, v8::Handle<v8::Value>)
- *    - Fixed broken NanCallback#GetFunction()
- *    - Added optional encoding and size arguments to NanFromV8String()
- *    - Added NanGetPointerSafe() and NanSetPointerSafe()
- *    - Added initial test suite (to be expanded)
- *    - Allow NanUInt32OptionValue to convert any Number object
- *
- *  * 0.1.0 Jul 21 2013
- *    - Added `NAN_GETTER`, `NAN_SETTER`
- *    - Added `NanThrowError` with single Local<Value> argument
- *    - Added `NanNewBufferHandle` with single uint32_t argument
- *    - Added `NanHasInstance(Persistent<FunctionTemplate>&, Handle<Value>)`
- *    - Added `Local<Function> NanCallback#GetFunction()`
- *    - Added `NanCallback#Call(int, Local<Value>[])`
- *    - Deprecated `NanCallback#Run(int, Local<Value>[])` in favour of Call
- *
- * See https://github.com/rvagg/nan for the latest update to this file
- **********************************************************************************/
-
-#ifndef NAN_H
-#define NAN_H
-
-#include <uv.h>
-#include <node.h>
-#include <node_buffer.h>
-#include <node_version.h>
-#include <node_object_wrap.h>
-#include <string.h>
-
-#if defined(__GNUC__) && !defined(DEBUG)
-# define NAN_INLINE(declarator) inline __attribute__((always_inline)) declarator
-#elif defined(_MSC_VER) && !defined(DEBUG)
-# define NAN_INLINE(declarator) __forceinline declarator
-#else
-# define NAN_INLINE(declarator) inline declarator
-#endif
-
-#if defined(__GNUC__) && !V8_DISABLE_DEPRECATIONS
-# define NAN_DEPRECATED(declarator) __attribute__((deprecated)) declarator
-#elif defined(_MSC_VER) && !V8_DISABLE_DEPRECATIONS
-# define NAN_DEPRECATED(declarator) __declspec(deprecated) declarator
-#else
-# define NAN_DEPRECATED(declarator) declarator
-#endif
-
-// some generic helpers
-
-template<class T> static NAN_INLINE(bool NanSetPointerSafe(
-    T *var
-  , T val
-)) {
-  if (var) {
-    *var = val;
-    return true;
-  } else {
-    return false;
-  }
-}
-
-template<class T> static NAN_INLINE(T NanGetPointerSafe(
-    T *var
-  , T fallback = reinterpret_cast<T>(0)
-)) {
-  if (var) {
-    return *var;
-  } else {
-    return fallback;
-  }
-}
-
-#define NanSymbol(value) v8::String::NewSymbol(value)
-
-static NAN_INLINE(bool NanBooleanOptionValue(
-    v8::Local<v8::Object> optionsObj
-  , v8::Handle<v8::String> opt, bool def
-)) {
-  if (def) {
-    return optionsObj.IsEmpty()
-      || !optionsObj->Has(opt)
-      || optionsObj->Get(opt)->BooleanValue();
-  } else {
-    return !optionsObj.IsEmpty()
-      && optionsObj->Has(opt)
-      && optionsObj->Get(opt)->BooleanValue();
-  }
-}
-
-static NAN_INLINE(bool NanBooleanOptionValue(
-    v8::Local<v8::Object> optionsObj
-  , v8::Handle<v8::String> opt
-)) {
-  return NanBooleanOptionValue(optionsObj, opt, false);
-}
-
-static NAN_INLINE(uint32_t NanUInt32OptionValue(
-    v8::Local<v8::Object> optionsObj
-  , v8::Handle<v8::String> opt
-  , uint32_t def
-)) {
-  return !optionsObj.IsEmpty()
-    && optionsObj->Has(opt)
-    && optionsObj->Get(opt)->IsNumber()
-      ? optionsObj->Get(opt)->Uint32Value()
-      : def;
-}
-
-#if (NODE_MODULE_VERSION > 0x000B)
-// Node 0.11+ (0.11.3 and below won't compile with these)
-
-static v8::Isolate* nan_isolate = v8::Isolate::GetCurrent();
-
-# define _NAN_METHOD_ARGS_TYPE const v8::FunctionCallbackInfo<v8::Value>&
-# define _NAN_METHOD_ARGS _NAN_METHOD_ARGS_TYPE args
-# define _NAN_METHOD_RETURN_TYPE void
-
-# define _NAN_GETTER_ARGS_TYPE const v8::PropertyCallbackInfo<v8::Value>&
-# define _NAN_GETTER_ARGS _NAN_GETTER_ARGS_TYPE args
-# define _NAN_GETTER_RETURN_TYPE void
-
-# define _NAN_SETTER_ARGS_TYPE const v8::PropertyCallbackInfo<void>&
-# define _NAN_SETTER_ARGS _NAN_SETTER_ARGS_TYPE args
-# define _NAN_SETTER_RETURN_TYPE void
-
-# define _NAN_PROPERTY_GETTER_ARGS_TYPE                                        \
-    const v8::PropertyCallbackInfo<v8::Value>&
-# define _NAN_PROPERTY_GETTER_ARGS _NAN_PROPERTY_GETTER_ARGS_TYPE args
-# define _NAN_PROPERTY_GETTER_RETURN_TYPE void
-
-# define _NAN_PROPERTY_SETTER_ARGS_TYPE                                        \
-    const v8::PropertyCallbackInfo<v8::Value>&
-# define _NAN_PROPERTY_SETTER_ARGS _NAN_PROPERTY_SETTER_ARGS_TYPE args
-# define _NAN_PROPERTY_SETTER_RETURN_TYPE void
-
-# define _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE                                    \
-    const v8::PropertyCallbackInfo<v8::Array>&
-# define _NAN_PROPERTY_ENUMERATOR_ARGS _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE args
-# define _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE void
-
-# define _NAN_PROPERTY_DELETER_ARGS_TYPE                                       \
-    const v8::PropertyCallbackInfo<v8::Boolean>&
-# define _NAN_PROPERTY_DELETER_ARGS                                            \
-    _NAN_PROPERTY_DELETER_ARGS_TYPE args
-# define _NAN_PROPERTY_DELETER_RETURN_TYPE void
-
-# define _NAN_PROPERTY_QUERY_ARGS_TYPE                                         \
-    const v8::PropertyCallbackInfo<v8::Integer>&
-# define _NAN_PROPERTY_QUERY_ARGS _NAN_PROPERTY_QUERY_ARGS_TYPE args
-# define _NAN_PROPERTY_QUERY_RETURN_TYPE void
-
-# define _NAN_INDEX_GETTER_ARGS_TYPE                                           \
-    const v8::PropertyCallbackInfo<v8::Value>&
-# define _NAN_INDEX_GETTER_ARGS _NAN_INDEX_GETTER_ARGS_TYPE args
-# define _NAN_INDEX_GETTER_RETURN_TYPE void
-
-# define _NAN_INDEX_SETTER_ARGS_TYPE                                           \
-    const v8::PropertyCallbackInfo<v8::Value>&
-# define _NAN_INDEX_SETTER_ARGS _NAN_INDEX_SETTER_ARGS_TYPE args
-# define _NAN_INDEX_SETTER_RETURN_TYPE void
-
-# define _NAN_INDEX_ENUMERATOR_ARGS_TYPE                                       \
-    const v8::PropertyCallbackInfo<v8::Array>&
-# define _NAN_INDEX_ENUMERATOR_ARGS _NAN_INDEX_ENUMERATOR_ARGS_TYPE args
-# define _NAN_INDEX_ENUMERATOR_RETURN_TYPE void
-
-# define _NAN_INDEX_DELETER_ARGS_TYPE                                          \
-    const v8::PropertyCallbackInfo<v8::Boolean>&
-# define _NAN_INDEX_DELETER_ARGS _NAN_INDEX_DELETER_ARGS_TYPE args
-# define _NAN_INDEX_DELETER_RETURN_TYPE void
-
-# define _NAN_INDEX_QUERY_ARGS_TYPE                                            \
-    const v8::PropertyCallbackInfo<v8::Integer>&
-# define _NAN_INDEX_QUERY_ARGS _NAN_INDEX_QUERY_ARGS_TYPE args
-# define _NAN_INDEX_QUERY_RETURN_TYPE void
-
-# define NanGetInternalFieldPointer(object, index)                             \
-    object->GetAlignedPointerFromInternalField(index)
-# define NanSetInternalFieldPointer(object, index, value)                      \
-    object->SetAlignedPointerInInternalField(index, value)
-
-# define NAN_WEAK_CALLBACK(type, name)                                         \
-    void name(                                                                 \
-        v8::Isolate* isolate                                                   \
-      , v8::Persistent<v8::Object>* object                                     \
-      , type data)
-# define NAN_WEAK_CALLBACK_OBJECT (*object)
-# define NAN_WEAK_CALLBACK_DATA(type) ((type) data)
-
-# define NanScope() v8::HandleScope scope(nan_isolate)
-# define NanLocker() v8::Locker locker(nan_isolate)
-# define NanUnlocker() v8::Unlocker unlocker(nan_isolate)
-# define NanReturnValue(value) return args.GetReturnValue().Set(value)
-# define NanReturnUndefined() return
-# define NanReturnNull() return args.GetReturnValue().SetNull()
-# define NanReturnEmptyString() return args.GetReturnValue().SetEmptyString()
-# define NanAssignPersistent(type, handle, obj) handle.Reset(nan_isolate, obj)
-# define NanInitPersistent(type, name, obj)                                    \
-    v8::Persistent<type> name(nan_isolate, obj)
-# define NanObjectWrapHandle(obj) obj->handle()
-
-//TODO: remove <0.11.8 support when 0.12 is released
-#if NODE_VERSION_AT_LEAST(0, 11, 8)
-# define NanMakeWeak(handle, parameter, callback)                              \
-    handle.MakeWeak(parameter, callback)
-#else
-# define NanMakeWeak(handle, parameter, callback)                              \
-    handle.MakeWeak(nan_isolate, parameter, callback)
-#endif
-
-# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
-
-# define _NAN_THROW_ERROR(fun, errmsg)                                         \
-    do {                                                                       \
-      NanScope();                                                              \
-      v8::ThrowException(_NAN_ERROR(fun, errmsg));                             \
-    } while (0);
-
-  template<class T> static NAN_INLINE(v8::Local<T> NanNewLocal(
-      v8::Handle<T> val
-  )) {
-//TODO: remove <0.11.9 support when 0.12 is released
-#if NODE_VERSION_AT_LEAST(0, 11, 9)
-    return v8::Local<T>::New(nan_isolate, val);
-#else
-    return v8::Local<T>::New(val);
-#endif
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanError(const char* errmsg)) {
-    return  _NAN_ERROR(v8::Exception::Error, errmsg);
-  }
-
-  static NAN_INLINE(void NanThrowError(const char* errmsg)) {
-    _NAN_THROW_ERROR(v8::Exception::Error, errmsg);
-  }
-
-  static NAN_INLINE(void NanThrowError(v8::Handle<v8::Value> error)) {
-    NanScope();
-    v8::ThrowException(error);
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanError(
-      const char *msg
-    , const int errorNumber
-  )) {
-    v8::Local<v8::Value> err = v8::Exception::Error(v8::String::New(msg));
-    v8::Local<v8::Object> obj = err.As<v8::Object>();
-    obj->Set(v8::String::New("code"), v8::Int32::New(errorNumber));
-    return err;
-  }
-
-  static NAN_INLINE(void NanThrowError(
-      const char *msg
-    , const int errorNumber
-  )) {
-    NanThrowError(NanError(msg, errorNumber));
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanTypeError(const char* errmsg)) {
-    return _NAN_ERROR(v8::Exception::TypeError, errmsg);
-  }
-
-  static NAN_INLINE(void NanThrowTypeError(const char* errmsg)) {
-    _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg);
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanRangeError(const char* errmsg)) {
-    return _NAN_ERROR(v8::Exception::RangeError, errmsg);
-  }
-
-  static NAN_INLINE(void NanThrowRangeError(const char* errmsg)) {
-    _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg);
-  }
-
-  template<class T> static NAN_INLINE(void NanDisposePersistent(
-      v8::Persistent<T> &handle
-  )) {
-
-//TODO: remove <0.11.8 support when 0.12 is released
-# if NODE_VERSION_AT_LEAST(0, 11, 8)
-    handle.Reset();
-# else
-    handle.Dispose(nan_isolate);
-# endif
-    handle.Clear();
-  }
-
-  template<class T> static NAN_DEPRECATED(void NanDispose(
-      v8::Persistent<T> &handle
-  )) {
-    NanDisposePersistent(handle);
-  }
-
-  static NAN_INLINE(v8::Local<v8::Object> NanNewBufferHandle (
-      char *data
-    , size_t length
-    , node::smalloc::FreeCallback callback
-    , void *hint
-  )) {
-    return node::Buffer::New(data, length, callback, hint);
-  }
-
-  static NAN_INLINE(v8::Local<v8::Object> NanNewBufferHandle (
-      char *data
-    , uint32_t size
-  )) {
-    return node::Buffer::New(data, size);
-  }
-
-  static NAN_INLINE(v8::Local<v8::Object> NanNewBufferHandle (uint32_t size)) {
-    return node::Buffer::New(size);
-  }
-
-  static NAN_INLINE(v8::Local<v8::Object> NanBufferUse(
-      char* data
-    , uint32_t size
-  )) {
-    return node::Buffer::Use(data, size);
-  }
-
-  template <class TypeName>
-  static NAN_INLINE(v8::Local<TypeName> NanPersistentToLocal(
-     const v8::Persistent<TypeName>& persistent
-  )) {
-    return v8::Local<TypeName>::New(nan_isolate, persistent);
-  }
-
-  static NAN_INLINE(bool NanHasInstance(
-      v8::Persistent<v8::FunctionTemplate>& function_template
-    , v8::Handle<v8::Value> value
-  )) {
-    return NanPersistentToLocal(function_template)->HasInstance(value);
-  }
-
-  static NAN_INLINE(v8::Local<v8::Context> NanNewContextHandle(
-      v8::ExtensionConfiguration* extensions = NULL
-    , v8::Handle<v8::ObjectTemplate> tmpl = v8::Handle<v8::ObjectTemplate>()
-    , v8::Handle<v8::Value> obj = v8::Handle<v8::Value>()
-  )) {
-    return v8::Local<v8::Context>::New(
-        nan_isolate
-      , v8::Context::New(nan_isolate, extensions, tmpl, obj)
-    );
-  }
-
-#else
-// Node 0.8 and 0.10
-
-# define _NAN_METHOD_ARGS_TYPE const v8::Arguments&
-# define _NAN_METHOD_ARGS _NAN_METHOD_ARGS_TYPE args
-# define _NAN_METHOD_RETURN_TYPE v8::Handle<v8::Value>
-
-# define _NAN_GETTER_ARGS_TYPE const v8::AccessorInfo &
-# define _NAN_GETTER_ARGS _NAN_GETTER_ARGS_TYPE args
-# define _NAN_GETTER_RETURN_TYPE v8::Handle<v8::Value>
-
-# define _NAN_SETTER_ARGS_TYPE const v8::AccessorInfo &
-# define _NAN_SETTER_ARGS _NAN_SETTER_ARGS_TYPE args
-# define _NAN_SETTER_RETURN_TYPE void
-
-# define _NAN_PROPERTY_GETTER_ARGS_TYPE const v8::AccessorInfo&
-# define _NAN_PROPERTY_GETTER_ARGS _NAN_PROPERTY_GETTER_ARGS_TYPE args
-# define _NAN_PROPERTY_GETTER_RETURN_TYPE v8::Handle<v8::Value>
-
-# define _NAN_PROPERTY_SETTER_ARGS_TYPE const v8::AccessorInfo&
-# define _NAN_PROPERTY_SETTER_ARGS _NAN_PROPERTY_SETTER_ARGS_TYPE args
-# define _NAN_PROPERTY_SETTER_RETURN_TYPE v8::Handle<v8::Value>
-
-# define _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE const v8::AccessorInfo&
-# define _NAN_PROPERTY_ENUMERATOR_ARGS _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE args
-# define _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE v8::Handle<v8::Array>
-
-# define _NAN_PROPERTY_DELETER_ARGS_TYPE const v8::AccessorInfo&
-# define _NAN_PROPERTY_DELETER_ARGS _NAN_PROPERTY_DELETER_ARGS_TYPE args
-# define _NAN_PROPERTY_DELETER_RETURN_TYPE v8::Handle<v8::Boolean>
-
-# define _NAN_PROPERTY_QUERY_ARGS_TYPE const v8::AccessorInfo&
-# define _NAN_PROPERTY_QUERY_ARGS _NAN_PROPERTY_QUERY_ARGS_TYPE args
-# define _NAN_PROPERTY_QUERY_RETURN_TYPE v8::Handle<v8::Integer>
-
-# define _NAN_INDEX_GETTER_ARGS_TYPE const v8::AccessorInfo&
-# define _NAN_INDEX_GETTER_ARGS _NAN_INDEX_GETTER_ARGS_TYPE args
-# define _NAN_INDEX_GETTER_RETURN_TYPE v8::Handle<v8::Value>
-
-# define _NAN_INDEX_SETTER_ARGS_TYPE const v8::AccessorInfo&
-# define _NAN_INDEX_SETTER_ARGS _NAN_INDEX_SETTER_ARGS_TYPE args
-# define _NAN_INDEX_SETTER_RETURN_TYPE v8::Handle<v8::Value>
-
-# define _NAN_INDEX_ENUMERATOR_ARGS_TYPE const v8::AccessorInfo&
-# define _NAN_INDEX_ENUMERATOR_ARGS _NAN_INDEX_ENUMERATOR_ARGS_TYPE args
-# define _NAN_INDEX_ENUMERATOR_RETURN_TYPE v8::Handle<v8::Array>
-
-# define _NAN_INDEX_DELETER_ARGS_TYPE const v8::AccessorInfo&
-# define _NAN_INDEX_DELETER_ARGS _NAN_INDEX_DELETER_ARGS_TYPE args
-# define _NAN_INDEX_DELETER_RETURN_TYPE v8::Handle<v8::Boolean>
-
-# define _NAN_INDEX_QUERY_ARGS_TYPE const v8::AccessorInfo&
-# define _NAN_INDEX_QUERY_ARGS _NAN_INDEX_QUERY_ARGS_TYPE args
-# define _NAN_INDEX_QUERY_RETURN_TYPE v8::Handle<v8::Integer>
-
-# define NanGetInternalFieldPointer(object, index)                             \
-    object->GetPointerFromInternalField(index)
-# define NanSetInternalFieldPointer(object, index, value)                      \
-    object->SetPointerInInternalField(index, value)
-# define NAN_WEAK_CALLBACK(type, name)                                         \
-    void name(                                                                 \
-        v8::Persistent<v8::Value> object                                       \
-      , void *data)
-# define NAN_WEAK_CALLBACK_OBJECT object
-# define NAN_WEAK_CALLBACK_DATA(type) ((type) data)
-
-# define NanScope() v8::HandleScope scope
-# define NanLocker() v8::Locker locker
-# define NanUnlocker() v8::Unlocker unlocker
-# define NanReturnValue(value) return scope.Close(value)
-# define NanReturnUndefined() return v8::Undefined()
-# define NanReturnNull() return v8::Null()
-# define NanReturnEmptyString() return v8::String::Empty()
-# define NanInitPersistent(type, name, obj)                                    \
-    v8::Persistent<type> name = v8::Persistent<type>::New(obj)
-# define NanAssignPersistent(type, handle, obj)                                \
-    handle = v8::Persistent<type>::New(obj)
-# define NanObjectWrapHandle(obj) obj->handle_
-# define NanMakeWeak(handle, parameters, callback)                             \
-    handle.MakeWeak(parameters, callback)
-
-# define _NAN_ERROR(fun, errmsg)                                               \
-    fun(v8::String::New(errmsg))
-
-# define _NAN_THROW_ERROR(fun, errmsg)                                         \
-    do {                                                                       \
-      NanScope();                                                              \
-      return v8::ThrowException(_NAN_ERROR(fun, errmsg));                      \
-    } while (0);
-
-  template<class T> static NAN_INLINE(v8::Local<T> NanNewLocal(
-      v8::Handle<T> val
-  )) {
-    return v8::Local<T>::New(val);
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanError(const char* errmsg)) {
-    return _NAN_ERROR(v8::Exception::Error, errmsg);
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanThrowError(const char* errmsg)) {
-    _NAN_THROW_ERROR(v8::Exception::Error, errmsg);
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanThrowError(
-      v8::Handle<v8::Value> error
-  )) {
-    NanScope();
-    return v8::ThrowException(error);
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanError(
-      const char *msg
-    , const int errorNumber
-  )) {
-    v8::Local<v8::Value> err = v8::Exception::Error(v8::String::New(msg));
-    v8::Local<v8::Object> obj = err.As<v8::Object>();
-    obj->Set(v8::String::New("code"), v8::Int32::New(errorNumber));
-    return err;
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanThrowError(
-      const char *msg
-    , const int errorNumber
-  )) {
-    return NanThrowError(NanError(msg, errorNumber));
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanTypeError(const char* errmsg)) {
-    return _NAN_ERROR(v8::Exception::TypeError, errmsg);
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanThrowTypeError(
-      const char* errmsg
-  )) {
-    _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg);
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanRangeError(
-      const char* errmsg
-  )) {
-    return _NAN_ERROR(v8::Exception::RangeError, errmsg);
-  }
-
-  static NAN_INLINE(v8::Handle<v8::Value> NanThrowRangeError(
-      const char* errmsg
-  )) {
-    _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg);
-  }
-
-  template<class T> static NAN_INLINE(void NanDisposePersistent(
-      v8::Persistent<T> &handle
-  )) {
-    handle.Dispose();
-    handle.Clear();
-  }
-
-  template<class T> static NAN_DEPRECATED(void NanDispose(
-      v8::Persistent<T> &handle
-  )) {
-    NanDisposePersistent(handle);
-  }
-
-  static NAN_INLINE(v8::Local<v8::Object> NanNewBufferHandle (
-      char *data
-    , size_t length
-    , node::Buffer::free_callback callback
-    , void *hint
-  )) {
-    return NanNewLocal<v8::Object>(
-        node::Buffer::New(data, length, callback, hint)->handle_);
-  }
-
-  static NAN_INLINE(v8::Local<v8::Object> NanNewBufferHandle (
-      char *data
-    , uint32_t size
-  )) {
-    return NanNewLocal<v8::Object>(node::Buffer::New(data, size)->handle_);
-  }
-
-  static NAN_INLINE(v8::Local<v8::Object> NanNewBufferHandle (uint32_t size)) {
-    return NanNewLocal<v8::Object>(node::Buffer::New(size)->handle_);
-  }
-
-  static NAN_INLINE(void FreeData(char *data, void *hint)) {
-    delete[] data;
-  }
-
-  static NAN_INLINE(v8::Local<v8::Object> NanBufferUse(
-      char* data
-    , uint32_t size
-  )) {
-    return NanNewLocal<v8::Object>(
-        node::Buffer::New(data, size, FreeData, NULL)->handle_);
-  }
-
-  template <class TypeName>
-  static NAN_INLINE(v8::Local<TypeName> NanPersistentToLocal(
-     const v8::Persistent<TypeName>& persistent
-  )) {
-    return NanNewLocal<TypeName>(persistent);
-  }
-
-  static NAN_INLINE(bool NanHasInstance(
-      v8::Persistent<v8::FunctionTemplate>& function_template
-    , v8::Handle<v8::Value> value
-  )) {
-    return function_template->HasInstance(value);
-  }
-
-  static NAN_INLINE(v8::Local<v8::Context> NanNewContextHandle(
-      v8::ExtensionConfiguration* extensions = NULL
-    , v8::Handle<v8::ObjectTemplate> tmpl = v8::Handle<v8::ObjectTemplate>()
-    , v8::Handle<v8::Value> obj = v8::Handle<v8::Value>()
-  )) {
-    v8::Persistent<v8::Context> ctx = v8::Context::New(extensions, tmpl, obj);
-    v8::Local<v8::Context> lctx = NanNewLocal<v8::Context>(ctx);
-    ctx.Dispose();
-    return lctx;
-  }
-
-#endif // node version
-
-#define NAN_METHOD(name) _NAN_METHOD_RETURN_TYPE name(_NAN_METHOD_ARGS)
-#define NAN_GETTER(name)                                                       \
-    _NAN_GETTER_RETURN_TYPE name(                                              \
-        v8::Local<v8::String> property                                         \
-      , _NAN_GETTER_ARGS)
-#define NAN_SETTER(name)                                                       \
-    _NAN_SETTER_RETURN_TYPE name(                                              \
-        v8::Local<v8::String> property                                         \
-      , v8::Local<v8::Value> value                                             \
-      , _NAN_SETTER_ARGS)
-#define NAN_PROPERTY_GETTER(name)                                              \
-    _NAN_PROPERTY_GETTER_RETURN_TYPE name(                                     \
-        v8::Local<v8::String> property                                         \
-      , _NAN_PROPERTY_GETTER_ARGS)
-#define NAN_PROPERTY_SETTER(name)                                              \
-    _NAN_PROPERTY_SETTER_RETURN_TYPE name(                                     \
-        v8::Local<v8::String> property                                         \
-      , v8::Local<v8::Value> value                                             \
-      , _NAN_PROPERTY_SETTER_ARGS)
-#define NAN_PROPERTY_ENUMERATOR(name)                                          \
-    _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE name(_NAN_PROPERTY_ENUMERATOR_ARGS)
-#define NAN_PROPERTY_DELETER(name)                                             \
-    _NAN_PROPERTY_DELETER_RETURN_TYPE name(                                    \
-        v8::Local<v8::String> property                                         \
-      , _NAN_PROPERTY_DELETER_ARGS)
-#define NAN_PROPERTY_QUERY(name)                                               \
-    _NAN_PROPERTY_QUERY_RETURN_TYPE name(                                      \
-        v8::Local<v8::String> property                                         \
-      , _NAN_PROPERTY_QUERY_ARGS)
-# define NAN_INDEX_GETTER(name)                                                \
-    _NAN_INDEX_GETTER_RETURN_TYPE name(uint32_t index, _NAN_INDEX_GETTER_ARGS)
-#define NAN_INDEX_SETTER(name)                                                 \
-    _NAN_INDEX_SETTER_RETURN_TYPE name(                                        \
-        uint32_t index                                                         \
-      , v8::Local<v8::Value> value                                             \
-      , _NAN_INDEX_SETTER_ARGS)
-#define NAN_INDEX_ENUMERATOR(name)                                             \
-    _NAN_INDEX_ENUMERATOR_RETURN_TYPE name(_NAN_INDEX_ENUMERATOR_ARGS)
-#define NAN_INDEX_DELETER(name)                                                \
-    _NAN_INDEX_DELETER_RETURN_TYPE name(                                       \
-        uint32_t index                                                         \
-      , _NAN_INDEX_DELETER_ARGS)
-#define NAN_INDEX_QUERY(name)                                                  \
-    _NAN_INDEX_QUERY_RETURN_TYPE name(uint32_t index, _NAN_INDEX_QUERY_ARGS)
-
-class NanCallback {
- public:
-  NanCallback() {
-    NanScope();
-    v8::Local<v8::Object> obj = v8::Object::New();
-    NanAssignPersistent(v8::Object, handle, obj);
-  }
-
-  NanCallback(const v8::Handle<v8::Function> &fn) {
-    NanScope();
-    v8::Local<v8::Object> obj = v8::Object::New();
-    NanAssignPersistent(v8::Object, handle, obj);
-    SetFunction(fn);
-  }
-
-  ~NanCallback() {
-    if (handle.IsEmpty()) return;
-    handle.Dispose();
-    handle.Clear();
-  }
-
-  NAN_INLINE(void SetFunction(const v8::Handle<v8::Function> &fn)) {
-    NanScope();
-    NanPersistentToLocal(handle)->Set(NanSymbol("callback"), fn);
-  }
-
-  NAN_INLINE(v8::Local<v8::Function> GetFunction ()) {
-    return NanPersistentToLocal(handle)->Get(NanSymbol("callback"))
-        .As<v8::Function>();
-  }
-
-  void Call(int argc, v8::Handle<v8::Value> argv[]) {
-    NanScope();
-
-#if NODE_VERSION_AT_LEAST(0, 8, 0)
-    v8::Local<v8::Function> callback = NanPersistentToLocal(handle)->
-        Get(NanSymbol("callback")).As<v8::Function>();
-    node::MakeCallback(
-        v8::Context::GetCurrent()->Global()
-      , callback
-      , argc
-      , argv
-    );
-#else
-    node::MakeCallback(handle, "callback", argc, argv);
-#endif
-  }
-
- private:
-  v8::Persistent<v8::Object> handle;
-};
-
-/* abstract */ class NanAsyncWorker {
-public:
-  NanAsyncWorker (NanCallback *callback) : callback(callback) {
-    request.data = this;
-    errmsg = NULL;
-  }
-
-  virtual ~NanAsyncWorker () {
-    NanScope();
-
-    if (!persistentHandle.IsEmpty())
-      NanDisposePersistent(persistentHandle);
-    if (callback)
-      delete callback;
-    if (errmsg)
-      delete errmsg;
-  }
-
-  virtual void WorkComplete () {
-    NanScope();
-
-    if (errmsg == NULL)
-      HandleOKCallback();
-    else
-      HandleErrorCallback();
-    delete callback;
-    callback = NULL;
-  }
-
-  void SavePersistent(const char *key, v8::Local<v8::Object> &obj) {
-    NanScope();
-
-    v8::Local<v8::Object> handle = NanPersistentToLocal(persistentHandle);
-    handle->Set(NanSymbol(key), obj);
-  }
-
-  v8::Local<v8::Object> GetFromPersistent(const char *key) {
-    NanScope();
-
-    v8::Local<v8::Object> handle = NanPersistentToLocal(persistentHandle);
-    return handle->Get(NanSymbol(key)).As<v8::Object>();
-  }
-
-  virtual void Execute () =0;
-
-  uv_work_t request;
-
-protected:
-  v8::Persistent<v8::Object> persistentHandle;
-  NanCallback *callback;
-  const char *errmsg;
-
-  virtual void HandleOKCallback () {
-    NanScope();
-
-    callback->Call(0, NULL);
-  };
-
-  virtual void HandleErrorCallback () {
-    NanScope();
-
-    v8::Local<v8::Value> argv[] = {
-        v8::Exception::Error(v8::String::New(errmsg))
-    };
-    callback->Call(1, argv);
-  }
-};
-
-NAN_INLINE(void NanAsyncExecute (uv_work_t* req)) {
-  NanAsyncWorker *worker = static_cast<NanAsyncWorker*>(req->data);
-  worker->Execute();
-}
-
-NAN_INLINE(void NanAsyncExecuteComplete (uv_work_t* req)) {
-  NanAsyncWorker* worker = static_cast<NanAsyncWorker*>(req->data);
-  worker->WorkComplete();
-  delete worker;
-}
-
-NAN_INLINE(void NanAsyncQueueWorker (NanAsyncWorker* worker)) {
-  uv_queue_work(
-      uv_default_loop()
-    , &worker->request
-    , NanAsyncExecute
-    , (uv_after_work_cb)NanAsyncExecuteComplete
-  );
-}
-
-//// Base 64 ////
-
-#define _nan_base64_encoded_size(size) ((size + 2 - ((size + 2) % 3)) / 3 * 4)
-
-// Doesn't check for padding at the end.  Can be 1-2 bytes over.
-static NAN_INLINE(size_t _nan_base64_decoded_size_fast(size_t size)) {
-  size_t remainder = size % 4;
-
-  size = (size / 4) * 3;
-  if (remainder) {
-    if (size == 0 && remainder == 1) {
-      // special case: 1-byte input cannot be decoded
-      size = 0;
-    } else {
-      // non-padded input, add 1 or 2 extra bytes
-      size += 1 + (remainder == 3);
-    }
-  }
-
-  return size;
-}
-
-template <typename TypeName>
-static NAN_INLINE(size_t _nan_base64_decoded_size(
-    const TypeName* src
-  , size_t size
-)) {
-  if (size == 0)
-    return 0;
-
-  if (src[size - 1] == '=')
-    size--;
-  if (size > 0 && src[size - 1] == '=')
-    size--;
-
-  return _nan_base64_decoded_size_fast(size);
-}
-
-// supports regular and URL-safe base64
-static const int _nan_unbase64_table[] = {
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -2, -1, -1
-  , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
-  , -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63
-  , 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1
-  , -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14
-  , 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63
-  , -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40
-  , 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
-  , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
-  , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
-  , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
-  , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
-  , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
-  , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
-  , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
-  , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
-};
-
-#define _nan_unbase64(x) _nan_unbase64_table[(uint8_t)(x)]
-
-template <typename TypeName> static size_t _nan_base64_decode(
-    char* buf
-  , size_t len
-  , const TypeName* src
-  , const size_t srcLen
-) {
-  char* dst = buf;
-  char* dstEnd = buf + len;
-  const TypeName* srcEnd = src + srcLen;
-
-  while (src < srcEnd && dst < dstEnd) {
-    int remaining = srcEnd - src;
-    char a, b, c, d;
-
-    while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--;
-    if (remaining == 0 || *src == '=') break;
-    a = _nan_unbase64(*src++);
-
-    while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--;
-    if (remaining <= 1 || *src == '=') break;
-    b = _nan_unbase64(*src++);
-
-    *dst++ = (a << 2) | ((b & 0x30) >> 4);
-    if (dst == dstEnd) break;
-
-    while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--;
-    if (remaining <= 2 || *src == '=') break;
-    c = _nan_unbase64(*src++);
-
-    *dst++ = ((b & 0x0F) << 4) | ((c & 0x3C) >> 2);
-    if (dst == dstEnd) break;
-
-    while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--;
-    if (remaining <= 3 || *src == '=') break;
-    d = _nan_unbase64(*src++);
-
-    *dst++ = ((c & 0x03) << 6) | (d & 0x3F);
-  }
-
-  return dst - buf;
-}
-
-//// HEX ////
-
-template <typename TypeName> unsigned _nan_hex2bin(TypeName c) {
-  if (c >= '0' && c <= '9') return c - '0';
-  if (c >= 'A' && c <= 'F') return 10 + (c - 'A');
-  if (c >= 'a' && c <= 'f') return 10 + (c - 'a');
-  return static_cast<unsigned>(-1);
-}
-
-template <typename TypeName> static size_t _nan_hex_decode(
-    char* buf
-  , size_t len
-  , const TypeName* src
-  , const size_t srcLen
-) {
-  size_t i;
-  for (i = 0; i < len && i * 2 + 1 < srcLen; ++i) {
-    unsigned a = _nan_hex2bin(src[i * 2 + 0]);
-    unsigned b = _nan_hex2bin(src[i * 2 + 1]);
-    if (!~a || !~b) return i;
-    buf[i] = a * 16 + b;
-  }
-
-  return i;
-}
-
-static bool _NanGetExternalParts(
-    v8::Handle<v8::Value> val
-  , const char** data
-  , size_t* len
-) {
-  if (node::Buffer::HasInstance(val)) {
-    *data = node::Buffer::Data(val.As<v8::Object>());
-    *len = node::Buffer::Length(val.As<v8::Object>());
-    return true;
-  }
-
-  assert(val->IsString());
-  v8::Local<v8::String> str = NanNewLocal(val.As<v8::String>());
-
-  if (str->IsExternalAscii()) {
-    const v8::String::ExternalAsciiStringResource* ext;
-    ext = str->GetExternalAsciiStringResource();
-    *data = ext->data();
-    *len = ext->length();
-    return true;
-
-  } else if (str->IsExternal()) {
-    const v8::String::ExternalStringResource* ext;
-    ext = str->GetExternalStringResource();
-    *data = reinterpret_cast<const char*>(ext->data());
-    *len = ext->length();
-    return true;
-  }
-
-  return false;
-}
-
-namespace Nan {
-  enum Encoding {ASCII, UTF8, BASE64, UCS2, BINARY, HEX, BUFFER};
-}
-
-static NAN_INLINE(void* NanRawString(
-    v8::Handle<v8::Value> from
-  , enum Nan::Encoding encoding
-  , size_t *datalen
-  , void *buf
-  , size_t buflen
-  , int flags
-)) {
-  NanScope();
-
-  size_t sz_;
-  size_t term_len = !(flags & v8::String::NO_NULL_TERMINATION);
-  char *data = NULL;
-  size_t len;
-  bool is_extern = _NanGetExternalParts(
-      from
-    , const_cast<const char**>(&data)
-    , &len);
-
-  if (is_extern && !term_len) {
-    NanSetPointerSafe(datalen, len);
-    return data;
-  }
-
-  v8::Local<v8::String> toStr = from->ToString();
-
-  char *to = (char*)buf;
-
-  switch(encoding) {
-    case Nan::ASCII:
-#if NODE_MODULE_VERSION < 0x0C
-      sz_ = toStr->Length();
-      if (to == NULL) {
-        to = new char[sz_ + term_len];
-      } else {
-        assert(buflen >= sz_ + term_len && "too small buffer");
-      }
-      NanSetPointerSafe<size_t>(
-          datalen
-        , toStr->WriteAscii(to, 0, sz_ + term_len, flags));
-      return to;
-#endif
-    case Nan::BINARY:
-    case Nan::BUFFER:
-      sz_ = toStr->Length();
-      if (to == NULL) {
-        to = new char[sz_ + term_len];
-      } else {
-        assert(buflen >= sz_ + term_len && "too small buffer");
-      }
-#if NODE_MODULE_VERSION < 0x0C
-      // TODO(isaacs): THIS IS AWFUL!!!
-      // AGREE(kkoopa)
-      {
-        uint16_t* twobytebuf = new uint16_t[sz_ + term_len];
-
-        size_t len = toStr->Write(twobytebuf, 0, sz_ + term_len, flags);
-
-        for (size_t i = 0; i < sz_ + term_len && i < len + term_len; i++) {
-          unsigned char *b = reinterpret_cast<unsigned char*>(&twobytebuf[i]);
-          to[i] = *b;
-        }
-
-        NanSetPointerSafe<size_t>(datalen, len);
-
-        delete[] twobytebuf;
-        return to;
-      }
-#else
-      NanSetPointerSafe<size_t>(
-        datalen,
-        toStr->WriteOneByte(
-            reinterpret_cast<uint8_t *>(to)
-          , 0
-          , sz_ + term_len
-          , flags));
-      return to;
-#endif
-    case Nan::UTF8:
-      sz_ = toStr->Utf8Length();
-      if (to == NULL) {
-        to = new char[sz_ + term_len];
-      } else {
-        assert(buflen >= sz_ + term_len && "too small buffer");
-      }
-      NanSetPointerSafe<size_t>(
-          datalen
-        , toStr->WriteUtf8(to, sz_ + term_len, NULL, flags) - term_len);
-      return to;
-    case Nan::BASE64:
-      {
-        v8::String::Value value(toStr);
-        sz_ = _nan_base64_decoded_size(*value, value.length());
-        if (to == NULL) {
-          to = new char[sz_ + term_len];
-        } else {
-          assert(buflen >= sz_ + term_len);
-        }
-        NanSetPointerSafe<size_t>(
-            datalen
-          , _nan_base64_decode(to, sz_, *value, value.length()));
-        if (term_len) {
-          to[sz_] = '\0';
-        }
-        return to;
-      }
-    case Nan::UCS2:
-      {
-        sz_ = toStr->Length();
-        if (to == NULL) {
-          to = new char[(sz_ + term_len) * 2];
-        } else {
-          assert(buflen >= (sz_ + term_len) * 2 && "too small buffer");
-        }
-
-        int bc = 2 * toStr->Write(
-            reinterpret_cast<uint16_t *>(to)
-          , 0
-          , sz_ + term_len
-          , flags);
-        NanSetPointerSafe<size_t>(datalen, bc);
-        return to;
-      }
-    case Nan::HEX:
-      {
-        v8::String::Value value(toStr);
-        sz_ = value.length();
-        assert(!(sz_ & 1) && "bad hex data");
-        if (to == NULL) {
-          to = new char[sz_ / 2 + term_len];
-        } else {
-          assert(buflen >= sz_ / 2 + term_len && "too small buffer");
-        }
-        NanSetPointerSafe<size_t>(
-            datalen
-          , _nan_hex_decode(to, sz_ / 2, *value, value.length()));
-      }
-      if (term_len) {
-        to[sz_ / 2] = '\0';
-      }
-      return to;
-    default:
-      assert(0 && "unknown encoding");
-  }
-  return to;
-}
-
-static NAN_INLINE(char* NanFromV8String(
-    v8::Handle<v8::Value> from
-  , enum Nan::Encoding encoding = Nan::UTF8
-  , size_t *datalen = NULL
-  , char *buf = NULL
-  , size_t buflen = 0
-  , int flags =
-        v8::String::NO_NULL_TERMINATION | v8::String::HINT_MANY_WRITES_EXPECTED
-)) {
-    return (char *) NanRawString(from, encoding, datalen, buf, buflen, flags);
-}
-
-static NAN_INLINE(char* NanCString(
-    v8::Handle<v8::Value> from
-  , size_t *datalen
-  , char *buf = NULL
-  , size_t buflen = 0
-  , int flags = v8::String::NO_OPTIONS
-)) {
-    return (char *) NanRawString(from, Nan::UTF8, datalen, buf, buflen, flags);
-}
-
-#endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/ext/win32/ia32/bson.node
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/win32/ia32/bson.node b/web/demos/package/node_modules/mongodb/node_modules/bson/ext/win32/ia32/bson.node
deleted file mode 100644
index 7f54835..0000000
Binary files a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/win32/ia32/bson.node and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/ext/win32/x64/bson.node
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/win32/x64/bson.node b/web/demos/package/node_modules/mongodb/node_modules/bson/ext/win32/x64/bson.node
deleted file mode 100644
index f01f8be..0000000
Binary files a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/win32/x64/bson.node and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/ext/wscript
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/wscript b/web/demos/package/node_modules/mongodb/node_modules/bson/ext/wscript
deleted file mode 100644
index 40f5317..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/wscript
+++ /dev/null
@@ -1,39 +0,0 @@
-import Options
-from os import unlink, symlink, popen
-from os.path import exists 
-
-srcdir = "."
-blddir = "build"
-VERSION = "0.1.0"
-
-def set_options(opt):
-  opt.tool_options("compiler_cxx")
-  opt.add_option( '--debug'
-                , action='store_true'
-                , default=False
-                , help='Build debug variant [Default: False]'
-                , dest='debug'
-                )  
-
-def configure(conf):
-  conf.check_tool("compiler_cxx")
-  conf.check_tool("node_addon")
-  conf.env.append_value('CXXFLAGS', ['-O3', '-funroll-loops'])
-
-  # conf.env.append_value('CXXFLAGS', ['-DDEBUG', '-g', '-O0', '-Wall', '-Wextra'])
-  # conf.check(lib='node', libpath=['/usr/lib', '/usr/local/lib'], uselib_store='NODE')
-
-def build(bld):
-  obj = bld.new_task_gen("cxx", "shlib", "node_addon")
-  obj.target = "bson"
-  obj.source = ["bson.cc"]
-  # obj.uselib = "NODE"
-
-def shutdown():
-  # HACK to get compress.node out of build directory.
-  # better way to do this?
-  if Options.commands['clean']:
-    if exists('bson.node'): unlink('bson.node')
-  else:
-    if exists('build/default/bson.node') and not exists('bson.node'):
-      symlink('build/default/bson.node', 'bson.node')

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/binary.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/binary.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/binary.js
deleted file mode 100644
index 82d4d04..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/binary.js
+++ /dev/null
@@ -1,339 +0,0 @@
-/**
- * Module dependencies.
- */
-if(typeof window === 'undefined') { 
-  var Buffer = require('buffer').Buffer; // TODO just use global Buffer
-}
-
-// Binary default subtype
-var BSON_BINARY_SUBTYPE_DEFAULT = 0;
-
-/**
- * @ignore
- * @api private
- */
-var writeStringToArray = function(data) {
-  // Create a buffer
-  var buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(data.length)) : new Array(data.length);
-  // Write the content to the buffer
-  for(var i = 0; i < data.length; i++) {
-    buffer[i] = data.charCodeAt(i);
-  }  
-  // Write the string to the buffer
-  return buffer;
-}
-
-/**
- * Convert Array ot Uint8Array to Binary String
- *
- * @ignore
- * @api private
- */
-var convertArraytoUtf8BinaryString = function(byteArray, startIndex, endIndex) {
-  var result = "";
-  for(var i = startIndex; i < endIndex; i++) {
-   result = result + String.fromCharCode(byteArray[i]);
-  }
-  return result;  
-};
-
-/**
- * A class representation of the BSON Binary type.
- * 
- * Sub types
- *  - **BSON.BSON_BINARY_SUBTYPE_DEFAULT**, default BSON type.
- *  - **BSON.BSON_BINARY_SUBTYPE_FUNCTION**, BSON function type.
- *  - **BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY**, BSON byte array type.
- *  - **BSON.BSON_BINARY_SUBTYPE_UUID**, BSON uuid type.
- *  - **BSON.BSON_BINARY_SUBTYPE_MD5**, BSON md5 type.
- *  - **BSON.BSON_BINARY_SUBTYPE_USER_DEFINED**, BSON user defined type.
- *
- * @class Represents the Binary BSON type.
- * @param {Buffer} buffer a buffer object containing the binary data.
- * @param {Number} [subType] the option binary type.
- * @return {Grid}
- */
-function Binary(buffer, subType) {
-  if(!(this instanceof Binary)) return new Binary(buffer, subType);
-  
-  this._bsontype = 'Binary';
-
-  if(buffer instanceof Number) {
-    this.sub_type = buffer;
-    this.position = 0;
-  } else {    
-    this.sub_type = subType == null ? BSON_BINARY_SUBTYPE_DEFAULT : subType;
-    this.position = 0;
-  }
-
-  if(buffer != null && !(buffer instanceof Number)) {
-    // Only accept Buffer, Uint8Array or Arrays
-    if(typeof buffer == 'string') {
-      // Different ways of writing the length of the string for the different types
-      if(typeof Buffer != 'undefined') {
-        this.buffer = new Buffer(buffer);
-      } else if(typeof Uint8Array != 'undefined' || (Object.prototype.toString.call(buffer) == '[object Array]')) {
-        this.buffer = writeStringToArray(buffer);
-      } else {
-        throw new Error("only String, Buffer, Uint8Array or Array accepted");
-      }
-    } else {
-      this.buffer = buffer;      
-    }
-    this.position = buffer.length;
-  } else {
-    if(typeof Buffer != 'undefined') {
-      this.buffer =  new Buffer(Binary.BUFFER_SIZE);      
-    } else if(typeof Uint8Array != 'undefined'){
-      this.buffer = new Uint8Array(new ArrayBuffer(Binary.BUFFER_SIZE));
-    } else {
-      this.buffer = new Array(Binary.BUFFER_SIZE);
-    }
-    // Set position to start of buffer
-    this.position = 0;
-  }
-};
-
-/**
- * Updates this binary with byte_value.
- *
- * @param {Character} byte_value a single byte we wish to write.
- * @api public
- */
-Binary.prototype.put = function put(byte_value) {
-  // If it's a string and a has more than one character throw an error
-  if(byte_value['length'] != null && typeof byte_value != 'number' && byte_value.length != 1) throw new Error("only accepts single character String, Uint8Array or Array");
-  if(typeof byte_value != 'number' && byte_value < 0 || byte_value > 255) throw new Error("only accepts number in a valid unsigned byte range 0-255");
-  
-  // Decode the byte value once
-  var decoded_byte = null;
-  if(typeof byte_value == 'string') {
-    decoded_byte = byte_value.charCodeAt(0);      
-  } else if(byte_value['length'] != null) {
-    decoded_byte = byte_value[0];
-  } else {
-    decoded_byte = byte_value;
-  }
-  
-  if(this.buffer.length > this.position) {
-    this.buffer[this.position++] = decoded_byte;
-  } else {
-    if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) {    
-      // Create additional overflow buffer
-      var buffer = new Buffer(Binary.BUFFER_SIZE + this.buffer.length);
-      // Combine the two buffers together
-      this.buffer.copy(buffer, 0, 0, this.buffer.length);
-      this.buffer = buffer;
-      this.buffer[this.position++] = decoded_byte;
-    } else {
-      var buffer = null;
-      // Create a new buffer (typed or normal array)
-      if(Object.prototype.toString.call(this.buffer) == '[object Uint8Array]') {
-        buffer = new Uint8Array(new ArrayBuffer(Binary.BUFFER_SIZE + this.buffer.length));
-      } else {
-        buffer = new Array(Binary.BUFFER_SIZE + this.buffer.length);
-      }      
-      
-      // We need to copy all the content to the new array
-      for(var i = 0; i < this.buffer.length; i++) {
-        buffer[i] = this.buffer[i];
-      }
-      
-      // Reassign the buffer
-      this.buffer = buffer;
-      // Write the byte
-      this.buffer[this.position++] = decoded_byte;
-    }
-  }
-};
-
-/**
- * Writes a buffer or string to the binary.
- *
- * @param {Buffer|String} string a string or buffer to be written to the Binary BSON object.
- * @param {Number} offset specify the binary of where to write the content.
- * @api public
- */
-Binary.prototype.write = function write(string, offset) {
-  offset = typeof offset == 'number' ? offset : this.position;
-
-  // If the buffer is to small let's extend the buffer
-  if(this.buffer.length < offset + string.length) {
-    var buffer = null;
-    // If we are in node.js
-    if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) {      
-      buffer = new Buffer(this.buffer.length + string.length);
-      this.buffer.copy(buffer, 0, 0, this.buffer.length);      
-    } else if(Object.prototype.toString.call(this.buffer) == '[object Uint8Array]') {
-      // Create a new buffer
-      buffer = new Uint8Array(new ArrayBuffer(this.buffer.length + string.length))
-      // Copy the content
-      for(var i = 0; i < this.position; i++) {
-        buffer[i] = this.buffer[i];
-      }
-    }
-    
-    // Assign the new buffer
-    this.buffer = buffer;
-  }
-
-  if(typeof Buffer != 'undefined' && Buffer.isBuffer(string) && Buffer.isBuffer(this.buffer)) {
-    string.copy(this.buffer, offset, 0, string.length);
-    this.position = (offset + string.length) > this.position ? (offset + string.length) : this.position;
-    // offset = string.length
-  } else if(typeof Buffer != 'undefined' && typeof string == 'string' && Buffer.isBuffer(this.buffer)) {
-    this.buffer.write(string, 'binary', offset);
-    this.position = (offset + string.length) > this.position ? (offset + string.length) : this.position;
-    // offset = string.length;
-  } else if(Object.prototype.toString.call(string) == '[object Uint8Array]' 
-    || Object.prototype.toString.call(string) == '[object Array]' && typeof string != 'string') {      
-    for(var i = 0; i < string.length; i++) {
-      this.buffer[offset++] = string[i];
-    }    
-
-    this.position = offset > this.position ? offset : this.position;
-  } else if(typeof string == 'string') {
-    for(var i = 0; i < string.length; i++) {
-      this.buffer[offset++] = string.charCodeAt(i);
-    }
-
-    this.position = offset > this.position ? offset : this.position;
-  }
-};
-
-/**
- * Reads **length** bytes starting at **position**.
- *
- * @param {Number} position read from the given position in the Binary.
- * @param {Number} length the number of bytes to read.
- * @return {Buffer}
- * @api public
- */
-Binary.prototype.read = function read(position, length) {
-  length = length && length > 0
-    ? length
-    : this.position;
-  
-  // Let's return the data based on the type we have
-  if(this.buffer['slice']) {
-    return this.buffer.slice(position, position + length);
-  } else {
-    // Create a buffer to keep the result
-    var buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(length)) : new Array(length);
-    for(var i = 0; i < length; i++) {
-      buffer[i] = this.buffer[position++];
-    }
-  }
-  // Return the buffer
-  return buffer;
-};
-
-/**
- * Returns the value of this binary as a string.
- *
- * @return {String}
- * @api public
- */
-Binary.prototype.value = function value(asRaw) {
-  asRaw = asRaw == null ? false : asRaw;  
-  
-  // If it's a node.js buffer object
-  if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) {
-    return asRaw ? this.buffer.slice(0, this.position) : this.buffer.toString('binary', 0, this.position);
-  } else {
-    if(asRaw) {
-      // we support the slice command use it
-      if(this.buffer['slice'] != null) {
-        return this.buffer.slice(0, this.position);
-      } else {
-        // Create a new buffer to copy content to
-        var newBuffer = Object.prototype.toString.call(this.buffer) == '[object Uint8Array]' ? new Uint8Array(new ArrayBuffer(this.position)) : new Array(this.position);
-        // Copy content
-        for(var i = 0; i < this.position; i++) {
-          newBuffer[i] = this.buffer[i];
-        }
-        // Return the buffer
-        return newBuffer;
-      }
-    } else {
-      return convertArraytoUtf8BinaryString(this.buffer, 0, this.position);
-    }
-  }
-};
-
-/**
- * Length.
- *
- * @return {Number} the length of the binary.
- * @api public
- */
-Binary.prototype.length = function length() {
-  return this.position;
-};
-
-/**
- * @ignore
- * @api private
- */
-Binary.prototype.toJSON = function() {
-  return this.buffer != null ? this.buffer.toString('base64') : '';
-}
-
-/**
- * @ignore
- * @api private
- */
-Binary.prototype.toString = function(format) {
-  return this.buffer != null ? this.buffer.slice(0, this.position).toString(format) : '';
-}
-
-Binary.BUFFER_SIZE = 256;
-
-/**
- * Default BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_DEFAULT = 0;
-/**
- * Function BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_FUNCTION = 1;
-/**
- * Byte Array BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_BYTE_ARRAY = 2;
-/**
- * OLD UUID BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_UUID_OLD = 3;
-/**
- * UUID BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_UUID = 4;
-/**
- * MD5 BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_MD5 = 5;
-/**
- * User BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_USER_DEFINED = 128;
-
-/**
- * Expose.
- */
-exports.Binary = Binary;
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/binary_parser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/binary_parser.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/binary_parser.js
deleted file mode 100644
index d2fc811..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/binary_parser.js
+++ /dev/null
@@ -1,385 +0,0 @@
-/**
- * Binary Parser.
- * Jonas Raoni Soares Silva
- * http://jsfromhell.com/classes/binary-parser [v1.0]
- */
-var chr = String.fromCharCode;
-
-var maxBits = [];
-for (var i = 0; i < 64; i++) {
-	maxBits[i] = Math.pow(2, i);
-}
-
-function BinaryParser (bigEndian, allowExceptions) {
-  if(!(this instanceof BinaryParser)) return new BinaryParser(bigEndian, allowExceptions);
-  
-	this.bigEndian = bigEndian;
-	this.allowExceptions = allowExceptions;
-};
-
-BinaryParser.warn = function warn (msg) {
-	if (this.allowExceptions) {
-		throw new Error(msg);
-  }
-
-	return 1;
-};
-
-BinaryParser.decodeFloat = function decodeFloat (data, precisionBits, exponentBits) {
-	var b = new this.Buffer(this.bigEndian, data);
-
-	b.checkBuffer(precisionBits + exponentBits + 1);
-
-	var bias = maxBits[exponentBits - 1] - 1
-    , signal = b.readBits(precisionBits + exponentBits, 1)
-    , exponent = b.readBits(precisionBits, exponentBits)
-    , significand = 0
-    , divisor = 2
-    , curByte = b.buffer.length + (-precisionBits >> 3) - 1;
-
-	do {
-		for (var byteValue = b.buffer[ ++curByte ], startBit = precisionBits % 8 || 8, mask = 1 << startBit; mask >>= 1; ( byteValue & mask ) && ( significand += 1 / divisor ), divisor *= 2 );
-	} while (precisionBits -= startBit);
-
-	return exponent == ( bias << 1 ) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity : ( 1 + signal * -2 ) * ( exponent || significand ? !exponent ? Math.pow( 2, -bias + 1 ) * significand : Math.pow( 2, exponent - bias ) * ( 1 + significand ) : 0 );
-};
-
-BinaryParser.decodeInt = function decodeInt (data, bits, signed, forceBigEndian) {
-  var b = new this.Buffer(this.bigEndian || forceBigEndian, data)
-      , x = b.readBits(0, bits)
-      , max = maxBits[bits]; //max = Math.pow( 2, bits );
-  
-  return signed && x >= max / 2
-      ? x - max
-      : x;
-};
-
-BinaryParser.encodeFloat = function encodeFloat (data, precisionBits, exponentBits) {
-	var bias = maxBits[exponentBits - 1] - 1
-    , minExp = -bias + 1
-    , maxExp = bias
-    , minUnnormExp = minExp - precisionBits
-    , n = parseFloat(data)
-    , status = isNaN(n) || n == -Infinity || n == +Infinity ? n : 0
-    ,	exp = 0
-    , len = 2 * bias + 1 + precisionBits + 3
-    , bin = new Array(len)
-    , signal = (n = status !== 0 ? 0 : n) < 0
-    , intPart = Math.floor(n = Math.abs(n))
-    , floatPart = n - intPart
-    , lastBit
-    , rounded
-    , result
-    , i
-    , j;
-
-	for (i = len; i; bin[--i] = 0);
-
-	for (i = bias + 2; intPart && i; bin[--i] = intPart % 2, intPart = Math.floor(intPart / 2));
-
-	for (i = bias + 1; floatPart > 0 && i; (bin[++i] = ((floatPart *= 2) >= 1) - 0 ) && --floatPart);
-
-	for (i = -1; ++i < len && !bin[i];);
-
-	if (bin[(lastBit = precisionBits - 1 + (i = (exp = bias + 1 - i) >= minExp && exp <= maxExp ? i + 1 : bias + 1 - (exp = minExp - 1))) + 1]) {
-		if (!(rounded = bin[lastBit])) {
-			for (j = lastBit + 2; !rounded && j < len; rounded = bin[j++]);
-		}
-
-		for (j = lastBit + 1; rounded && --j >= 0; (bin[j] = !bin[j] - 0) && (rounded = 0));
-	}
-
-	for (i = i - 2 < 0 ? -1 : i - 3; ++i < len && !bin[i];);
-
-	if ((exp = bias + 1 - i) >= minExp && exp <= maxExp) {
-		++i;
-  } else if (exp < minExp) {
-		exp != bias + 1 - len && exp < minUnnormExp && this.warn("encodeFloat::float underflow");
-		i = bias + 1 - (exp = minExp - 1);
-	}
-
-	if (intPart || status !== 0) {
-		this.warn(intPart ? "encodeFloat::float overflow" : "encodeFloat::" + status);
-		exp = maxExp + 1;
-		i = bias + 2;
-
-		if (status == -Infinity) {
-			signal = 1;
-    } else if (isNaN(status)) {
-			bin[i] = 1;
-    }
-	}
-
-	for (n = Math.abs(exp + bias), j = exponentBits + 1, result = ""; --j; result = (n % 2) + result, n = n >>= 1);
-
-	for (n = 0, j = 0, i = (result = (signal ? "1" : "0") + result + bin.slice(i, i + precisionBits).join("")).length, r = []; i; j = (j + 1) % 8) {
-		n += (1 << j) * result.charAt(--i);
-		if (j == 7) {
-			r[r.length] = String.fromCharCode(n);
-			n = 0;
-		}
-	}
-
-	r[r.length] = n
-    ? String.fromCharCode(n)
-    : "";
-
-	return (this.bigEndian ? r.reverse() : r).join("");
-};
-
-BinaryParser.encodeInt = function encodeInt (data, bits, signed, forceBigEndian) {
-	var max = maxBits[bits];
-
-  if (data >= max || data < -(max / 2)) {
-    this.warn("encodeInt::overflow");
-    data = 0;
-  }
-
-	if (data < 0) {
-    data += max;
-  }
-
-	for (var r = []; data; r[r.length] = String.fromCharCode(data % 256), data = Math.floor(data / 256));
-
-	for (bits = -(-bits >> 3) - r.length; bits--; r[r.length] = "\0");
-
-  return ((this.bigEndian || forceBigEndian) ? r.reverse() : r).join("");
-};
-
-BinaryParser.toSmall    = function( data ){ return this.decodeInt( data,  8, true  ); };
-BinaryParser.fromSmall  = function( data ){ return this.encodeInt( data,  8, true  ); };
-BinaryParser.toByte     = function( data ){ return this.decodeInt( data,  8, false ); };
-BinaryParser.fromByte   = function( data ){ return this.encodeInt( data,  8, false ); };
-BinaryParser.toShort    = function( data ){ return this.decodeInt( data, 16, true  ); };
-BinaryParser.fromShort  = function( data ){ return this.encodeInt( data, 16, true  ); };
-BinaryParser.toWord     = function( data ){ return this.decodeInt( data, 16, false ); };
-BinaryParser.fromWord   = function( data ){ return this.encodeInt( data, 16, false ); };
-BinaryParser.toInt      = function( data ){ return this.decodeInt( data, 32, true  ); };
-BinaryParser.fromInt    = function( data ){ return this.encodeInt( data, 32, true  ); };
-BinaryParser.toLong     = function( data ){ return this.decodeInt( data, 64, true  ); };
-BinaryParser.fromLong   = function( data ){ return this.encodeInt( data, 64, true  ); };
-BinaryParser.toDWord    = function( data ){ return this.decodeInt( data, 32, false ); };
-BinaryParser.fromDWord  = function( data ){ return this.encodeInt( data, 32, false ); };
-BinaryParser.toQWord    = function( data ){ return this.decodeInt( data, 64, true ); };
-BinaryParser.fromQWord  = function( data ){ return this.encodeInt( data, 64, true ); };
-BinaryParser.toFloat    = function( data ){ return this.decodeFloat( data, 23, 8   ); };
-BinaryParser.fromFloat  = function( data ){ return this.encodeFloat( data, 23, 8   ); };
-BinaryParser.toDouble   = function( data ){ return this.decodeFloat( data, 52, 11  ); };
-BinaryParser.fromDouble = function( data ){ return this.encodeFloat( data, 52, 11  ); };
-
-// Factor out the encode so it can be shared by add_header and push_int32
-BinaryParser.encode_int32 = function encode_int32 (number, asArray) {
-  var a, b, c, d, unsigned;
-  unsigned = (number < 0) ? (number + 0x100000000) : number;
-  a = Math.floor(unsigned / 0xffffff);
-  unsigned &= 0xffffff;
-  b = Math.floor(unsigned / 0xffff);
-  unsigned &= 0xffff;
-  c = Math.floor(unsigned / 0xff);
-  unsigned &= 0xff;
-  d = Math.floor(unsigned);
-  return asArray ? [chr(a), chr(b), chr(c), chr(d)] : chr(a) + chr(b) + chr(c) + chr(d);
-};
-
-BinaryParser.encode_int64 = function encode_int64 (number) {
-  var a, b, c, d, e, f, g, h, unsigned;
-  unsigned = (number < 0) ? (number + 0x10000000000000000) : number;
-  a = Math.floor(unsigned / 0xffffffffffffff);
-  unsigned &= 0xffffffffffffff;
-  b = Math.floor(unsigned / 0xffffffffffff);
-  unsigned &= 0xffffffffffff;
-  c = Math.floor(unsigned / 0xffffffffff);
-  unsigned &= 0xffffffffff;
-  d = Math.floor(unsigned / 0xffffffff);
-  unsigned &= 0xffffffff;
-  e = Math.floor(unsigned / 0xffffff);
-  unsigned &= 0xffffff;
-  f = Math.floor(unsigned / 0xffff);
-  unsigned &= 0xffff;
-  g = Math.floor(unsigned / 0xff);
-  unsigned &= 0xff;
-  h = Math.floor(unsigned);
-  return chr(a) + chr(b) + chr(c) + chr(d) + chr(e) + chr(f) + chr(g) + chr(h);
-};
-
-/**
- * UTF8 methods
- */
-
-// Take a raw binary string and return a utf8 string
-BinaryParser.decode_utf8 = function decode_utf8 (binaryStr) {
-  var len = binaryStr.length
-    , decoded = ''
-    , i = 0
-    , c = 0
-    , c1 = 0
-    , c2 = 0
-    , c3;
-
-  while (i < len) {
-    c = binaryStr.charCodeAt(i);
-    if (c < 128) {
-      decoded += String.fromCharCode(c);
-      i++;
-    } else if ((c > 191) && (c < 224)) {
-	    c2 = binaryStr.charCodeAt(i+1);
-      decoded += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
-      i += 2;
-    } else {
-	    c2 = binaryStr.charCodeAt(i+1);
-	    c3 = binaryStr.charCodeAt(i+2);
-      decoded += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
-      i += 3;
-    }
-  }
-
-  return decoded;
-};
-
-// Encode a cstring
-BinaryParser.encode_cstring = function encode_cstring (s) {
-  return unescape(encodeURIComponent(s)) + BinaryParser.fromByte(0);
-};
-
-// Take a utf8 string and return a binary string
-BinaryParser.encode_utf8 = function encode_utf8 (s) {
-  var a = ""
-    , c;
-
-  for (var n = 0, len = s.length; n < len; n++) {
-    c = s.charCodeAt(n);
-
-    if (c < 128) {
-	    a += String.fromCharCode(c);
-    } else if ((c > 127) && (c < 2048)) {
-	    a += String.fromCharCode((c>>6) | 192) ;
-	    a += String.fromCharCode((c&63) | 128);
-    } else {
-      a += String.fromCharCode((c>>12) | 224);
-      a += String.fromCharCode(((c>>6) & 63) | 128);
-      a += String.fromCharCode((c&63) | 128);
-    }
-  }
-
-  return a;
-};
-
-BinaryParser.hprint = function hprint (s) {
-  var number;
-
-  for (var i = 0, len = s.length; i < len; i++) {
-    if (s.charCodeAt(i) < 32) {
-      number = s.charCodeAt(i) <= 15
-        ? "0" + s.charCodeAt(i).toString(16)
-        : s.charCodeAt(i).toString(16);        
-      process.stdout.write(number + " ")
-    } else {
-      number = s.charCodeAt(i) <= 15
-        ? "0" + s.charCodeAt(i).toString(16)
-        : s.charCodeAt(i).toString(16);
-        process.stdout.write(number + " ")
-    }
-  }
-  
-  process.stdout.write("\n\n");
-};
-
-BinaryParser.ilprint = function hprint (s) {
-  var number;
-
-  for (var i = 0, len = s.length; i < len; i++) {
-    if (s.charCodeAt(i) < 32) {
-      number = s.charCodeAt(i) <= 15
-        ? "0" + s.charCodeAt(i).toString(10)
-        : s.charCodeAt(i).toString(10);
-
-      require('util').debug(number+' : ');
-    } else {
-      number = s.charCodeAt(i) <= 15
-        ? "0" + s.charCodeAt(i).toString(10)
-        : s.charCodeAt(i).toString(10);
-      require('util').debug(number+' : '+ s.charAt(i));
-    }
-  }
-};
-
-BinaryParser.hlprint = function hprint (s) {
-  var number;
-
-  for (var i = 0, len = s.length; i < len; i++) {
-    if (s.charCodeAt(i) < 32) {
-      number = s.charCodeAt(i) <= 15
-        ? "0" + s.charCodeAt(i).toString(16)
-        : s.charCodeAt(i).toString(16);
-      require('util').debug(number+' : ');
-    } else {
-      number = s.charCodeAt(i) <= 15
-        ? "0" + s.charCodeAt(i).toString(16)
-        : s.charCodeAt(i).toString(16);
-      require('util').debug(number+' : '+ s.charAt(i));
-    }
-  }
-};
-
-/**
- * BinaryParser buffer constructor.
- */
-function BinaryParserBuffer (bigEndian, buffer) {
-  this.bigEndian = bigEndian || 0;
-  this.buffer = [];
-  this.setBuffer(buffer);
-};
-
-BinaryParserBuffer.prototype.setBuffer = function setBuffer (data) {
-  var l, i, b;
-
-	if (data) {
-    i = l = data.length;
-    b = this.buffer = new Array(l);
-		for (; i; b[l - i] = data.charCodeAt(--i));
-		this.bigEndian && b.reverse();
-	}
-};
-
-BinaryParserBuffer.prototype.hasNeededBits = function hasNeededBits (neededBits) {
-	return this.buffer.length >= -(-neededBits >> 3);
-};
-
-BinaryParserBuffer.prototype.checkBuffer = function checkBuffer (neededBits) {
-	if (!this.hasNeededBits(neededBits)) {
-		throw new Error("checkBuffer::missing bytes");
-  }
-};
-
-BinaryParserBuffer.prototype.readBits = function readBits (start, length) {
-	//shl fix: Henri Torgemane ~1996 (compressed by Jonas Raoni)
-
-	function shl (a, b) {
-		for (; b--; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1);
-		return a;
-	}
-
-	if (start < 0 || length <= 0) {
-		return 0;
-  }
-
-	this.checkBuffer(start + length);
-
-  var offsetLeft
-    , offsetRight = start % 8
-    , curByte = this.buffer.length - ( start >> 3 ) - 1
-    , lastByte = this.buffer.length + ( -( start + length ) >> 3 )
-    , diff = curByte - lastByte
-    , sum = ((this.buffer[ curByte ] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) + (diff && (offsetLeft = (start + length) % 8) ? (this.buffer[lastByte++] & ((1 << offsetLeft) - 1)) << (diff-- << 3) - offsetRight : 0);
-
-	for(; diff; sum += shl(this.buffer[lastByte++], (diff-- << 3) - offsetRight));
-
-	return sum;
-};
-
-/**
- * Expose.
- */
-BinaryParser.Buffer = BinaryParserBuffer;
-
-exports.BinaryParser = BinaryParser;


[94/98] [abbrv] incubator-apex-malhar git commit: MLHR-1899 Workaround problematic test file content.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f9875f6d/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories_updated.rss
----------------------------------------------------------------------
diff --git a/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories_updated.rss b/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories_updated.rss
deleted file mode 100644
index a202959..0000000
--- a/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories_updated.rss
+++ /dev/null
@@ -1,242 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://rss.cnn.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
-<channel>
-<title>CNN.com - Top Stories</title>
-<link>http://www.cnn.com/index.html?eref=rss_topstories</link>
-<description>CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.</description>
-<language>en-US</language>
-<copyright>Copyright 2013 Cable News Network LP, LLLP.</copyright>
-<pubDate>Wed, 13 Mar 2013 14:53:10 EDT</pubDate>
-<ttl>10</ttl>
-<image>
-<title>CNN.com - Top Stories</title>
-<link>http://www.cnn.com/index.html?eref=rss_topstories</link>
-<url>http://i.cdn.turner.com/cnn/.e/img/1.0/logo/cnn.logo.rss.gif</url>
-<width>144</width>
-<height>33</height>
-<description>CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.</description>
-</image>
-<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://rss.cnn.com/rss/cnn_topstories" /><feedburner:info uri="rss/cnn_topstories" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><thespringbox:skin xmlns:thespringbox="http://www.thespringbox.com/dtds/thespringbox-1.0.dtd">http://rss.cnn.com/rss/cnn_topstories?format=skin</thespringbox:skin><item><title>Nearly 6,000 dead pigs in Chinese river</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/asia/pigs-china-river/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/cw3KqL4R3P8/index.html</link><description>5,916 dead, bloated pigs and counting.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=cw3KqL4R3P8:OQA-S_oq_l0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=cw3KqL4R3P8:OQA-S_oq_l0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/cw3KqL4R3P8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 05:42:47 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/asia/pigs-china-river/index.html</feedburner:origLink></item>
-<item><title>Our favorite surprise homecomings</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2012/09/21/soldier-surprises-daughter-maine.wabi</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/CwGHwn3c8-o/</link><description>U.S. Army Specialist Daniel Riendeau surprised his daugher at school after being away in Afghanistan for almost a year.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=CwGHwn3c8-o:dG6sDqiiEjA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=CwGHwn3c8-o:dG6sDqiiEjA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/CwGHwn3c8-o" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:37:07 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2012/09/21/soldier-surprises-daughter-maine.wabi</feedburner:origLink></item>
-<item><title>Guy pushes his girlfriend off a cliff</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/08/tsr-moos-girlfriend-pushed-off-cliff.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/B34SivME0XM/</link><description>Watch a guy push his girlfriend off a cliff. Are they still together? CNN's Jeanne Moos has the cliffhanger ending.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=B34SivME0XM:ZP1LA_cNGk0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=B34SivME0XM:ZP1LA_cNGk0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/B34SivME0XM" height="1" width="1"/&gt;</description><pubDate>Tue, 12 Mar 2013 10:56:20 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/08/tsr-moos-girlfriend-pushed-off-cliff.cnn</feedburner:origLink></item>
-<item><title>Watch chimney deliver the news</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/world/2013/03/13/nr-white-smoke-means-new-pope.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/vTZHE46v6RA/</link><description>White smoke billowing from the Vatican signals that a new pope has been elected.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vTZHE46v6RA:Bf8W6ApLKdE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vTZHE46v6RA:Bf8W6ApLKdE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vTZHE46v6RA:Bf8W6ApLKdE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=vTZHE46v6RA:Bf8W6ApLKdE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vTZHE46v6RA:Bf8W6ApLKdE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vTZHE46v6RA:Bf8W6ApLKdE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=vTZHE46v6RA:Bf8W6ApLKdE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/vTZHE46v6RA" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 14:47:36 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/world/2013/03/13/nr-white-smoke-means-new-pope.cnn</feedburner:origLink></item>
-<item><title>It once took 3 years to pick a pope</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/world/2013/03/13/ac-dnt-cooper-fun-facts-conclave.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/l-lN9JNz55Q/</link><description>Anderson Cooper lists some of the lesser-known facts surrounding the papal election.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:hwYhL2fUgpo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:hwYhL2fUgpo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:hwYhL2fUgpo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=l-lN9JNz55Q:hwYhL2fUgpo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:hwYhL2fUgpo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:hwYhL2fUgpo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=l-lN9JNz55Q:hwYhL2fUgpo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/l-lN9JNz55Q" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 14:16:21 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/world/2013/03/13/ac-dnt-cooper-fun-facts-conclave.cnn</feedburner:origLink></item>
-<item><title>Boy dies after swim in Disney pool</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/us/florida-disney-death/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/HD-OAU1UtP8/index.html</link><description>Two days after he was pulled from the bottom of a swimming pool in 4 feet of water at a Disney World resort in Florida, a 13-year-old boy has died.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:BHdtfGQ75zo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:BHdtfGQ75zo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:BHdtfGQ75zo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=HD-OAU1UtP8:BHdtfGQ75zo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:BHdtfGQ75zo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:BHdtfGQ75zo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=HD-OAU1UtP8:BHdtfGQ75zo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/HD-OAU1UtP8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 13:42:01 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/us/florida-disney-death/index.html</feedburner:origLink></item>
-<item><title>FDA: Zmax can cause fatal heart rhythms</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/health/fda-antibiotic-heart-warning/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/xJZv4qP0q-Y/index.html</link><description>A popular antibiotic used to treat bacterial infections can cause abnormal -- and possibly fatal -- heart rhythms in some patients, according to a new warning from the Food and Drug Administration.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=xJZv4qP0q-Y:xclw3SXKpDw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=xJZv4qP0q-Y:xclw3SXKpDw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/xJZv4qP0q-Y" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:29:32 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/health/fda-antibiotic-heart-warning/index.html</feedburner:origLink></item>
-<item><title>4 dead in N.Y. shootings</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/justice/new-york-shooting/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/ZDB3l7eM8kw/index.html</link><description>Four people have been killed and at least two others wounded in shootings in Herkimer County, New York, state police trooper Jack Keller said Wednesday.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:5dDcKpt1H7g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:5dDcKpt1H7g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:5dDcKpt1H7g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=ZDB3l7eM8kw:5dDcKpt1H7g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:5dDcKpt1H7g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:5dDcKpt1H7g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=ZDB3l7eM8kw:5dDcKpt1H7g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/ZDB3l7eM8kw" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 14:00:15 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/justice/new-york-shooting/index.html</feedburner:origLink></item>
-<item><title>Iran to sue Hollywood over 'Argo'</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/meast/iran-argo-response/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/_l_ASk7x-vM/index.html</link><description>First, Iran said it would produce its own cinematic response to "Argo." Now, Tehran plans to sue Hollywood filmmakers who contribute to the production of such "anti-Iran" propaganda films.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=_l_ASk7x-vM:UxWBLvRIZCA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=_l_ASk7x-vM:UxWBLvRIZCA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/_l_ASk7x-vM" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:26:48 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/meast/iran-argo-response/index.html</feedburner:origLink></item>
-<item><title>15 teens dead in 3 wrecks</title><guid isPermaLink="false">http://www.cnn.com/2013/03/12/travel/teen-drivers/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/isn-AMVmNr8/index.html</link><description>Though traffic fatalities have seen a historic drop in recent decades, young drivers remain at highest risk. Weekend crashes in Ohio and Texas fit even higher risk profiles. We explore solutions to keep teen drivers safe.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=isn-AMVmNr8:oSwhLci5b8o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=isn-AMVmNr8:oSwhLci5b8o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/isn-AMVmNr8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:17:22 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/12/travel/teen-drivers/index.html</feedburner:origLink></item>
-<item><title>Saudi Arabia beheads 7 for stealing</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/meast/saudi-executions-beheading/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/6fuBbJS8Lkc/index.html</link><description>Seven men were executed by beheading Wednesday in Saudi Arabia for stealing, according to SPA, the official Saudi New agency.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=6fuBbJS8Lkc:x838-Ws_FFw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=6fuBbJS8Lkc:x838-Ws_FFw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/6fuBbJS8Lkc" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 13:00:38 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/meast/saudi-executions-beheading/index.html</feedburner:origLink></item>
-<item><title>Ohio teen rape trial </title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/justice/ohio-steubenville-case/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/ZXh6dRcOkOs/index.html</link><description>Once, high school football was the thing that brought people together in the eastern Ohio town of Steubenville. That was before two star players of the football team were accused of raping a 16-year-old girl.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=ZXh6dRcOkOs:GyXyk62ziDU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=ZXh6dRcOkOs:GyXyk62ziDU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/ZXh6dRcOkOs" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:03:20 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/justice/ohio-steubenville-case/index.html</feedburner:origLink></item>
-<item><title>5 things we learned at SXSW 2013</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/tech/innovation/5-things-sxsw/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/3Tj3auTVI9M/index.html</link><description>Hoopla surrounding South by Southwest Interactive, the techie festival that wrapped up here Tuesday, has exploded in recent years.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=3Tj3auTVI9M:Sfdgyj9yIkU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=3Tj3auTVI9M:Sfdgyj9yIkU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/3Tj3auTVI9M" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:56:16 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/tech/innovation/5-things-sxsw/index.html</feedburner:origLink></item>
-<item><title>GOP wary of Obama charm offensive</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/politics/obama-house-gop/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/uKBsor5RkZs/index.html</link><description>When President Barack Obama enters the conference room in the Capitol basement Wednesday to sit down with House Republicans, he'll be met by a group that says it's willing to listen but deeply skeptical of the president's so-called "charm offensive."&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=uKBsor5RkZs:H95TSRJ3BHI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=uKBsor5RkZs:H95TSRJ3BHI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/uKBsor5RkZs" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:25:26 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/politics/obama-house-gop/index.html</feedburner:origLink></item>
-<item><title>Opinion: Office face time overrated</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/opinion/albison-correll-women-face-time/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/WEPmatCeEps/index.html</link><description>Shelley Correll and Catherine Albiston say Yahoo got it wrong: research shows that people who have control over when and where they work are more productive. have better morale and are more loyal&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=WEPmatCeEps:b4Ny-A_jphA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=WEPmatCeEps:b4Ny-A_jphA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/WEPmatCeEps" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 13:02:30 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/opinion/albison-correll-women-face-time/index.html</feedburner:origLink></item>
-<item><title>Double mastectomies more common</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/health/double-mastectomy-rates-up/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/iCZe6PytzM4/index.html</link><description>If you had breast cancer in one breast, but not the other, would you choose to have both surgically removed? That a decision more women are making.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=iCZe6PytzM4:k6PMuikHO9M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=iCZe6PytzM4:k6PMuikHO9M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=iCZe6PytzM4:k6PMuikHO9M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=iCZe6PytzM4:k6PMuikHO9M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=iCZe6PytzM4:k6PMuikHO9M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=iCZe6PytzM4:k6PMuikHO9M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=iCZe6PytzM4:k6PMuikHO9M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/iCZe6PytzM4" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 14:52:20 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/health/double-mastectomy-rates-up/index.html</feedburner:origLink></item>
-<item><title>Exoskeleton allows paraplegics to walk</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/tech/innovation/original-ideas-exoskeleton/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/dcr7aOC4yqc/index.html</link><description>The idea of "wearable robots" may seem like something out of a movie, but this technology is already being used in real life.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=dcr7aOC4yqc:60pnjZ3hl3M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=dcr7aOC4yqc:60pnjZ3hl3M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=dcr7aOC4yqc:60pnjZ3hl3M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=dcr7aOC4yqc:60pnjZ3hl3M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=dcr7aOC4yqc:60pnjZ3hl3M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=dcr7aOC4yqc:60pnjZ3hl3M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=dcr7aOC4yqc:60pnjZ3hl3M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/dcr7aOC4yqc" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:55:10 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/tech/innovation/original-ideas-exoskeleton/index.html</feedburner:origLink></item>
-<item><title>Pro soccer player quits to be priest</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-erin-dnt-from-pro-soccer-to-priesthood-chase-hilgenbrinck.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Y5x38vRBxaI/</link><description>A former pro soccer player gave up his promising career for the priesthood. Erin Burnett reports.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Y5x38vRBxaI:wlfNkPX6ZEA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Y5x38vRBxaI:wlfNkPX6ZEA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Y5x38vRBxaI" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 09:23:35 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-erin-dnt-from-pro-soccer-to-priesthood-chase-hilgenbrinck.cnn</feedburner:origLink></item>
-<item><title>The creepy things Facebook knows</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-erin-facebook-likes-reveals-everything-about-you.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/6t14Vaays8I/</link><description>Erin Burnett talks about a new study that reveals Facebook's ability to know your intimate and personal information.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=6t14Vaays8I:rqkVXLJ-ICw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=6t14Vaays8I:rqkVXLJ-ICw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/6t14Vaays8I" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 09:24:31 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-erin-facebook-likes-reveals-everything-about-you.cnn</feedburner:origLink></item>
-<item><title>Quarter size mosquitoes invade Fla.</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/13/pkg-giant-mosquitos-florida.bay-news-9</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/G2W-pxU5etE/</link><description>Gallinippers can be 20 times the size of typical mosquitoes. They are expected to invade Florida this summer.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=G2W-pxU5etE:I46WXCArNz8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=G2W-pxU5etE:I46WXCArNz8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/G2W-pxU5etE" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 08:56:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/13/pkg-giant-mosquitos-florida.bay-news-9</feedburner:origLink></item>
-<item><title>How you stop a deadly shark bite</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/12/tsr-dnt-zarella-shark-bite-study.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/kNb_Henz38A/</link><description>Researchers are looking in the mouths of sharks for a way to help bite victims. CNN's John Zarrella reports.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=kNb_Henz38A:s67OEOVCZEs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=kNb_Henz38A:s67OEOVCZEs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/kNb_Henz38A" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 07:36:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/12/tsr-dnt-zarella-shark-bite-study.cnn</feedburner:origLink></item>
-<item><title>Kim Kardashian gets bloody facial</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/showbiz/2013/03/13/sbt-kim-kardashian-vampire-facial.hln</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/lCnIZ62je7g/</link><description>HLN's A.J. Hammer asks an expert if Kim Kardashian's "vampire facial" really works and if it's worth the pain.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=lCnIZ62je7g:GxKc7s5sSVc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=lCnIZ62je7g:GxKc7s5sSVc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/lCnIZ62je7g" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 09:27:36 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/showbiz/2013/03/13/sbt-kim-kardashian-vampire-facial.hln</feedburner:origLink></item>
-<item><title>Soda ban is smart</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/opinion/gostin-soda-ban/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/0rjcXeI0txU/index.html</link><description>Lawrence Gostin says New York Mayor Michael Bloomberg's portion limit is not an assault on freedom -- it doesn't stop anyone from buying soda.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=0rjcXeI0txU:rfH4eIakBNg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=0rjcXeI0txU:rfH4eIakBNg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=0rjcXeI0txU:rfH4eIakBNg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=0rjcXeI0txU:rfH4eIakBNg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=0rjcXeI0txU:rfH4eIakBNg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=0rjcXeI0txU:rfH4eIakBNg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=0rjcXeI0txU:rfH4eIakBNg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/0rjcXeI0txU" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:52:41 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/opinion/gostin-soda-ban/index.html</feedburner:origLink></item>
-<item><title>Another view: Bloomberg overdoing it</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/opinion/smith-anti-bloomberg-bill/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/9CONpDeIsIc/index.html</link><description>Tony Smith wrote a bill banning local jurisdictions from regulating food and drink, saying it protects small businesses and lets the free market determine what's available.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=9CONpDeIsIc:7c_ubC1Y0FM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=9CONpDeIsIc:7c_ubC1Y0FM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=9CONpDeIsIc:7c_ubC1Y0FM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=9CONpDeIsIc:7c_ubC1Y0FM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=9CONpDeIsIc:7c_ubC1Y0FM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=9CONpDeIsIc:7c_ubC1Y0FM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=9CONpDeIsIc:7c_ubC1Y0FM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/9CONpDeIsIc" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:48:36 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/opinion/smith-anti-bloomberg-bill/index.html</feedburner:origLink></item>
-<item><title>Valerie Harper: 'We're all terminal'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-pmt-valerie-harper-were-all-terminal.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/DcIKG783Xw0/</link><description>Valerie Harper talks to Piers Morgan about her diagnosis with a rare terminal cancer and how she is living in the moment.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=DcIKG783Xw0:JmCSxquD-GM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=DcIKG783Xw0:JmCSxquD-GM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/DcIKG783Xw0" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:30:08 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-pmt-valerie-harper-were-all-terminal.cnn</feedburner:origLink></item>
-<item><title>Acclaimed teacher disappears</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/us/louisiana-missing-teacher/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/_adMWWMLO-s/index.html</link><description>Terrilynn Monette's dedication earned her a "Teacher of the Year" nomination in New Orleans. But after a night of celebrating with friends, Monette vanished. That was two weeks ago.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_adMWWMLO-s:sjlz3G6U72I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_adMWWMLO-s:sjlz3G6U72I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_adMWWMLO-s:sjlz3G6U72I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=_adMWWMLO-s:sjlz3G6U72I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_adMWWMLO-s:sjlz3G6U72I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_adMWWMLO-s:sjlz3G6U72I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=_adMWWMLO-s:sjlz3G6U72I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/_adMWWMLO-s" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:03:32 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/us/louisiana-missing-teacher/index.html</feedburner:origLink></item>
-<item><title>Secret motive behind Arias sex tape?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-jvm-ariasphone-sex-call.hln</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/KMmhmMWuYFY/</link><description>Travis' coworker says she believes Jodi recorded the secret phone sex call to listen to after Travis died&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=KMmhmMWuYFY:8kCpV3BIuQU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=KMmhmMWuYFY:8kCpV3BIuQU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/KMmhmMWuYFY" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:55:02 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-jvm-ariasphone-sex-call.hln</feedburner:origLink></item>
-<item><title>Opinion: Sandberg slights single moms</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/opinion/faludi-poor-single-mothers-sandberg/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/gkgo4pkSPW4/index.html</link><description>Susan Faludi: Sheryl Sandberg's "Lean In" venture could have lifted up single mothers mired in poverty, but gave them short shrift instead.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=gkgo4pkSPW4:xyDuWQBdQ-g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=gkgo4pkSPW4:xyDuWQBdQ-g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/gkgo4pkSPW4" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:56:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/opinion/faludi-poor-single-mothers-sandberg/index.html</feedburner:origLink></item>
-<item><title>Airport flash mob with surprise ending</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/12/pkg-airport-flashmob-marriage-proposal.kfor</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/JCD9NOfjTQk/</link><description>An Oklahoma City man received a surprise proposal from his girlfriend after a two-year mission trip.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=JCD9NOfjTQk:9wVKT-CZ_Nc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=JCD9NOfjTQk:9wVKT-CZ_Nc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/JCD9NOfjTQk" height="1" width="1"/&gt;</description><pubDate>Tue, 12 Mar 2013 19:45:06 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/12/pkg-airport-flashmob-marriage-proposal.kfor</feedburner:origLink></item>
-<item><title>Seals, sea lion pup try to catch free rides </title><guid isPermaLink="false">http://www.cnn.com/video/#/video/living/2013/03/12/tsr-pkg-moos-sea-lion-pup-stowaway.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Re--Lyq5Bq8/</link><description>A sea lion pup catches a ride on a kayak. CNN's Jeanne Moos reports on the adorable stowaway making waves.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Re--Lyq5Bq8:gK_dYxcfc2o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Re--Lyq5Bq8:gK_dYxcfc2o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Re--Lyq5Bq8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 07:12:43 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/living/2013/03/12/tsr-pkg-moos-sea-lion-pup-stowaway.cnn</feedburner:origLink></item>
-<item><title>Billy Joel surprises, plays with student</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/showbiz/2013/03/13/mxp-billy-joel-student-performance.hln</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/yCpcOyTWsS0/</link><description>Artist Billy Joel surprised everyone during a Vanderbilt University Q&amp;A session when a freshman asked to play with him.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=yCpcOyTWsS0:AU4_6tlORKI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=yCpcOyTWsS0:AU4_6tlORKI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/yCpcOyTWsS0" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:07:59 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/showbiz/2013/03/13/mxp-billy-joel-student-performance.hln</feedburner:origLink></item>
-<item><title>Colbert asked Howard Dean what??!</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/12/exp-lead-tapper-colbert-tease.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/QQJ7k8gM5TA/</link><description>Comedian Stephen Colbert tells the story of when he first met CNN's Jake Tapper on the 2004 campaign trail.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=QQJ7k8gM5TA:xNpo6V4NNII:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=QQJ7k8gM5TA:xNpo6V4NNII:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/QQJ7k8gM5TA" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:09:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/12/exp-lead-tapper-colbert-tease.cnn</feedburner:origLink></item>
-<item><title>New show 'too white'?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/23/exp-point-waxman-girls.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/30hpqQsjVnM/</link><description>HBO's 'Girls' is the latest TV show depicting life in New York City without one of its most crucial elements: diversity.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=30hpqQsjVnM:QAZRKus08_A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=30hpqQsjVnM:QAZRKus08_A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/30hpqQsjVnM" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 12:02:24 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/23/exp-point-waxman-girls.cnn</feedburner:origLink></item>
-<item><title>Zimmerman's body language</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-erin-zimmerman-body-language.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/sPynL-fKm2k/</link><description>An expert in body language says George Zimmerman showed signs of anger in court in Florida.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=sPynL-fKm2k:LPEJeh2Ua3Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=sPynL-fKm2k:LPEJeh2Ua3Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/sPynL-fKm2k" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 10:28:12 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-erin-zimmerman-body-language.cnn</feedburner:origLink></item>
-<item><title>Anderson battles on 'Jeopardy!'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/offbeat/2012/04/21/ac-ridiculist-jeopardy-appearances.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/TT8Ec4zVGJk/</link><description>CNN's Anderson Cooper reflects on the highs and lows of his past "Jeopardy" appearances and weighs his odds of winning.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=TT8Ec4zVGJk:Je0Nb01racE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=TT8Ec4zVGJk:Je0Nb01racE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/TT8Ec4zVGJk" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 10:34:51 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/offbeat/2012/04/21/ac-ridiculist-jeopardy-appearances.cnn</feedburner:origLink></item>
-<item><title>Steinem on GOP and women</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ybl-steinem-.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/uBSQZcXo-zc/</link><description>Activist and author Gloria Steinem analyzes the "war on women" and says extremists have taken over the Republican party.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=uBSQZcXo-zc:HPm4xJzXdEQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=uBSQZcXo-zc:HPm4xJzXdEQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/uBSQZcXo-zc" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 18:29:45 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ybl-steinem-.cnn</feedburner:origLink></item>
-<item><title>Facebook fans 'lonely'?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/22/exp-rs-media-monitor.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Z8koXr-c0hM/</link><description>A report on Facebook, Bill O'Reilly and the Fox "brand," Current TV"s new hire, a Pulitzer for a PA reporter, GMA rises&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Z8koXr-c0hM:hu-rwcn5UgU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Z8koXr-c0hM:hu-rwcn5UgU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Z8koXr-c0hM" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 14:38:31 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/22/exp-rs-media-monitor.cnn</feedburner:origLink></item>
-<item><title>Working moms of CNN </title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/19/cnn-working-moms-share-their-stories.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/P9wFf4tbbyw/</link><description>CNN goes behind the scenes with the working moms on Suzanne Malveaux's team to see how they juggle it all.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=P9wFf4tbbyw:SbjMSo2IH6w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=P9wFf4tbbyw:SbjMSo2IH6w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/P9wFf4tbbyw" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 16:43:37 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/19/cnn-working-moms-share-their-stories.cnn</feedburner:origLink></item>
-<item><title>Levon Helm remembered</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-levon-helm-obit.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/JYYIEYXqn34/</link><description>Anderson Cooper takes a look back at the life of The Band's Levon Helm and his many contributions to music.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=JYYIEYXqn34:8Lgb0FOsAmg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=JYYIEYXqn34:8Lgb0FOsAmg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/JYYIEYXqn34" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 16:43:45 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-levon-helm-obit.cnn</feedburner:origLink></item>
-<item><title>Man makes dating spreadsheet</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-get-real-dating-spreadsheet.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/vx0ARutyCFQ/</link><description>Soledad O'Brien discusses the investment banker who created an elaborate spreadsheet to keep track of his dates.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=vx0ARutyCFQ:3qe2x7NrwN0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=vx0ARutyCFQ:3qe2x7NrwN0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/vx0ARutyCFQ" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 11:29:57 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-get-real-dating-spreadsheet.cnn</feedburner:origLink></item>
-<item><title>Political dog tale duel</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-ridiculist-obama-romney-dogs.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/f2pQv1EmVbY/</link><description>In the RidicuList, Anderson Cooper examines which candidate's dog tale will have a greater election impact.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=f2pQv1EmVbY:sWQXHXG0FmA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=f2pQv1EmVbY:sWQXHXG0FmA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/f2pQv1EmVbY" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 09:38:44 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-ridiculist-obama-romney-dogs.cnn</feedburner:origLink></item>
-<item><title>Vanessa Williams' perfect man</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/showbiz/2012/04/20/piers-williams-love.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/XdISDjJ8ssM/</link><description>Entertainer Vanessa Williams talks to CNN's Piers Morgan about "being properly in love" and relationships.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=XdISDjJ8ssM:vg92Ai16Gc4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=XdISDjJ8ssM:vg92Ai16Gc4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/XdISDjJ8ssM" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 09:38:33 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/showbiz/2012/04/20/piers-williams-love.cnn</feedburner:origLink></item>
-<item><title>'Only in America': Defending Axl Rose</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/piers-morgan-only-in-america-in-defense-of-axl-rose.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/CE0-oIRG7AY/</link><description>Piers Morgan defends Axl Rose for deciding not to attend the Rock'N'Roll Hall of Fame induction of Guns N' Roses.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=CE0-oIRG7AY:iYNae62SbM8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=CE0-oIRG7AY:iYNae62SbM8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/CE0-oIRG7AY" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 09:41:33 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/piers-morgan-only-in-america-in-defense-of-axl-rose.cnn</feedburner:origLink></item>
-<item><title>Rep. won't name 'Communists'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-west-communist-reax.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Xwa7iI_z-DI/</link><description>Rep. Allen West (R-FL) responds to criticism after he claimed a number of Democratic reps in Congress are Communists.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Xwa7iI_z-DI:d2IDNIqeKok:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Xwa7iI_z-DI:d2IDNIqeKok:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Xwa7iI_z-DI" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Apr 2012 14:59:47 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-west-communist-reax.cnn</feedburner:origLink></item>
-<item><title>RidicuList: Quest for 'sexy veggies'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/offbeat/2012/04/18/ac-ridiculist-sexy-veggies.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/mxmh2VeX1es/</link><description>CNN's Anderson Cooper riffs on a staple of Courtney Stodden's grocery list, "sexy veggies."&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=mxmh2VeX1es:5nXnJlPtEX4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=mxmh2VeX1es:5nXnJlPtEX4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/mxmh2VeX1es" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Apr 2012 13:35:19 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/offbeat/2012/04/18/ac-ridiculist-sexy-veggies.cnn</feedburner:origLink></item>
-<item><title>Kim Kardashian for mayor?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-get-real-kardashian.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/hyXOp5VGCeI/</link><description>Soledad O'Brien discusses Kim Kardashian's comments about running for Mayor in Glendale, California.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=hyXOp5VGCeI:zqSiobweMvc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=hyXOp5VGCeI:zqSiobweMvc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/hyXOp5VGCeI" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Apr 2012 11:29:15 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-get-real-kardashian.cnn</feedburner:origLink></item>
-<item><title>New judge in Martin case </title><guid isPermaLink="false">http://www.cnn.com/video/#/video/crime/2012/04/18/erin-new-judge-martin-case.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Vl4YhIIOBw4/</link><description>CNN's Erin Burnett speaks to a panel of analysts about the new judge in the Trayvon Martin shooting case.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Vl4YhIIOBw4:T5k_0MYGA9c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Vl4YhIIOBw4:T5k_0MYGA9c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Vl4YhIIOBw4" height="1" width="1"/&gt;</description><pubDate>Thu, 27 Sep 2012 00:17:36 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/crime/2012/04/18/erin-new-judge-martin-case.cnn</feedburner:origLink></item>
-<item><title>Why my pet gets antidepressants</title><guid isPermaLink="false">http://www.cnn.com/2013/03/10/opinion/walmsley-pet-drugs/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/DDRmE_nE5sA/index.html</link><description>Would you put your pet on antidepressants? CNN's Katie Walmsley says while it's easy to laugh at the thought, it's a huge disservice to animals to write off a medicated approach to their problems.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DDRmE_nE5sA:KFu2xtxk3gM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DDRmE_nE5sA:KFu2xtxk3gM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DDRmE_nE5sA:KFu2xtxk3gM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=DDRmE_nE5sA:KFu2xtxk3gM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/

<TRUNCATED>


[88/98] [abbrv] incubator-apex-malhar git commit: Cleanup of web resources

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/adsdimension/malhar.css
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/adsdimension/malhar.css b/contrib/src/main/html/adsdimension/malhar.css
deleted file mode 100644
index 175e219..0000000
--- a/contrib/src/main/html/adsdimension/malhar.css
+++ /dev/null
@@ -1,4688 +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.
- */
-.clearfix {
-  *zoom: 1;
-}
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.clearfix:after {
-  clear: both;
-}
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 30px;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-audio:not([controls]) {
-  display: none;
-}
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-a:hover,
-a:active {
-  outline: 0;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  /* Responsive images (ensure images don't scale beyond their parents) */
-
-  max-width: 100%;
-  /* Part 1: Set a maxium relative to the parent */
-
-  width: auto\9;
-  /* IE7-8 need help adjusting responsive images */
-
-  height: auto;
-  /* Part 2: Scale the height according to the width, otherwise you get stretching */
-
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-#map_canvas img,
-.google-maps img {
-  max-width: none;
-}
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button;
-  cursor: pointer;
-}
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
-  cursor: pointer;
-}
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-@media print {
-  * {
-    text-shadow: none !important;
-    color: #000 !important;
-    background: transparent !important;
-    box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  .ir a:after,
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  @page  {
-    margin: 0.5cm;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-}
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 20px;
-  color: #333333;
-  background-color: #ffffff;
-}
-a {
-  color: #0088cc;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: #005580;
-  text-decoration: underline;
-}
-.img-rounded {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.img-polaroid {
-  padding: 4px;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-.img-circle {
-  -webkit-border-radius: 500px;
-  -moz-border-radius: 500px;
-  border-radius: 500px;
-}
-/*@import "bootstrap/grid.less";*/
-/*@import "bootstrap/layouts.less";*/
-p {
-  margin: 0 0 10px;
-}
-.lead {
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  font-weight: 200;
-  line-height: 30px;
-}
-small {
-  font-size: 85%;
-}
-strong {
-  font-weight: bold;
-}
-em {
-  font-style: italic;
-}
-cite {
-  font-style: normal;
-}
-.muted {
-  color: #999999;
-}
-a.muted:hover,
-a.muted:focus {
-  color: #808080;
-}
-.text-warning {
-  color: #c09853;
-}
-a.text-warning:hover,
-a.text-warning:focus {
-  color: #a47e3c;
-}
-.text-error {
-  color: #b94a48;
-}
-a.text-error:hover,
-a.text-error:focus {
-  color: #953b39;
-}
-.text-info {
-  color: #3a87ad;
-}
-a.text-info:hover,
-a.text-info:focus {
-  color: #2d6987;
-}
-.text-success {
-  color: #468847;
-}
-a.text-success:hover,
-a.text-success:focus {
-  color: #356635;
-}
-.text-left {
-  text-align: left;
-}
-.text-right {
-  text-align: right;
-}
-.text-center {
-  text-align: center;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 10px 0;
-  font-family: inherit;
-  font-weight: bold;
-  line-height: 20px;
-  color: inherit;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  line-height: 1;
-  color: #999999;
-}
-h1,
-h2,
-h3 {
-  line-height: 40px;
-}
-h1 {
-  font-size: 35.75px;
-}
-h2 {
-  font-size: 29.25px;
-}
-h3 {
-  font-size: 22.75px;
-}
-h4 {
-  font-size: 16.25px;
-}
-h5 {
-  font-size: 13px;
-}
-h6 {
-  font-size: 11.049999999999999px;
-}
-h1 small {
-  font-size: 22.75px;
-}
-h2 small {
-  font-size: 16.25px;
-}
-h3 small {
-  font-size: 13px;
-}
-h4 small {
-  font-size: 13px;
-}
-.page-header {
-  padding-bottom: 9px;
-  margin: 20px 0 30px;
-  border-bottom: 1px solid #eeeeee;
-}
-ul,
-ol {
-  padding: 0;
-  margin: 0 0 10px 25px;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-li {
-  line-height: 20px;
-}
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-ul.inline,
-ol.inline {
-  margin-left: 0;
-  list-style: none;
-}
-ul.inline > li,
-ol.inline > li {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding-left: 5px;
-  padding-right: 5px;
-}
-dl {
-  margin-bottom: 20px;
-}
-dt,
-dd {
-  line-height: 20px;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 10px;
-}
-.dl-horizontal {
-  *zoom: 1;
-}
-.dl-horizontal:before,
-.dl-horizontal:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.dl-horizontal:after {
-  clear: both;
-}
-.dl-horizontal dt {
-  float: left;
-  width: 160px;
-  clear: left;
-  text-align: right;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.dl-horizontal dd {
-  margin-left: 180px;
-}
-hr {
-  margin: 20px 0;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-  border-bottom: 1px solid #ffffff;
-}
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #999999;
-}
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 20px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p {
-  margin-bottom: 0;
-  font-size: 16.25px;
-  font-weight: 300;
-  line-height: 1.25;
-}
-blockquote small {
-  display: block;
-  line-height: 20px;
-  color: #999999;
-}
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-blockquote.pull-right {
-  float: right;
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-blockquote.pull-right small:before {
-  content: '';
-}
-blockquote.pull-right small:after {
-  content: '\00A0 \2014';
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  display: block;
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 20px;
-}
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-  font-size: 11px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-code {
-  padding: 2px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-  white-space: nowrap;
-}
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 12px;
-  line-height: 20px;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-pre.prettyprint {
-  margin-bottom: 20px;
-}
-pre code {
-  padding: 0;
-  color: inherit;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border: 0;
-}
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-form {
-  margin: 0 0 20px;
-}
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  line-height: 40px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-legend small {
-  font-size: 15px;
-  color: #999999;
-}
-label,
-input,
-button,
-select,
-textarea {
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 20px;
-}
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-label {
-  display: block;
-  margin-bottom: 5px;
-}
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  display: inline-block;
-  height: 20px;
-  padding: 4px 6px;
-  margin-bottom: 10px;
-  font-size: 13px;
-  line-height: 20px;
-  color: #555555;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  vertical-align: middle;
-}
-input,
-textarea,
-.uneditable-input {
-  width: 206px;
-}
-textarea {
-  height: auto;
-}
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear .2s, box-shadow linear .2s;
-  -moz-transition: border linear .2s, box-shadow linear .2s;
-  -o-transition: border linear .2s, box-shadow linear .2s;
-  transition: border linear .2s, box-shadow linear .2s;
-}
-textarea:focus,
-input[type="text"]:focus,
-input[type="password"]:focus,
-input[type="datetime"]:focus,
-input[type="datetime-local"]:focus,
-input[type="date"]:focus,
-input[type="month"]:focus,
-input[type="time"]:focus,
-input[type="week"]:focus,
-input[type="number"]:focus,
-input[type="email"]:focus,
-input[type="url"]:focus,
-input[type="search"]:focus,
-input[type="tel"]:focus,
-input[type="color"]:focus,
-.uneditable-input:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-9 */
-
-  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-}
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  *margin-top: 0;
-  /* IE7 */
-
-  margin-top: 1px \9;
-  /* IE8-9 */
-
-  line-height: normal;
-}
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
-  width: auto;
-}
-select,
-input[type="file"] {
-  height: 30px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 30px;
-}
-select {
-  width: 220px;
-  border: 1px solid #cccccc;
-  background-color: #ffffff;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.uneditable-input,
-.uneditable-textarea {
-  color: #999999;
-  background-color: #fcfcfc;
-  border-color: #cccccc;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  cursor: not-allowed;
-}
-.uneditable-input {
-  overflow: hidden;
-  white-space: nowrap;
-}
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-input:-moz-placeholder,
-textarea:-moz-placeholder {
-  color: #999999;
-}
-input:-ms-input-placeholder,
-textarea:-ms-input-placeholder {
-  color: #999999;
-}
-input::-webkit-input-placeholder,
-textarea::-webkit-input-placeholder {
-  color: #999999;
-}
-.radio,
-.checkbox {
-  min-height: 20px;
-  padding-left: 20px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-.input-mini {
-  width: 60px;
-}
-.input-small {
-  width: 90px;
-}
-.input-medium {
-  width: 150px;
-}
-.input-large {
-  width: 210px;
-}
-.input-xlarge {
-  width: 270px;
-}
-.input-xxlarge {
-  width: 530px;
-}
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
-  display: inline-block;
-}
-input,
-textarea,
-.uneditable-input {
-  margin-left: 0;
-}
-.controls-row [class*="span"] + [class*="span"] {
-  margin-left: 20px;
-}
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 926px;
-}
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 846px;
-}
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 766px;
-}
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 686px;
-}
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 606px;
-}
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 526px;
-}
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 446px;
-}
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 366px;
-}
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 286px;
-}
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 206px;
-}
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 126px;
-}
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 46px;
-}
-.controls-row {
-  *zoom: 1;
-}
-.controls-row:before,
-.controls-row:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.controls-row:after {
-  clear: both;
-}
-.controls-row [class*="span"],
-.row-fluid .controls-row [class*="span"] {
-  float: left;
-}
-.controls-row .checkbox[class*="span"],
-.controls-row .radio[class*="span"] {
-  padding-top: 5px;
-}
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-.control-group.warning .control-label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-.control-group.warning .checkbox,
-.control-group.warning .radio,
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-}
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  border-color: #c09853;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-}
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-.control-group.error .control-label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-.control-group.error .checkbox,
-.control-group.error .radio,
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-}
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  border-color: #b94a48;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-}
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-.control-group.success .control-label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-.control-group.success .checkbox,
-.control-group.success .radio,
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-}
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  border-color: #468847;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-}
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-.control-group.info .control-label,
-.control-group.info .help-block,
-.control-group.info .help-inline {
-  color: #3a87ad;
-}
-.control-group.info .checkbox,
-.control-group.info .radio,
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  color: #3a87ad;
-}
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  border-color: #3a87ad;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.info input:focus,
-.control-group.info select:focus,
-.control-group.info textarea:focus {
-  border-color: #2d6987;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-}
-.control-group.info .input-prepend .add-on,
-.control-group.info .input-append .add-on {
-  color: #3a87ad;
-  background-color: #d9edf7;
-  border-color: #3a87ad;
-}
-input:focus:invalid,
-textarea:focus:invalid,
-select:focus:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-input:focus:invalid:focus,
-textarea:focus:invalid:focus,
-select:focus:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-  -moz-box-shadow: 0 0 6px #f8b9b7;
-  box-shadow: 0 0 6px #f8b9b7;
-}
-.form-actions {
-  padding: 19px 20px 20px;
-  margin-top: 20px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #e5e5e5;
-  *zoom: 1;
-}
-.form-actions:before,
-.form-actions:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.form-actions:after {
-  clear: both;
-}
-.help-block,
-.help-inline {
-  color: #595959;
-}
-.help-block {
-  display: block;
-  margin-bottom: 10px;
-}
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  vertical-align: middle;
-  padding-left: 5px;
-}
-.input-append,
-.input-prepend {
-  display: inline-block;
-  margin-bottom: 10px;
-  vertical-align: middle;
-  font-size: 0;
-  white-space: nowrap;
-}
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input,
-.input-append .dropdown-menu,
-.input-prepend .dropdown-menu,
-.input-append .popover,
-.input-prepend .popover {
-  font-size: 13px;
-}
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input {
-  position: relative;
-  margin-bottom: 0;
-  *margin-left: 0;
-  vertical-align: top;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-append input:focus,
-.input-prepend input:focus,
-.input-append select:focus,
-.input-prepend select:focus,
-.input-append .uneditable-input:focus,
-.input-prepend .uneditable-input:focus {
-  z-index: 2;
-}
-.input-append .add-on,
-.input-prepend .add-on {
-  display: inline-block;
-  width: auto;
-  height: 20px;
-  min-width: 16px;
-  padding: 4px 5px;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 20px;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-}
-.input-append .add-on,
-.input-prepend .add-on,
-.input-append .btn,
-.input-prepend .btn,
-.input-append .btn-group > .dropdown-toggle,
-.input-prepend .btn-group > .dropdown-toggle {
-  vertical-align: top;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-append .active,
-.input-prepend .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-.input-prepend .add-on,
-.input-prepend .btn {
-  margin-right: -1px;
-}
-.input-prepend .add-on:first-child,
-.input-prepend .btn:first-child {
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-append input,
-.input-append select,
-.input-append .uneditable-input {
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-append input + .btn-group .btn:last-child,
-.input-append select + .btn-group .btn:last-child,
-.input-append .uneditable-input + .btn-group .btn:last-child {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-append .add-on,
-.input-append .btn,
-.input-append .btn-group {
-  margin-left: -1px;
-}
-.input-append .add-on:last-child,
-.input-append .btn:last-child,
-.input-append .btn-group:last-child > .dropdown-toggle {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append input,
-.input-prepend.input-append select,
-.input-prepend.input-append .uneditable-input {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-prepend.input-append input + .btn-group .btn,
-.input-prepend.input-append select + .btn-group .btn,
-.input-prepend.input-append .uneditable-input + .btn-group .btn {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append .add-on:first-child,
-.input-prepend.input-append .btn:first-child {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-prepend.input-append .add-on:last-child,
-.input-prepend.input-append .btn:last-child {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append .btn-group:first-child {
-  margin-left: 0;
-}
-input.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9;
-  /* IE7-8 doesn't have border-radius, so don't indent the padding */
-
-  margin-bottom: 0;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-/* Allow for input prepend/append in search forms */
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.form-search .input-append .search-query {
-  -webkit-border-radius: 14px 0 0 14px;
-  -moz-border-radius: 14px 0 0 14px;
-  border-radius: 14px 0 0 14px;
-}
-.form-search .input-append .btn {
-  -webkit-border-radius: 0 14px 14px 0;
-  -moz-border-radius: 0 14px 14px 0;
-  border-radius: 0 14px 14px 0;
-}
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0 14px 14px 0;
-  -moz-border-radius: 0 14px 14px 0;
-  border-radius: 0 14px 14px 0;
-}
-.form-search .input-prepend .btn {
-  -webkit-border-radius: 14px 0 0 14px;
-  -moz-border-radius: 14px 0 0 14px;
-  border-radius: 14px 0 0 14px;
-}
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input,
-.form-search .input-prepend,
-.form-inline .input-prepend,
-.form-horizontal .input-prepend,
-.form-search .input-append,
-.form-inline .input-append,
-.form-horizontal .input-append {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .hide,
-.form-inline .hide,
-.form-horizontal .hide {
-  display: none;
-}
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
-  display: inline-block;
-}
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-.control-group {
-  margin-bottom: 10px;
-}
-legend + .control-group {
-  margin-top: 20px;
-  -webkit-margin-top-collapse: separate;
-}
-.form-horizontal .control-group {
-  margin-bottom: 20px;
-  *zoom: 1;
-}
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.form-horizontal .control-group:after {
-  clear: both;
-}
-.form-horizontal .control-label {
-  float: left;
-  width: 160px;
-  padding-top: 5px;
-  text-align: right;
-}
-.form-horizontal .controls {
-  *display: inline-block;
-  *padding-left: 20px;
-  margin-left: 180px;
-  *margin-left: 0;
-}
-.form-horizontal .controls:first-child {
-  *padding-left: 180px;
-}
-.form-horizontal .help-block {
-  margin-bottom: 0;
-}
-.form-horizontal input + .help-block,
-.form-horizontal select + .help-block,
-.form-horizontal textarea + .help-block,
-.form-horizontal .uneditable-input + .help-block,
-.form-horizontal .input-prepend + .help-block,
-.form-horizontal .input-append + .help-block {
-  margin-top: 10px;
-}
-.form-horizontal .form-actions {
-  padding-left: 180px;
-}
-table {
-  max-width: 100%;
-  background-color: transparent;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-.table {
-  width: 100%;
-  margin-bottom: 20px;
-}
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 20px;
-  text-align: left;
-  vertical-align: top;
-  border-top: 1px solid #dddddd;
-}
-.table th {
-  font-weight: bold;
-}
-.table thead th {
-  vertical-align: bottom;
-}
-.table caption + thead tr:first-child th,
-.table caption + thead tr:first-child td,
-.table colgroup + thead tr:first-child th,
-.table colgroup + thead tr:first-child td,
-.table thead:first-child tr:first-child th,
-.table thead:first-child tr:first-child td {
-  border-top: 0;
-}
-.table tbody + tbody {
-  border-top: 2px solid #dddddd;
-}
-.table .table {
-  background-color: #ffffff;
-}
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-.table-bordered {
-  border: 1px solid #dddddd;
-  border-collapse: separate;
-  *border-collapse: collapse;
-  border-left: 0;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.table-bordered th,
-.table-bordered td {
-  border-left: 1px solid #dddddd;
-}
-.table-bordered caption + thead tr:first-child th,
-.table-bordered caption + tbody tr:first-child th,
-.table-bordered caption + tbody tr:first-child td,
-.table-bordered colgroup + thead tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child td,
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-.table-bordered thead:first-child tr:first-child > th:first-child,
-.table-bordered tbody:first-child tr:first-child > td:first-child,
-.table-bordered tbody:first-child tr:first-child > th:first-child {
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.table-bordered thead:first-child tr:first-child > th:last-child,
-.table-bordered tbody:first-child tr:first-child > td:last-child,
-.table-bordered tbody:first-child tr:first-child > th:last-child {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-}
-.table-bordered thead:last-child tr:last-child > th:first-child,
-.table-bordered tbody:last-child tr:last-child > td:first-child,
-.table-bordered tbody:last-child tr:last-child > th:first-child,
-.table-bordered tfoot:last-child tr:last-child > td:first-child,
-.table-bordered tfoot:last-child tr:last-child > th:first-child {
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.table-bordered thead:last-child tr:last-child > th:last-child,
-.table-bordered tbody:last-child tr:last-child > td:last-child,
-.table-bordered tbody:last-child tr:last-child > th:last-child,
-.table-bordered tfoot:last-child tr:last-child > td:last-child,
-.table-bordered tfoot:last-child tr:last-child > th:last-child {
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
-  -webkit-border-bottom-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-  border-bottom-left-radius: 0;
-}
-.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
-  -webkit-border-bottom-right-radius: 0;
-  -moz-border-radius-bottomright: 0;
-  border-bottom-right-radius: 0;
-}
-.table-bordered caption + thead tr:first-child th:first-child,
-.table-bordered caption + tbody tr:first-child td:first-child,
-.table-bordered colgroup + thead tr:first-child th:first-child,
-.table-bordered colgroup + tbody tr:first-child td:first-child {
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.table-bordered caption + thead tr:first-child th:last-child,
-.table-bordered caption + tbody tr:first-child td:last-child,
-.table-bordered colgroup + thead tr:first-child th:last-child,
-.table-bordered colgroup + tbody tr:first-child td:last-child {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-}
-.table-striped tbody > tr:nth-child(odd) > td,
-.table-striped tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9;
-}
-.table-hover tbody tr:hover > td,
-.table-hover tbody tr:hover > th {
-  background-color: #f5f5f5;
-}
-table td[class*="span"],
-table th[class*="span"],
-.row-fluid table td[class*="span"],
-.row-fluid table th[class*="span"] {
-  display: table-cell;
-  float: none;
-  margin-left: 0;
-}
-.table td.span1,
-.table th.span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-.table td.span2,
-.table th.span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-.table td.span3,
-.table th.span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-.table td.span4,
-.table th.span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-.table td.span5,
-.table th.span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-.table td.span6,
-.table th.span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-.table td.span7,
-.table th.span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-.table td.span8,
-.table th.span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-.table td.span9,
-.table th.span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-.table td.span10,
-.table th.span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-.table td.span11,
-.table th.span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-.table td.span12,
-.table th.span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-.table tbody tr.success > td {
-  background-color: #dff0d8;
-}
-.table tbody tr.error > td {
-  background-color: #f2dede;
-}
-.table tbody tr.warning > td {
-  background-color: #fcf8e3;
-}
-.table tbody tr.info > td {
-  background-color: #d9edf7;
-}
-.table-hover tbody tr.success:hover > td {
-  background-color: #d0e9c6;
-}
-.table-hover tbody tr.error:hover > td {
-  background-color: #ebcccc;
-}
-.table-hover tbody tr.warning:hover > td {
-  background-color: #faf2cc;
-}
-.table-hover tbody tr.info:hover > td {
-  background-color: #c4e3f3;
-}
-/*@import "bootstrap/sprites.less";*/
-.dropup,
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top: 4px solid #000000;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  content: "";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 20px;
-  color: #333333;
-  white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
-  text-decoration: none;
-  color: #ffffff;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  outline: 0;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #999999;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  cursor: default;
-}
-.open {
-  *z-index: 1000;
-}
-.open > .dropdown-menu {
-  display: block;
-}
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid #000000;
-  content: "";
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-.dropdown-submenu {
-  position: relative;
-}
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  -webkit-border-radius: 0 6px 6px 6px;
-  -moz-border-radius: 0 6px 6px 6px;
-  border-radius: 0 6px 6px 6px;
-}
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-}
-.dropup .dropdown-submenu > .dropdown-menu {
-  top: auto;
-  bottom: 0;
-  margin-top: 0;
-  margin-bottom: -2px;
-  -webkit-border-radius: 5px 5px 5px 0;
-  -moz-border-radius: 5px 5px 5px 0;
-  border-radius: 5px 5px 5px 0;
-}
-.dropdown-submenu > a:after {
-  display: block;
-  content: " ";
-  float: right;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  border-left-color: #cccccc;
-  margin-top: 5px;
-  margin-right: -10px;
-}
-.dropdown-submenu:hover > a:after {
-  border-left-color: #ffffff;
-}
-.dropdown-submenu.pull-left {
-  float: none;
-}
-.dropdown-submenu.pull-left > .dropdown-menu {
-  left: -100%;
-  margin-left: 10px;
-  -webkit-border-radius: 6px 0 6px 6px;
-  -moz-border-radius: 6px 0 6px 6px;
-  border-radius: 6px 0 6px 6px;
-}
-.dropdown .dropdown-menu .nav-header {
-  padding-left: 20px;
-  padding-right: 20px;
-}
-.typeahead {
-  z-index: 1051;
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.well-large {
-  padding: 24px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.well-small {
-  padding: 9px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-/*@import "bootstrap/component-animations.less";*/
-/*@import "bootstrap/close.less";*/
-.btn {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding: 4px 12px;
-  margin-bottom: 0;
-  font-size: 13px;
-  line-height: 20px;
-  text-align: center;
-  vertical-align: middle;
-  cursor: pointer;
-  color: #333333;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  background-color: #f5f5f5;
-  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
-  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e6e6e6;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  border: 1px solid #cccccc;
-  *border: 0;
-  border-bottom-color: #b3b3b3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  *margin-left: .3em;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn:hover,
-.btn:focus,
-.btn:active,
-.btn.active,
-.btn.disabled,
-.btn[disabled] {
-  color: #333333;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-}
-.btn:active,
-.btn.active {
-  background-color: #cccccc \9;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover,
-.btn:focus {
-  color: #333333;
-  text-decoration: none;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active,
-.btn:active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 11px 19px;
-  font-size: 16.25px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.btn-large [class^="icon-"],
-.btn-large [class*=" icon-"] {
-  margin-top: 4px;
-}
-.btn-small {
-  padding: 2px 10px;
-  font-size: 11.049999999999999px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.btn-small [class^="icon-"],
-.btn-small [class*=" icon-"] {
-  margin-top: 0;
-}
-.btn-mini [class^="icon-"],
-.btn-mini [class*=" icon-"] {
-  margin-top: -1px;
-}
-.btn-mini {
-  padding: 0 6px;
-  font-size: 9.75px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn-primary {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #006dcc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #0044cc;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  color: #ffffff;
-  background-color: #0044cc;
-  *background-color: #003bb3;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #003399 \9;
-}
-.btn-warning {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #f89406;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  color: #ffffff;
-  background-color: #f89406;
-  *background-color: #df8505;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #bd362f;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  color: #ffffff;
-  background-color: #bd362f;
-  *background-color: #a9302a;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(to bottom, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #51a351;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  color: #ffffff;
-  background-color: #51a351;
-  *background-color: #499249;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #2f96b4;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  color: #ffffff;
-  background-color: #2f96b4;
-  *background-color: #2a85a0;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-.btn-inverse {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #363636;
-  background-image: -moz-linear-gradient(top, #444444, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
-  background-image: -webkit-linear-gradient(top, #444444, #222222);
-  background-image: -o-linear-gradient(top, #444444, #222222);
-  background-image: linear-gradient(to bottom, #444444, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #222222;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-inverse:hover,
-.btn-inverse:focus,
-.btn-inverse:active,
-.btn-inverse.active,
-.btn-inverse.disabled,
-.btn-inverse[disabled] {
-  color: #ffffff;
-  background-color: #222222;
-  *background-color: #151515;
-}
-.btn-inverse:active,
-.btn-inverse.active {
-  background-color: #080808 \9;
-}
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.btn-large,
-input[type="submit"].btn.btn-large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.btn-small,
-input[type="submit"].btn.btn-small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn.btn-mini,
-input[type="submit"].btn.btn-mini {
-  *padding-top: 1px;
-  *padding-bottom: 1px;
-}
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
-  background-color: transparent;
-  background-image: none;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-link {
-  border-color: transparent;
-  cursor: pointer;
-  color: #0088cc;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: #005580;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-.btn-link[disabled]:focus {
-  color: #333333;
-  text-decoration: none;
-}
-.btn-group {
-  position: relative;
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  font-size: 0;
-  vertical-align: middle;
-  white-space: nowrap;
-  *margin-left: .3em;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  font-size: 0;
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.btn-toolbar > .btn + .btn,
-.btn-toolbar > .btn-group + .btn,
-.btn-toolbar > .btn + .btn-group {
-  margin-left: 5px;
-}
-.btn-group > .btn {
-  position: relative;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group > .btn + .btn {
-  margin-left: -1px;
-}
-.btn-group > .btn,
-.btn-group > .dropdown-menu,
-.btn-group > .popover {
-  font-size: 13px;
-}
-.btn-group > .btn-mini {
-  font-size: 9.75px;
-}
-.btn-group > .btn-small {
-  font-size: 11.049999999999999px;
-}
-.btn-group > .btn-large {
-  font-size: 16.25px;
-}
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group > .btn + .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group > .btn-mini + .dropdown-toggle {
-  padding-left: 5px;
-  padding-right: 5px;
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-.btn-group > .btn-small + .dropdown-toggle {
-  *padding-top: 5px;
-  *padding-bottom: 4px;
-}
-.btn-group > .btn-large + .dropdown-toggle {
-  padding-left: 12px;
-  padding-right: 12px;
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn-group.open .btn.dropdown-toggle {
-  background-color: #e6e6e6;
-}
-.btn-group.open .btn-primary.dropdown-toggle {
-  background-color: #0044cc;
-}
-.btn-group.open .btn-warning.dropdown-toggle {
-  background-color: #f89406;
-}
-.btn-group.open .btn-danger.dropdown-toggle {
-  background-color: #bd362f;
-}
-.btn-group.open .btn-success.dropdown-toggle {
-  background-color: #51a351;
-}
-.btn-group.open .btn-info.dropdown-toggle {
-  background-color: #2f96b4;
-}
-.btn-group.open .btn-inverse.dropdown-toggle {
-  background-color: #222222;
-}
-.btn .caret {
-  margin-top: 8px;
-  margin-left: 0;
-}
-.btn-large .caret {
-  margin-top: 6px;
-}
-.btn-large .caret {
-  border-left-width: 5px;
-  border-right-width: 5px;
-  border-top-width: 5px;
-}
-.btn-mini .caret,
-.btn-small .caret {
-  margin-top: 8px;
-}
-.dropup .btn-large .caret {
-  border-bottom-width: 5px;
-}
-.btn-primary .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret,
-.btn-inverse .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.btn-group-vertical {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group-vertical > .btn {
-  display: block;
-  float: none;
-  max-width: 100%;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group-vertical > .btn + .btn {
-  margin-left: 0;
-  margin-top: -1px;
-}
-.btn-group-vertical > .btn:first-child {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.btn-group-vertical > .btn:last-child {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.btn-group-vertical > .btn-large:first-child {
-  -webkit-border-radius: 6px 6px 0 0;
-  -moz-border-radius: 6px 6px 0 0;
-  border-radius: 6px 6px 0 0;
-}
-.btn-group-vertical > .btn-large:last-child {
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-}
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 20px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.alert,
-.alert h4 {
-  color: #c09853;
-}
-.alert h4 {
-  margin: 0;
-}
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 20px;
-}
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-  color: #468847;
-}
-.alert-success h4 {
-  color: #468847;
-}
-.alert-danger,
-.alert-error {
-  background-color: #f2dede;
-  border-color: #eed3d7;
-  color: #b94a48;
-}
-.alert-danger h4,
-.alert-error h4 {
-  color: #b94a48;
-}
-.alert-info {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-  color: #3a87ad;
-}
-.alert-info h4 {
-  color: #3a87ad;
-}
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
-.nav {
-  margin-left: 0;
-  margin-bottom: 20px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav > li > a > img {
-  max-width: none;
-}
-.nav > .pull-right {
-  float: right;
-}
-.nav-header {
-  display: block;
-  padding: 3px 15px;
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #999999;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  text-transform: uppercase;
-}
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list {
-  padding-left: 15px;
-  padding-right: 15px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-.nav-list > .active > a,
-.nav-list > .active > a:hover,
-.nav-list > .active > a:focus {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #0088cc;
-}
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  margin-right: 2px;
-}
-.nav-list .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: 20px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover,
-.nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover,
-.nav-pills > .active > a:focus {
-  color: #ffffff;
-  background-color: #0088cc;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover,
-.nav-tabs.nav-stacked > li > a:focus {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu {
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.nav .dropdown-toggle .caret {
-  border-top-color: #0088cc;
-  border-bottom-color: #0088cc;
-  margin-top: 6px;
-}
-.nav .dropdown-toggle:hover .caret,
-.nav .dropdown-toggle:focus .caret {
-  border-top-color: #005580;
-  border-bottom-color: #005580;
-}
-/* move down carets for tabs */
-.nav-tabs .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-.nav .active .dropdown-toggle .caret {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.nav-tabs .active .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-.nav > .dropdown.active > a:hover,
-.nav > .dropdown.active > a:focus {
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover,
-.nav > li.dropdown.open.active > a:focus {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret,
-.nav li.dropdown.open a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.tabs-stacked .open > a:hover,
-.tabs-stacked .open > a:focus {
-  border-color: #999999;
-}
-.tabbable {
-  *zoom: 1;
-}
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.tabbable:after {
-  clear: both;
-}
-.tab-content {
-  overflow: auto;
-}
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below > .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.tabs-below > .nav-tabs > li > a:hover,
-.tabs-below > .nav-tabs > li > a:focus {
-  border-bottom-color: transparent;
-  border-top-color: #ddd;
-}
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover,
-.tabs-below > .nav-tabs > .active > a:focus {
-  border-color: transparent #ddd #ddd #ddd;
-}
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.tabs-left > .nav-tabs > li > a:hover,
-.tabs-left > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover,
-.tabs-left > .nav-tabs .active > a:focus {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.tabs-right > .nav-tabs > li > a:hover,
-.tabs-right > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover,
-.tabs-right > .nav-tabs .active > a:focus {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-.nav > .disabled > a {
-  color: #999999;
-}
-.nav > .disabled > a:hover,
-.nav > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  cursor: default;
-}
-.navbar {
-  overflow: visible;
-  margin-bottom: 20px;
-  *position: relative;
-  *z-index: 2;
-}
-.navbar-inner {
-  min-height: 40px;
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #fafafa;
-  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
-  border: 1px solid #d4d4d4;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  *zoom: 1;
-}
-.navbar-inner:before,
-.navbar-inner:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.navbar-inner:after {
-  clear: both;
-}
-.navbar .container {
-  width: auto;
-}
-.nav-collapse.collapse {
-  height: auto;
-  overflow: visible;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 10px 20px 10px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  color: #777777;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.navbar .brand:hover,
-.navbar .brand:focus {
-  text-decoration: none;
-}
-.navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #777777;
-}
-.navbar-link {
-  color: #777777;
-}
-.navbar-link:hover,
-.navbar-link:focus {
-  color: #333333;
-}
-.navbar .divider-vertical {
-  height: 40px;
-  margin: 0 9px;
-  border-left: 1px solid #f2f2f2;
-  border-right: 1px solid #ffffff;
-}
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn,
-.navbar .input-prepend .btn,
-.navbar .input-append .btn,
-.navbar .input-prepend .btn-group,
-.navbar .input-append .btn-group {
-  margin-top: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .btn {
-  display: inline-block;
-  margin-bottom: 0;
-}
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-form .input-append,
-.navbar-form .input-prepend {
-  margin-top: 5px;
-  white-space: nowrap;
-}
-.navbar-form .input-append input,
-.navbar-form .input-prepend input {
-  margin-top: 0;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  margin-bottom: 0;
-  padding: 4px 14px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-.navbar-static-top {
-  position: static;
-  margin-bottom: 0;
-}
-.navbar-static-top .navbar-inner {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  margin-bottom: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom .navbar-inner {
-  border-width: 1px 0 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-.navbar-fixed-top {
-  top: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1);
-  -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1);
-  box-shadow: 0 1px 10px rgba(0,0,0,.1);
-}
-.navbar-fixed-bottom {
-  bottom: 0;
-}
-.navbar-fixed-bottom .navbar-inner {
-  -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-  -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-  box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-  margin-right: 0;
-}
-.navbar .nav > li {
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 15px 10px;
-  color: #777777;
-  text-decoration: none;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-.navbar .nav > li > a:focus,
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #333333;
-  text-decoration: none;
-}
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  color: #555555;
-  text-decoration: none;
-  background-color: #e5e5e5;
-  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-  -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-}
-.navbar .btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #ededed;
-  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
-  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
-  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e5e5e5;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-}
-.navbar .btn-navbar:hover,
-.navbar .btn-navbar:focus,
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active,
-.navbar .btn-navbar.disabled,
-.navbar .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #e5e5e5;
-  *background-color: #d9d9d9;
-}
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active {
-  background-color: #cccccc \9;
-}
-.navbar .btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.navbar .nav > li > .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .nav > li > .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
-  border-top: 7px solid #ccc;
-  border-top-color: rgba(0, 0, 0, 0.2);
-  border-bottom: 0;
-  bottom: -7px;
-  top: auto;
-}
-.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
-  border-top: 6px solid #ffffff;
-  border-bottom: 0;
-  bottom: -6px;
-  top: auto;
-}
-.navbar .nav li.dropdown > a:hover .caret,
-.navbar .nav li.dropdown > a:focus .caret {
-  border-top-color: #333333;
-  border-bottom-color: #333333;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: #e5e5e5;
-  color: #555555;
-}
-.navbar .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #777777;
-  border-bottom-color: #777777;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-.navbar .pull-right > li > .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right {
-  left: auto;
-  right: 0;
-}
-.navbar .pull-right > li > .dropdown-menu:before,
-.navbar .nav > li > .dropdown-menu.pull-right:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .pull-right > li > .dropdown-menu:after,
-.navbar .nav > li > .dropdown-menu.pull-right:after {
-  left: auto;
-  right: 13px;
-}
-.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
-  left: auto;
-  right: 100%;
-  margin-left: 0;
-  margin-right: -1px;
-  -webkit-border-radius: 6px 0 6px 6px;
-  -moz-border-radius: 6px 0 6px 6px;
-  border-radius: 6px 0 6px 6px;
-}
-.navbar-inverse .navbar-inner {
-  background-color: #1b1b1b;
-  background-image: -moz-linear-gradient(top, #222222, #111111);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
-  background-image: -webkit-linear-gradient(top, #222222, #111111);
-  background-image: -o-linear-gradient(top, #222222, #111111);
-  background-image: linear-gradient(to bottom, #222222, #111111);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
-  border-color: #252525;
-}
-.navbar-inverse .brand,
-.navbar-inverse .nav > li > a {
-  color: #999999;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar-inverse .brand:hover,
-.navbar-inverse .nav > li > a:hover,
-.navbar-inverse .brand:focus,
-.navbar-inverse .nav > li > a:focus {
-  color: #ffffff;
-}
-.navbar-inverse .brand {
-  color: #999999;
-}
-.navbar-inverse .navbar-text {
-  color: #999999;
-}
-.navbar-inverse .nav > li > a:focus,
-.navbar-inverse .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-}
-.navbar-inverse .nav .active > a,
-.navbar-inverse .nav .active > a:hover,
-.navbar-inverse .nav .active > a:focus {
-  color: #ffffff;
-  background-color: #111111;
-}
-.navbar-inverse .navbar-link {
-  color: #999999;
-}
-.navbar-inverse .navbar-link:hover,
-.navbar-inverse .navbar-link:focus {
-  color: #ffffff;
-}
-.navbar-inverse .divider-vertical {
-  border-left-color: #111111;
-  border-right-color: #222222;
-}
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: #111111;
-  color: #ffffff;
-}
-.navbar-inverse .nav li.dropdown > a:hover .caret,
-.navbar-inverse .nav li.dropdown > a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #999999;
-  border-bottom-color: #999999;
-}
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar-inverse .navbar-search .search-query {
-  color: #ffffff;
-  background-color: #515151;
-  border-color: #111111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-inverse .navbar-search .search-query:-moz-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query:focus,
-.navbar-inverse .navbar-search .search-query.focused {
-  padding: 5px 15px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-inverse .btn-navbar {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e0e0e;
-  background-image: -moz-linear-gradient(top, #151515, #040404);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
-  background-image: -webkit-linear-gradient(top, #151515, #040404);
-  background-image: -o-linear-gradient(top, #151515, #040404);
-  background-image: linear-gradient(to bottom, #151515, #040404);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
-  border-color: #040404 #040404 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #040404;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.navbar-inverse .btn-navbar:hover,
-.navbar-inverse .btn-navbar:focus,
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active,
-.navbar-inverse .btn-navbar.disabled,
-.navbar-inverse .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #040404;
-  *background-color: #000000;
-}
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active {
-  background-color: #000000 \9;
-}
-/*@import "bootstrap/breadcrumbs.less";*/
-/*@import "bootstrap/pagination.less";*/
-/*@import "bootstrap/pager.less";*/
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-}
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.modal {
-  position: fixed;
-  top: 10%;
-  left: 50%;
-  z-index: 1050;
-  width: 560px;
-  margin-left: -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  /* IE6-7 */
-
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-  outline: none;
-}
-.modal.fade {
-  -webkit-transition: opacity .3s linear, top .3s ease-out;
-  -moz-transition: opacity .3s linear, top .3s ease-out;
-  -o-transition: opacity .3s linear, top .3s ease-out;
-  transition: opacity .3s linear, top .3s ease-out;
-  top: -25%;
-}
-.modal.fade.in {
-  top: 10%;
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-.modal-header .close {
-  margin-top: 2px;
-}
-.modal-header h3 {
-  margin: 0;
-  line-height: 30px;
-}
-.modal-body {
-  position: relative;
-  overflow-y: auto;
-  max-height: 400px;
-  padding: 15px;
-}
-.modal-form {
-  margin-bottom: 0;
-}
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  text-align: right;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.modal-footer:after {
-  clear: both;
-}
-.modal-footer .btn + .btn {
-  margin-left: 5px;
-  margin-bottom: 0;
-}
-.modal-footer .btn-group .btn + .btn {
-  margin-left: -1px;
-}
-.modal-footer .btn-block + .btn-block {
-  margin-left: 0;
-}
-/*@import "bootstrap/tooltip.less";*/
-/*@import "bootstrap/popovers.less";*/
-/*@import "bootstrap/thumbnails.less";*/
-/*@import "bootstrap/media.less";*/
-/*@import "bootstrap/labels-badges.less";*/
-/*@import "bootstrap/progress-bars.less";*/
-/*@import "bootstrap/accordion.less";*/
-/*@import "bootstrap/carousel.less";*/
-/*@import "bootstrap/hero-unit.less";*/
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-.invisible {
-  visibility: hidden;
-}
-.affix {
-  position: fixed;
-}
-/* http://meyerweb.com/eric/tools/css/reset/ 
-   v2.0 | 20110126
-   License: none (public domain)
-*/
-html,
-body,
-div,
-span,
-applet,
-object,
-iframe,
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-p,
-blockquote,
-pre,
-a,
-abbr,
-acronym,
-address,
-big,
-cite,
-code,
-del,
-dfn,
-em,
-img,
-ins,
-kbd,
-q,
-s,
-samp,
-small,
-strike,
-strong,
-sub,
-sup,
-tt,
-var,
-b,
-u,
-i,
-center,
-dl,
-dt,
-dd,
-ol,
-ul,
-li,
-fieldset,
-form,
-label,
-legend,
-table,
-caption,
-tbody,
-tfoot,
-thead,
-tr,
-th,
-td,
-article,
-aside,
-canvas,
-details,
-embed,
-figure,
-figcaption,
-footer,
-header,
-hgroup,
-menu,
-nav,
-output,
-ruby,
-section,
-summary,
-time,
-mark,
-audio,
-video {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-size: 100%;
-  font: inherit;
-  vertical-align: baseline;
-}
-/* HTML5 display-role reset for older browsers */
-

<TRUNCATED>


[61/98] [abbrv] incubator-apex-malhar git commit: Remove duplicate version and groupId declarations.

Posted by da...@apache.org.
Remove duplicate version and groupId declarations.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/a6ba9a47
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/a6ba9a47
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/a6ba9a47

Branch: refs/heads/master
Commit: a6ba9a473e5084fd036708166ae6a4b6871bb3af
Parents: dda09b9
Author: MalharJenkins <je...@datatorrent.com>
Authored: Fri Oct 16 14:39:03 2015 -0700
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Fri Oct 16 14:41:15 2015 -0700

----------------------------------------------------------------------
 demos/frauddetect/pom.xml  | 2 --
 demos/machinedata/pom.xml  | 2 --
 demos/mobile/pom.xml       | 2 --
 demos/mrmonitor/pom.xml    | 2 --
 demos/mroperator/pom.xml   | 2 --
 demos/pi/pom.xml           | 2 --
 demos/r/pom.xml            | 2 --
 demos/twitter/pom.xml      | 2 --
 demos/uniquecount/pom.xml  | 2 --
 demos/wordcount/pom.xml    | 3 ---
 demos/yahoofinance/pom.xml | 2 --
 11 files changed, 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a6ba9a47/demos/frauddetect/pom.xml
----------------------------------------------------------------------
diff --git a/demos/frauddetect/pom.xml b/demos/frauddetect/pom.xml
index 3d5109b..28c98dd 100644
--- a/demos/frauddetect/pom.xml
+++ b/demos/frauddetect/pom.xml
@@ -22,8 +22,6 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   
-  <groupId>org.apache.apex</groupId>
-  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>frauddetect-demo</artifactId>
   <packaging>jar</packaging>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a6ba9a47/demos/machinedata/pom.xml
----------------------------------------------------------------------
diff --git a/demos/machinedata/pom.xml b/demos/machinedata/pom.xml
index 73d5c14..a55f78a 100644
--- a/demos/machinedata/pom.xml
+++ b/demos/machinedata/pom.xml
@@ -22,8 +22,6 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   
-  <groupId>org.apache.apex</groupId>
-  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>machinedata-demo</artifactId>
   <packaging>jar</packaging>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a6ba9a47/demos/mobile/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mobile/pom.xml b/demos/mobile/pom.xml
index ccc9a66..29eef6e 100644
--- a/demos/mobile/pom.xml
+++ b/demos/mobile/pom.xml
@@ -22,8 +22,6 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>org.apache.apex</groupId>
-  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>mobile-demo</artifactId>
   <packaging>jar</packaging>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a6ba9a47/demos/mrmonitor/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mrmonitor/pom.xml b/demos/mrmonitor/pom.xml
index b087fa1..90f9941 100644
--- a/demos/mrmonitor/pom.xml
+++ b/demos/mrmonitor/pom.xml
@@ -22,8 +22,6 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>org.apache.apex</groupId>
-  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>mrmonitor</artifactId>
   <packaging>jar</packaging>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a6ba9a47/demos/mroperator/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mroperator/pom.xml b/demos/mroperator/pom.xml
index 0e598b7..a9fb558 100644
--- a/demos/mroperator/pom.xml
+++ b/demos/mroperator/pom.xml
@@ -22,8 +22,6 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   
-  <groupId>org.apache.apex</groupId>
-  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>mroperator</artifactId>
   <packaging>jar</packaging>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a6ba9a47/demos/pi/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pi/pom.xml b/demos/pi/pom.xml
index 7cc4119..94d7b32 100644
--- a/demos/pi/pom.xml
+++ b/demos/pi/pom.xml
@@ -22,8 +22,6 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>org.apache.apex</groupId>
-  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>pi-demo</artifactId>
   <packaging>jar</packaging>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a6ba9a47/demos/r/pom.xml
----------------------------------------------------------------------
diff --git a/demos/r/pom.xml b/demos/r/pom.xml
index 1c94631..459cf2b 100644
--- a/demos/r/pom.xml
+++ b/demos/r/pom.xml
@@ -22,8 +22,6 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>org.apache.apex</groupId>
-  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>r-demo</artifactId>
   <packaging>jar</packaging>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a6ba9a47/demos/twitter/pom.xml
----------------------------------------------------------------------
diff --git a/demos/twitter/pom.xml b/demos/twitter/pom.xml
index 1ccc37a..fbeaa8e 100644
--- a/demos/twitter/pom.xml
+++ b/demos/twitter/pom.xml
@@ -22,8 +22,6 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>org.apache.apex</groupId>
-  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>twitter-demo</artifactId>
   <packaging>jar</packaging>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a6ba9a47/demos/uniquecount/pom.xml
----------------------------------------------------------------------
diff --git a/demos/uniquecount/pom.xml b/demos/uniquecount/pom.xml
index 3a66aa6..0f55354 100644
--- a/demos/uniquecount/pom.xml
+++ b/demos/uniquecount/pom.xml
@@ -22,8 +22,6 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>org.apache.apex</groupId>
-  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>uniquecount</artifactId>
   <packaging>jar</packaging>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a6ba9a47/demos/wordcount/pom.xml
----------------------------------------------------------------------
diff --git a/demos/wordcount/pom.xml b/demos/wordcount/pom.xml
index 78732b8..4a45cc2 100644
--- a/demos/wordcount/pom.xml
+++ b/demos/wordcount/pom.xml
@@ -22,9 +22,6 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   
-    
-  <groupId>org.apache.apex</groupId>
-  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>wordcount-demo</artifactId>
   <packaging>jar</packaging>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a6ba9a47/demos/yahoofinance/pom.xml
----------------------------------------------------------------------
diff --git a/demos/yahoofinance/pom.xml b/demos/yahoofinance/pom.xml
index cdb8c7b..17321de 100644
--- a/demos/yahoofinance/pom.xml
+++ b/demos/yahoofinance/pom.xml
@@ -22,8 +22,6 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>org.apache.apex</groupId>
-  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>yahoo-finance-demo</artifactId>
   <packaging>jar</packaging>
 


[90/98] [abbrv] incubator-apex-malhar git commit: Cleanup of web resources

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/malhar.css
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/malhar.css b/apps/logstream/src/main/html/malhar.css
new file mode 100644
index 0000000..b2f9a8b
--- /dev/null
+++ b/apps/logstream/src/main/html/malhar.css
@@ -0,0 +1,4564 @@
+/**
+ * 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.
+ */
+.clearfix {
+  *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.clearfix:after {
+  clear: both;
+}
+.hide-text {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.input-block-level {
+  display: block;
+  width: 100%;
+  min-height: 30px;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+  display: block;
+}
+
+html {
+  font-size: 100%;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+a:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+a:hover,
+a:active {
+  outline: 0;
+}
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -0.5em;
+}
+sub {
+  bottom: -0.25em;
+}
+img {
+  /* Responsive images (ensure images don't scale beyond their parents) */
+
+  max-width: 100%;
+  /* Part 1: Set a maxium relative to the parent */
+
+  width: auto\9;
+  /* IE7-8 need help adjusting responsive images */
+
+  height: auto;
+  /* Part 2: Scale the height according to the width, otherwise you get stretching */
+
+  vertical-align: middle;
+  border: 0;
+  -ms-interpolation-mode: bicubic;
+}
+#map_canvas img,
+.google-maps img {
+  max-width: none;
+}
+button,
+input,
+select,
+textarea {
+  margin: 0;
+  font-size: 100%;
+  vertical-align: middle;
+}
+button,
+input {
+  *overflow: visible;
+  line-height: normal;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer;
+}
+label,
+select,
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"],
+input[type="radio"],
+input[type="checkbox"] {
+  cursor: pointer;
+}
+input[type="search"] {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button {
+  -webkit-appearance: none;
+}
+textarea {
+  overflow: auto;
+  vertical-align: top;
+}
+@media print {
+  * {
+    text-shadow: none !important;
+    color: #000 !important;
+    background: transparent !important;
+    box-shadow: none !important;
+  }
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+  .ir a:after,
+  a[href^="javascript:"]:after,
+  a[href^="#"]:after {
+    content: "";
+  }
+  pre,
+  blockquote {
+    border: 1px solid #999;
+    page-break-inside: avoid;
+  }
+  thead {
+    display: table-header-group;
+  }
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+  img {
+    max-width: 100% !important;
+  }
+  @page  {
+    margin: 0.5cm;
+  }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+}
+body {
+  margin: 0;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  line-height: 20px;
+  color: #333333;
+  background-color: #ffffff;
+}
+a {
+  color: #0088cc;
+  text-decoration: none;
+}
+a:hover,
+a:focus {
+  color: #005580;
+  text-decoration: underline;
+}
+.img-rounded {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.img-polaroid {
+  padding: 4px;
+  background-color: #fff;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+.img-circle {
+  -webkit-border-radius: 500px;
+  -moz-border-radius: 500px;
+  border-radius: 500px;
+}
+/*@import "bootstrap/grid.less";*/
+/*@import "bootstrap/layouts.less";*/
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 19.5px;
+  font-weight: 200;
+  line-height: 30px;
+}
+small {
+  font-size: 85%;
+}
+strong {
+  font-weight: bold;
+}
+em {
+  font-style: italic;
+}
+cite {
+  font-style: normal;
+}
+.muted {
+  color: #999999;
+}
+a.muted:hover,
+a.muted:focus {
+  color: #808080;
+}
+.text-warning {
+  color: #c09853;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+  color: #a47e3c;
+}
+.text-error {
+  color: #b94a48;
+}
+a.text-error:hover,
+a.text-error:focus {
+  color: #953b39;
+}
+.text-info {
+  color: #3a87ad;
+}
+a.text-info:hover,
+a.text-info:focus {
+  color: #2d6987;
+}
+.text-success {
+  color: #468847;
+}
+a.text-success:hover,
+a.text-success:focus {
+  color: #356635;
+}
+.text-left {
+  text-align: left;
+}
+.text-right {
+  text-align: right;
+}
+.text-center {
+  text-align: center;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  margin: 10px 0;
+  font-family: inherit;
+  font-weight: bold;
+  line-height: 20px;
+  color: inherit;
+  text-rendering: optimizelegibility;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+  font-weight: normal;
+  line-height: 1;
+  color: #999999;
+}
+h1,
+h2,
+h3 {
+  line-height: 40px;
+}
+h1 {
+  font-size: 35.75px;
+}
+h2 {
+  font-size: 29.25px;
+}
+h3 {
+  font-size: 22.75px;
+}
+h4 {
+  font-size: 16.25px;
+}
+h5 {
+  font-size: 13px;
+}
+h6 {
+  font-size: 11.049999999999999px;
+}
+h1 small {
+  font-size: 22.75px;
+}
+h2 small {
+  font-size: 16.25px;
+}
+h3 small {
+  font-size: 13px;
+}
+h4 small {
+  font-size: 13px;
+}
+.page-header {
+  padding-bottom: 9px;
+  margin: 20px 0 30px;
+  border-bottom: 1px solid #eeeeee;
+}
+ul,
+ol {
+  padding: 0;
+  margin: 0 0 10px 25px;
+}
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+  margin-bottom: 0;
+}
+li {
+  line-height: 20px;
+}
+ul.unstyled,
+ol.unstyled {
+  margin-left: 0;
+  list-style: none;
+}
+ul.inline,
+ol.inline {
+  margin-left: 0;
+  list-style: none;
+}
+ul.inline > li,
+ol.inline > li {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  padding-left: 5px;
+  padding-right: 5px;
+}
+dl {
+  margin-bottom: 20px;
+}
+dt,
+dd {
+  line-height: 20px;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 10px;
+}
+.dl-horizontal {
+  *zoom: 1;
+}
+.dl-horizontal:before,
+.dl-horizontal:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.dl-horizontal:after {
+  clear: both;
+}
+.dl-horizontal dt {
+  float: left;
+  width: 160px;
+  clear: left;
+  text-align: right;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.dl-horizontal dd {
+  margin-left: 180px;
+}
+hr {
+  margin: 20px 0;
+  border: 0;
+  border-top: 1px solid #eeeeee;
+  border-bottom: 1px solid #ffffff;
+}
+abbr[title],
+abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted #999999;
+}
+abbr.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+blockquote {
+  padding: 0 0 0 15px;
+  margin: 0 0 20px;
+  border-left: 5px solid #eeeeee;
+}
+blockquote p {
+  margin-bottom: 0;
+  font-size: 16.25px;
+  font-weight: 300;
+  line-height: 1.25;
+}
+blockquote small {
+  display: block;
+  line-height: 20px;
+  color: #999999;
+}
+blockquote small:before {
+  content: '\2014 \00A0';
+}
+blockquote.pull-right {
+  float: right;
+  padding-right: 15px;
+  padding-left: 0;
+  border-right: 5px solid #eeeeee;
+  border-left: 0;
+}
+blockquote.pull-right p,
+blockquote.pull-right small {
+  text-align: right;
+}
+blockquote.pull-right small:before {
+  content: '';
+}
+blockquote.pull-right small:after {
+  content: '\00A0 \2014';
+}
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+  content: "";
+}
+address {
+  display: block;
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 20px;
+}
+code,
+pre {
+  padding: 0 3px 2px;
+  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+  font-size: 11px;
+  color: #333333;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+code {
+  padding: 2px 4px;
+  color: #d14;
+  background-color: #f7f7f9;
+  border: 1px solid #e1e1e8;
+  white-space: nowrap;
+}
+pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 12px;
+  line-height: 20px;
+  word-break: break-all;
+  word-wrap: break-word;
+  white-space: pre;
+  white-space: pre-wrap;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+pre.prettyprint {
+  margin-bottom: 20px;
+}
+pre code {
+  padding: 0;
+  color: inherit;
+  white-space: pre;
+  white-space: pre-wrap;
+  background-color: transparent;
+  border: 0;
+}
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+form {
+  margin: 0 0 20px;
+}
+fieldset {
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 20px;
+  font-size: 19.5px;
+  line-height: 40px;
+  color: #333333;
+  border: 0;
+  border-bottom: 1px solid #e5e5e5;
+}
+legend small {
+  font-size: 15px;
+  color: #999999;
+}
+label,
+input,
+button,
+select,
+textarea {
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 20px;
+}
+input,
+button,
+select,
+textarea {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+label {
+  display: block;
+  margin-bottom: 5px;
+}
+select,
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+  display: inline-block;
+  height: 20px;
+  padding: 4px 6px;
+  margin-bottom: 10px;
+  font-size: 13px;
+  line-height: 20px;
+  color: #555555;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  vertical-align: middle;
+}
+input,
+textarea,
+.uneditable-input {
+  width: 206px;
+}
+textarea {
+  height: auto;
+}
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+  background-color: #ffffff;
+  border: 1px solid #cccccc;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -webkit-transition: border linear .2s, box-shadow linear .2s;
+  -moz-transition: border linear .2s, box-shadow linear .2s;
+  -o-transition: border linear .2s, box-shadow linear .2s;
+  transition: border linear .2s, box-shadow linear .2s;
+}
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="datetime"]:focus,
+input[type="datetime-local"]:focus,
+input[type="date"]:focus,
+input[type="month"]:focus,
+input[type="time"]:focus,
+input[type="week"]:focus,
+input[type="number"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="color"]:focus,
+.uneditable-input:focus {
+  border-color: rgba(82, 168, 236, 0.8);
+  outline: 0;
+  outline: thin dotted \9;
+  /* IE6-9 */
+
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+  -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+}
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  *margin-top: 0;
+  /* IE7 */
+
+  margin-top: 1px \9;
+  /* IE8-9 */
+
+  line-height: normal;
+}
+input[type="file"],
+input[type="image"],
+input[type="submit"],
+input[type="reset"],
+input[type="button"],
+input[type="radio"],
+input[type="checkbox"] {
+  width: auto;
+}
+select,
+input[type="file"] {
+  height: 30px;
+  /* In IE7, the height of the select element cannot be changed by height, only font-size */
+
+  *margin-top: 4px;
+  /* For IE7, add top margin to align select with labels */
+
+  line-height: 30px;
+}
+select {
+  width: 220px;
+  border: 1px solid #cccccc;
+  background-color: #ffffff;
+}
+select[multiple],
+select[size] {
+  height: auto;
+}
+select:focus,
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.uneditable-input,
+.uneditable-textarea {
+  color: #999999;
+  background-color: #fcfcfc;
+  border-color: #cccccc;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  cursor: not-allowed;
+}
+.uneditable-input {
+  overflow: hidden;
+  white-space: nowrap;
+}
+.uneditable-textarea {
+  width: auto;
+  height: auto;
+}
+input:-moz-placeholder,
+textarea:-moz-placeholder {
+  color: #999999;
+}
+input:-ms-input-placeholder,
+textarea:-ms-input-placeholder {
+  color: #999999;
+}
+input::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder {
+  color: #999999;
+}
+.radio,
+.checkbox {
+  min-height: 20px;
+  padding-left: 20px;
+}
+.radio input[type="radio"],
+.checkbox input[type="checkbox"] {
+  float: left;
+  margin-left: -20px;
+}
+.controls > .radio:first-child,
+.controls > .checkbox:first-child {
+  padding-top: 5px;
+}
+.radio.inline,
+.checkbox.inline {
+  display: inline-block;
+  padding-top: 5px;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.radio.inline + .radio.inline,
+.checkbox.inline + .checkbox.inline {
+  margin-left: 10px;
+}
+.input-mini {
+  width: 60px;
+}
+.input-small {
+  width: 90px;
+}
+.input-medium {
+  width: 150px;
+}
+.input-large {
+  width: 210px;
+}
+.input-xlarge {
+  width: 270px;
+}
+.input-xxlarge {
+  width: 530px;
+}
+input[class*="span"],
+select[class*="span"],
+textarea[class*="span"],
+.uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"] {
+  float: none;
+  margin-left: 0;
+}
+.input-append input[class*="span"],
+.input-append .uneditable-input[class*="span"],
+.input-prepend input[class*="span"],
+.input-prepend .uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"],
+.row-fluid .input-prepend [class*="span"],
+.row-fluid .input-append [class*="span"] {
+  display: inline-block;
+}
+input,
+textarea,
+.uneditable-input {
+  margin-left: 0;
+}
+.controls-row [class*="span"] + [class*="span"] {
+  margin-left: 20px;
+}
+input.span12,
+textarea.span12,
+.uneditable-input.span12 {
+  width: 926px;
+}
+input.span11,
+textarea.span11,
+.uneditable-input.span11 {
+  width: 846px;
+}
+input.span10,
+textarea.span10,
+.uneditable-input.span10 {
+  width: 766px;
+}
+input.span9,
+textarea.span9,
+.uneditable-input.span9 {
+  width: 686px;
+}
+input.span8,
+textarea.span8,
+.uneditable-input.span8 {
+  width: 606px;
+}
+input.span7,
+textarea.span7,
+.uneditable-input.span7 {
+  width: 526px;
+}
+input.span6,
+textarea.span6,
+.uneditable-input.span6 {
+  width: 446px;
+}
+input.span5,
+textarea.span5,
+.uneditable-input.span5 {
+  width: 366px;
+}
+input.span4,
+textarea.span4,
+.uneditable-input.span4 {
+  width: 286px;
+}
+input.span3,
+textarea.span3,
+.uneditable-input.span3 {
+  width: 206px;
+}
+input.span2,
+textarea.span2,
+.uneditable-input.span2 {
+  width: 126px;
+}
+input.span1,
+textarea.span1,
+.uneditable-input.span1 {
+  width: 46px;
+}
+.controls-row {
+  *zoom: 1;
+}
+.controls-row:before,
+.controls-row:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.controls-row:after {
+  clear: both;
+}
+.controls-row [class*="span"],
+.row-fluid .controls-row [class*="span"] {
+  float: left;
+}
+.controls-row .checkbox[class*="span"],
+.controls-row .radio[class*="span"] {
+  padding-top: 5px;
+}
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+  cursor: not-allowed;
+  background-color: #eeeeee;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"][readonly],
+input[type="checkbox"][readonly] {
+  background-color: transparent;
+}
+.control-group.warning .control-label,
+.control-group.warning .help-block,
+.control-group.warning .help-inline {
+  color: #c09853;
+}
+.control-group.warning .checkbox,
+.control-group.warning .radio,
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+  color: #c09853;
+}
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+  border-color: #c09853;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.warning input:focus,
+.control-group.warning select:focus,
+.control-group.warning textarea:focus {
+  border-color: #a47e3c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+}
+.control-group.warning .input-prepend .add-on,
+.control-group.warning .input-append .add-on {
+  color: #c09853;
+  background-color: #fcf8e3;
+  border-color: #c09853;
+}
+.control-group.error .control-label,
+.control-group.error .help-block,
+.control-group.error .help-inline {
+  color: #b94a48;
+}
+.control-group.error .checkbox,
+.control-group.error .radio,
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+  color: #b94a48;
+}
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+  border-color: #b94a48;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.error input:focus,
+.control-group.error select:focus,
+.control-group.error textarea:focus {
+  border-color: #953b39;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+}
+.control-group.error .input-prepend .add-on,
+.control-group.error .input-append .add-on {
+  color: #b94a48;
+  background-color: #f2dede;
+  border-color: #b94a48;
+}
+.control-group.success .control-label,
+.control-group.success .help-block,
+.control-group.success .help-inline {
+  color: #468847;
+}
+.control-group.success .checkbox,
+.control-group.success .radio,
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+  color: #468847;
+}
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+  border-color: #468847;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.success input:focus,
+.control-group.success select:focus,
+.control-group.success textarea:focus {
+  border-color: #356635;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+}
+.control-group.success .input-prepend .add-on,
+.control-group.success .input-append .add-on {
+  color: #468847;
+  background-color: #dff0d8;
+  border-color: #468847;
+}
+.control-group.info .control-label,
+.control-group.info .help-block,
+.control-group.info .help-inline {
+  color: #3a87ad;
+}
+.control-group.info .checkbox,
+.control-group.info .radio,
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+  color: #3a87ad;
+}
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+  border-color: #3a87ad;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.info input:focus,
+.control-group.info select:focus,
+.control-group.info textarea:focus {
+  border-color: #2d6987;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+}
+.control-group.info .input-prepend .add-on,
+.control-group.info .input-append .add-on {
+  color: #3a87ad;
+  background-color: #d9edf7;
+  border-color: #3a87ad;
+}
+input:focus:invalid,
+textarea:focus:invalid,
+select:focus:invalid {
+  color: #b94a48;
+  border-color: #ee5f5b;
+}
+input:focus:invalid:focus,
+textarea:focus:invalid:focus,
+select:focus:invalid:focus {
+  border-color: #e9322d;
+  -webkit-box-shadow: 0 0 6px #f8b9b7;
+  -moz-box-shadow: 0 0 6px #f8b9b7;
+  box-shadow: 0 0 6px #f8b9b7;
+}
+.form-actions {
+  padding: 19px 20px 20px;
+  margin-top: 20px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #e5e5e5;
+  *zoom: 1;
+}
+.form-actions:before,
+.form-actions:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.form-actions:after {
+  clear: both;
+}
+.help-block,
+.help-inline {
+  color: #595959;
+}
+.help-block {
+  display: block;
+  margin-bottom: 10px;
+}
+.help-inline {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  vertical-align: middle;
+  padding-left: 5px;
+}
+.input-append,
+.input-prepend {
+  display: inline-block;
+  margin-bottom: 10px;
+  vertical-align: middle;
+  font-size: 0;
+  white-space: nowrap;
+}
+.input-append input,
+.input-prepend input,
+.input-append select,
+.input-prepend select,
+.input-append .uneditable-input,
+.input-prepend .uneditable-input,
+.input-append .dropdown-menu,
+.input-prepend .dropdown-menu,
+.input-append .popover,
+.input-prepend .popover {
+  font-size: 13px;
+}
+.input-append input,
+.input-prepend input,
+.input-append select,
+.input-prepend select,
+.input-append .uneditable-input,
+.input-prepend .uneditable-input {
+  position: relative;
+  margin-bottom: 0;
+  *margin-left: 0;
+  vertical-align: top;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-append input:focus,
+.input-prepend input:focus,
+.input-append select:focus,
+.input-prepend select:focus,
+.input-append .uneditable-input:focus,
+.input-prepend .uneditable-input:focus {
+  z-index: 2;
+}
+.input-append .add-on,
+.input-prepend .add-on {
+  display: inline-block;
+  width: auto;
+  height: 20px;
+  min-width: 16px;
+  padding: 4px 5px;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 20px;
+  text-align: center;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #eeeeee;
+  border: 1px solid #ccc;
+}
+.input-append .add-on,
+.input-prepend .add-on,
+.input-append .btn,
+.input-prepend .btn,
+.input-append .btn-group > .dropdown-toggle,
+.input-prepend .btn-group > .dropdown-toggle {
+  vertical-align: top;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.input-append .active,
+.input-prepend .active {
+  background-color: #a9dba9;
+  border-color: #46a546;
+}
+.input-prepend .add-on,
+.input-prepend .btn {
+  margin-right: -1px;
+}
+.input-prepend .add-on:first-child,
+.input-prepend .btn:first-child {
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.input-append input,
+.input-append select,
+.input-append .uneditable-input {
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.input-append input + .btn-group .btn:last-child,
+.input-append select + .btn-group .btn:last-child,
+.input-append .uneditable-input + .btn-group .btn:last-child {
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-append .add-on,
+.input-append .btn,
+.input-append .btn-group {
+  margin-left: -1px;
+}
+.input-append .add-on:last-child,
+.input-append .btn:last-child,
+.input-append .btn-group:last-child > .dropdown-toggle {
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-prepend.input-append input,
+.input-prepend.input-append select,
+.input-prepend.input-append .uneditable-input {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.input-prepend.input-append input + .btn-group .btn,
+.input-prepend.input-append select + .btn-group .btn,
+.input-prepend.input-append .uneditable-input + .btn-group .btn {
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-prepend.input-append .add-on:first-child,
+.input-prepend.input-append .btn:first-child {
+  margin-right: -1px;
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.input-prepend.input-append .add-on:last-child,
+.input-prepend.input-append .btn:last-child {
+  margin-left: -1px;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-prepend.input-append .btn-group:first-child {
+  margin-left: 0;
+}
+input.search-query {
+  padding-right: 14px;
+  padding-right: 4px \9;
+  padding-left: 14px;
+  padding-left: 4px \9;
+  /* IE7-8 doesn't have border-radius, so don't indent the padding */
+
+  margin-bottom: 0;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  border-radius: 15px;
+}
+/* Allow for input prepend/append in search forms */
+.form-search .input-append .search-query,
+.form-search .input-prepend .search-query {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.form-search .input-append .search-query {
+  -webkit-border-radius: 14px 0 0 14px;
+  -moz-border-radius: 14px 0 0 14px;
+  border-radius: 14px 0 0 14px;
+}
+.form-search .input-append .btn {
+  -webkit-border-radius: 0 14px 14px 0;
+  -moz-border-radius: 0 14px 14px 0;
+  border-radius: 0 14px 14px 0;
+}
+.form-search .input-prepend .search-query {
+  -webkit-border-radius: 0 14px 14px 0;
+  -moz-border-radius: 0 14px 14px 0;
+  border-radius: 0 14px 14px 0;
+}
+.form-search .input-prepend .btn {
+  -webkit-border-radius: 14px 0 0 14px;
+  -moz-border-radius: 14px 0 0 14px;
+  border-radius: 14px 0 0 14px;
+}
+.form-search input,
+.form-inline input,
+.form-horizontal input,
+.form-search textarea,
+.form-inline textarea,
+.form-horizontal textarea,
+.form-search select,
+.form-inline select,
+.form-horizontal select,
+.form-search .help-inline,
+.form-inline .help-inline,
+.form-horizontal .help-inline,
+.form-search .uneditable-input,
+.form-inline .uneditable-input,
+.form-horizontal .uneditable-input,
+.form-search .input-prepend,
+.form-inline .input-prepend,
+.form-horizontal .input-prepend,
+.form-search .input-append,
+.form-inline .input-append,
+.form-horizontal .input-append {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.form-search .hide,
+.form-inline .hide,
+.form-horizontal .hide {
+  display: none;
+}
+.form-search label,
+.form-inline label,
+.form-search .btn-group,
+.form-inline .btn-group {
+  display: inline-block;
+}
+.form-search .input-append,
+.form-inline .input-append,
+.form-search .input-prepend,
+.form-inline .input-prepend {
+  margin-bottom: 0;
+}
+.form-search .radio,
+.form-search .checkbox,
+.form-inline .radio,
+.form-inline .checkbox {
+  padding-left: 0;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.form-search .radio input[type="radio"],
+.form-search .checkbox input[type="checkbox"],
+.form-inline .radio input[type="radio"],
+.form-inline .checkbox input[type="checkbox"] {
+  float: left;
+  margin-right: 3px;
+  margin-left: 0;
+}
+.control-group {
+  margin-bottom: 10px;
+}
+legend + .control-group {
+  margin-top: 20px;
+  -webkit-margin-top-collapse: separate;
+}
+.form-horizontal .control-group {
+  margin-bottom: 20px;
+  *zoom: 1;
+}
+.form-horizontal .control-group:before,
+.form-horizontal .control-group:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.form-horizontal .control-group:after {
+  clear: both;
+}
+.form-horizontal .control-label {
+  float: left;
+  width: 160px;
+  padding-top: 5px;
+  text-align: right;
+}
+.form-horizontal .controls {
+  *display: inline-block;
+  *padding-left: 20px;
+  margin-left: 180px;
+  *margin-left: 0;
+}
+.form-horizontal .controls:first-child {
+  *padding-left: 180px;
+}
+.form-horizontal .help-block {
+  margin-bottom: 0;
+}
+.form-horizontal input + .help-block,
+.form-horizontal select + .help-block,
+.form-horizontal textarea + .help-block,
+.form-horizontal .uneditable-input + .help-block,
+.form-horizontal .input-prepend + .help-block,
+.form-horizontal .input-append + .help-block {
+  margin-top: 10px;
+}
+.form-horizontal .form-actions {
+  padding-left: 180px;
+}
+
+/*@import "bootstrap/sprites.less";*/
+.dropup,
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle {
+  *margin-bottom: -3px;
+}
+.dropdown-toggle:active,
+.open .dropdown-toggle {
+  outline: 0;
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  vertical-align: top;
+  border-top: 4px solid #000000;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+  content: "";
+}
+.dropdown .caret {
+  margin-top: 8px;
+  margin-left: 2px;
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  list-style: none;
+  background-color: #ffffff;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  *border-right-width: 2px;
+  *border-bottom-width: 2px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding;
+  background-clip: padding-box;
+}
+.dropdown-menu.pull-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu .divider {
+  *width: 100%;
+  height: 1px;
+  margin: 9px 1px;
+  *margin: -5px 0 5px;
+  overflow: hidden;
+  background-color: #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+}
+.dropdown-menu > li > a {
+  display: block;
+  padding: 3px 20px;
+  clear: both;
+  font-weight: normal;
+  line-height: 20px;
+  color: #333333;
+  white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus,
+.dropdown-submenu:hover > a,
+.dropdown-submenu:focus > a {
+  text-decoration: none;
+  color: #ffffff;
+  background-color: #0081c2;
+  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  color: #ffffff;
+  text-decoration: none;
+  outline: 0;
+  background-color: #0081c2;
+  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  color: #999999;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  text-decoration: none;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  cursor: default;
+}
+.open {
+  *z-index: 1000;
+}
+.open > .dropdown-menu {
+  display: block;
+}
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+  border-top: 0;
+  border-bottom: 4px solid #000000;
+  content: "";
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 1px;
+}
+.dropdown-submenu {
+  position: relative;
+}
+.dropdown-submenu > .dropdown-menu {
+  top: 0;
+  left: 100%;
+  margin-top: -6px;
+  margin-left: -1px;
+  -webkit-border-radius: 0 6px 6px 6px;
+  -moz-border-radius: 0 6px 6px 6px;
+  border-radius: 0 6px 6px 6px;
+}
+.dropdown-submenu:hover > .dropdown-menu {
+  display: block;
+}
+.dropup .dropdown-submenu > .dropdown-menu {
+  top: auto;
+  bottom: 0;
+  margin-top: 0;
+  margin-bottom: -2px;
+  -webkit-border-radius: 5px 5px 5px 0;
+  -moz-border-radius: 5px 5px 5px 0;
+  border-radius: 5px 5px 5px 0;
+}
+.dropdown-submenu > a:after {
+  display: block;
+  content: " ";
+  float: right;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #cccccc;
+  margin-top: 5px;
+  margin-right: -10px;
+}
+.dropdown-submenu:hover > a:after {
+  border-left-color: #ffffff;
+}
+.dropdown-submenu.pull-left {
+  float: none;
+}
+.dropdown-submenu.pull-left > .dropdown-menu {
+  left: -100%;
+  margin-left: 10px;
+  -webkit-border-radius: 6px 0 6px 6px;
+  -moz-border-radius: 6px 0 6px 6px;
+  border-radius: 6px 0 6px 6px;
+}
+.dropdown .dropdown-menu .nav-header {
+  padding-left: 20px;
+  padding-right: 20px;
+}
+.typeahead {
+  z-index: 1051;
+  margin-top: 2px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #e3e3e3;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, 0.15);
+}
+.well-large {
+  padding: 24px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.well-small {
+  padding: 9px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+/*@import "bootstrap/component-animations.less";*/
+/*@import "bootstrap/close.less";*/
+.btn {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  padding: 4px 12px;
+  margin-bottom: 0;
+  font-size: 13px;
+  line-height: 20px;
+  text-align: center;
+  vertical-align: middle;
+  cursor: pointer;
+  color: #333333;
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+  background-color: #f5f5f5;
+  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
+  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #e6e6e6;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  border: 1px solid #cccccc;
+  *border: 0;
+  border-bottom-color: #b3b3b3;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  *margin-left: .3em;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn:hover,
+.btn:focus,
+.btn:active,
+.btn.active,
+.btn.disabled,
+.btn[disabled] {
+  color: #333333;
+  background-color: #e6e6e6;
+  *background-color: #d9d9d9;
+}
+.btn:active,
+.btn.active {
+  background-color: #cccccc \9;
+}
+.btn:first-child {
+  *margin-left: 0;
+}
+.btn:hover,
+.btn:focus {
+  color: #333333;
+  text-decoration: none;
+  background-position: 0 -15px;
+  -webkit-transition: background-position 0.1s linear;
+  -moz-transition: background-position 0.1s linear;
+  -o-transition: background-position 0.1s linear;
+  transition: background-position 0.1s linear;
+}
+.btn:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn.active,
+.btn:active {
+  background-image: none;
+  outline: 0;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn.disabled,
+.btn[disabled] {
+  cursor: default;
+  background-image: none;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.btn-large {
+  padding: 11px 19px;
+  font-size: 16.25px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.btn-large [class^="icon-"],
+.btn-large [class*=" icon-"] {
+  margin-top: 4px;
+}
+.btn-small {
+  padding: 2px 10px;
+  font-size: 11.049999999999999px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.btn-small [class^="icon-"],
+.btn-small [class*=" icon-"] {
+  margin-top: 0;
+}
+.btn-mini [class^="icon-"],
+.btn-mini [class*=" icon-"] {
+  margin-top: -1px;
+}
+.btn-mini {
+  padding: 0 6px;
+  font-size: 9.75px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.btn-block {
+  display: block;
+  width: 100%;
+  padding-left: 0;
+  padding-right: 0;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+  width: 100%;
+}
+.btn-primary.active,
+.btn-warning.active,
+.btn-danger.active,
+.btn-success.active,
+.btn-info.active,
+.btn-inverse.active {
+  color: rgba(255, 255, 255, 0.75);
+}
+.btn-primary {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #006dcc;
+  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
+  border-color: #0044cc #0044cc #002a80;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #0044cc;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.btn-primary.disabled,
+.btn-primary[disabled] {
+  color: #ffffff;
+  background-color: #0044cc;
+  *background-color: #003bb3;
+}
+.btn-primary:active,
+.btn-primary.active {
+  background-color: #003399 \9;
+}
+.btn-warning {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #faa732;
+  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+  background-image: -o-linear-gradient(top, #fbb450, #f89406);
+  background-image: linear-gradient(to bottom, #fbb450, #f89406);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+  border-color: #f89406 #f89406 #ad6704;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #f89406;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning:active,
+.btn-warning.active,
+.btn-warning.disabled,
+.btn-warning[disabled] {
+  color: #ffffff;
+  background-color: #f89406;
+  *background-color: #df8505;
+}
+.btn-warning:active,
+.btn-warning.active {
+  background-color: #c67605 \9;
+}
+.btn-danger {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #da4f49;
+  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
+  border-color: #bd362f #bd362f #802420;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #bd362f;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.btn-danger.disabled,
+.btn-danger[disabled] {
+  color: #ffffff;
+  background-color: #bd362f;
+  *background-color: #a9302a;
+}
+.btn-danger:active,
+.btn-danger.active {
+  background-color: #942a25 \9;
+}
+.btn-success {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #5bb75b;
+  background-image: -moz-linear-gradient(top, #62c462, #51a351);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+  background-image: -o-linear-gradient(top, #62c462, #51a351);
+  background-image: linear-gradient(to bottom, #62c462, #51a351);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
+  border-color: #51a351 #51a351 #387038;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #51a351;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-success:hover,
+.btn-success:focus,
+.btn-success:active,
+.btn-success.active,
+.btn-success.disabled,
+.btn-success[disabled] {
+  color: #ffffff;
+  background-color: #51a351;
+  *background-color: #499249;
+}
+.btn-success:active,
+.btn-success.active {
+  background-color: #408140 \9;
+}
+.btn-info {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #49afcd;
+  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
+  border-color: #2f96b4 #2f96b4 #1f6377;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #2f96b4;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-info:hover,
+.btn-info:focus,
+.btn-info:active,
+.btn-info.active,
+.btn-info.disabled,
+.btn-info[disabled] {
+  color: #ffffff;
+  background-color: #2f96b4;
+  *background-color: #2a85a0;
+}
+.btn-info:active,
+.btn-info.active {
+  background-color: #24748c \9;
+}
+.btn-inverse {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #363636;
+  background-image: -moz-linear-gradient(top, #444444, #222222);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
+  background-image: -webkit-linear-gradient(top, #444444, #222222);
+  background-image: -o-linear-gradient(top, #444444, #222222);
+  background-image: linear-gradient(to bottom, #444444, #222222);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
+  border-color: #222222 #222222 #000000;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #222222;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-inverse:hover,
+.btn-inverse:focus,
+.btn-inverse:active,
+.btn-inverse.active,
+.btn-inverse.disabled,
+.btn-inverse[disabled] {
+  color: #ffffff;
+  background-color: #222222;
+  *background-color: #151515;
+}
+.btn-inverse:active,
+.btn-inverse.active {
+  background-color: #080808 \9;
+}
+button.btn,
+input[type="submit"].btn {
+  *padding-top: 3px;
+  *padding-bottom: 3px;
+}
+button.btn::-moz-focus-inner,
+input[type="submit"].btn::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button.btn.btn-large,
+input[type="submit"].btn.btn-large {
+  *padding-top: 7px;
+  *padding-bottom: 7px;
+}
+button.btn.btn-small,
+input[type="submit"].btn.btn-small {
+  *padding-top: 3px;
+  *padding-bottom: 3px;
+}
+button.btn.btn-mini,
+input[type="submit"].btn.btn-mini {
+  *padding-top: 1px;
+  *padding-bottom: 1px;
+}
+.btn-link,
+.btn-link:active,
+.btn-link[disabled] {
+  background-color: transparent;
+  background-image: none;
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.btn-link {
+  border-color: transparent;
+  cursor: pointer;
+  color: #0088cc;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-link:hover,
+.btn-link:focus {
+  color: #005580;
+  text-decoration: underline;
+  background-color: transparent;
+}
+.btn-link[disabled]:hover,
+.btn-link[disabled]:focus {
+  color: #333333;
+  text-decoration: none;
+}
+.btn-group {
+  position: relative;
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  font-size: 0;
+  vertical-align: middle;
+  white-space: nowrap;
+  *margin-left: .3em;
+}
+.btn-group:first-child {
+  *margin-left: 0;
+}
+.btn-group + .btn-group {
+  margin-left: 5px;
+}
+.btn-toolbar {
+  font-size: 0;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.btn-toolbar > .btn + .btn,
+.btn-toolbar > .btn-group + .btn,
+.btn-toolbar > .btn + .btn-group {
+  margin-left: 5px;
+}
+.btn-group > .btn {
+  position: relative;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-group > .btn + .btn {
+  margin-left: -1px;
+}
+.btn-group > .btn,
+.btn-group > .dropdown-menu,
+.btn-group > .popover {
+  font-size: 13px;
+}
+.btn-group > .btn-mini {
+  font-size: 9.75px;
+}
+.btn-group > .btn-small {
+  font-size: 11.049999999999999px;
+}
+.btn-group > .btn-large {
+  font-size: 16.25px;
+}
+.btn-group > .btn:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.btn-group > .btn:last-child,
+.btn-group > .dropdown-toggle {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+}
+.btn-group > .btn.large:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 6px;
+  -moz-border-radius-topleft: 6px;
+  border-top-left-radius: 6px;
+  -webkit-border-bottom-left-radius: 6px;
+  -moz-border-radius-bottomleft: 6px;
+  border-bottom-left-radius: 6px;
+}
+.btn-group > .btn.large:last-child,
+.btn-group > .large.dropdown-toggle {
+  -webkit-border-top-right-radius: 6px;
+  -moz-border-radius-topright: 6px;
+  border-top-right-radius: 6px;
+  -webkit-border-bottom-right-radius: 6px;
+  -moz-border-radius-bottomright: 6px;
+  border-bottom-right-radius: 6px;
+}
+.btn-group > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group > .btn:active,
+.btn-group > .btn.active {
+  z-index: 2;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+  padding-left: 8px;
+  padding-right: 8px;
+  -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  *padding-top: 5px;
+  *padding-bottom: 5px;
+}
+.btn-group > .btn-mini + .dropdown-toggle {
+  padding-left: 5px;
+  padding-right: 5px;
+  *padding-top: 2px;
+  *padding-bottom: 2px;
+}
+.btn-group > .btn-small + .dropdown-toggle {
+  *padding-top: 5px;
+  *padding-bottom: 4px;
+}
+.btn-group > .btn-large + .dropdown-toggle {
+  padding-left: 12px;
+  padding-right: 12px;
+  *padding-top: 7px;
+  *padding-bottom: 7px;
+}
+.btn-group.open .dropdown-toggle {
+  background-image: none;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn-group.open .btn.dropdown-toggle {
+  background-color: #e6e6e6;
+}
+.btn-group.open .btn-primary.dropdown-toggle {
+  background-color: #0044cc;
+}
+.btn-group.open .btn-warning.dropdown-toggle {
+  background-color: #f89406;
+}
+.btn-group.open .btn-danger.dropdown-toggle {
+  background-color: #bd362f;
+}
+.btn-group.open .btn-success.dropdown-toggle {
+  background-color: #51a351;
+}
+.btn-group.open .btn-info.dropdown-toggle {
+  background-color: #2f96b4;
+}
+.btn-group.open .btn-inverse.dropdown-toggle {
+  background-color: #222222;
+}
+.btn .caret {
+  margin-top: 8px;
+  margin-left: 0;
+}
+.btn-large .caret {
+  margin-top: 6px;
+}
+.btn-large .caret {
+  border-left-width: 5px;
+  border-right-width: 5px;
+  border-top-width: 5px;
+}
+.btn-mini .caret,
+.btn-small .caret {
+  margin-top: 8px;
+}
+.dropup .btn-large .caret {
+  border-bottom-width: 5px;
+}
+.btn-primary .caret,
+.btn-warning .caret,
+.btn-danger .caret,
+.btn-info .caret,
+.btn-success .caret,
+.btn-inverse .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.btn-group-vertical {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+}
+.btn-group-vertical > .btn {
+  display: block;
+  float: none;
+  max-width: 100%;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-group-vertical > .btn + .btn {
+  margin-left: 0;
+  margin-top: -1px;
+}
+.btn-group-vertical > .btn:first-child {
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.btn-group-vertical > .btn:last-child {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.btn-group-vertical > .btn-large:first-child {
+  -webkit-border-radius: 6px 6px 0 0;
+  -moz-border-radius: 6px 6px 0 0;
+  border-radius: 6px 6px 0 0;
+}
+.btn-group-vertical > .btn-large:last-child {
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+}
+.alert {
+  padding: 8px 35px 8px 14px;
+  margin-bottom: 20px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  background-color: #fcf8e3;
+  border: 1px solid #fbeed5;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.alert,
+.alert h4 {
+  color: #c09853;
+}
+.alert h4 {
+  margin: 0;
+}
+.alert .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  line-height: 20px;
+}
+.alert-success {
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+  color: #468847;
+}
+.alert-success h4 {
+  color: #468847;
+}
+.alert-danger,
+.alert-error {
+  background-color: #f2dede;
+  border-color: #eed3d7;
+  color: #b94a48;
+}
+.alert-danger h4,
+.alert-error h4 {
+  color: #b94a48;
+}
+.alert-info {
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+  color: #3a87ad;
+}
+.alert-info h4 {
+  color: #3a87ad;
+}
+.alert-block {
+  padding-top: 14px;
+  padding-bottom: 14px;
+}
+.alert-block > p,
+.alert-block > ul {
+  margin-bottom: 0;
+}
+.alert-block p + p {
+  margin-top: 5px;
+}
+.nav {
+  margin-left: 0;
+  margin-bottom: 20px;
+  list-style: none;
+}
+.nav > li > a {
+  display: block;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+  text-decoration: none;
+  background-color: #eeeeee;
+}
+.nav > li > a > img {
+  max-width: none;
+}
+.nav > .pull-right {
+  float: right;
+}
+.nav-header {
+  display: block;
+  padding: 3px 15px;
+  font-size: 11px;
+  font-weight: bold;
+  line-height: 20px;
+  color: #999999;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  text-transform: uppercase;
+}
+.nav li + .nav-header {
+  margin-top: 9px;
+}
+.nav-list {
+  padding-left: 15px;
+  padding-right: 15px;
+  margin-bottom: 0;
+}
+.nav-list > li > a,
+.nav-list .nav-header {
+  margin-left: -15px;
+  margin-right: -15px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+.nav-list > li > a {
+  padding: 3px 15px;
+}
+.nav-list > .active > a,
+.nav-list > .active > a:hover,
+.nav-list > .active > a:focus {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+  background-color: #0088cc;
+}
+.nav-list [class^="icon-"],
+.nav-list [class*=" icon-"] {
+  margin-right: 2px;
+}
+.nav-list .divider {
+  *width: 100%;
+  height: 1px;
+  margin: 9px 1px;
+  *margin: -5px 0 5px;
+  overflow: hidden;
+  background-color: #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+}
+.nav-tabs,
+.nav-pills {
+  *zoom: 1;
+}
+.nav-tabs:before,
+.nav-pills:before,
+.nav-tabs:after,
+.nav-pills:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.nav-tabs:after,
+.nav-pills:after {
+  clear: both;
+}
+.nav-tabs > li,
+.nav-pills > li {
+  float: left;
+}
+.nav-tabs > li > a,
+.nav-pills > li > a {
+  padding-right: 12px;
+  padding-left: 12px;
+  margin-right: 2px;
+  line-height: 14px;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  line-height: 20px;
+  border: 1px solid transparent;
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover,
+.nav-tabs > li > a:focus {
+  border-color: #eeeeee #eeeeee #dddddd;
+}
+.nav-tabs > .active > a,
+.nav-tabs > .active > a:hover,
+.nav-tabs > .active > a:focus {
+  color: #555555;
+  background-color: #ffffff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+  cursor: default;
+}
+.nav-pills > li > a {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  margin-top: 2px;
+  margin-bottom: 2px;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.nav-pills > .active > a,
+.nav-pills > .active > a:hover,
+.nav-pills > .active > a:focus {
+  color: #ffffff;
+  background-color: #0088cc;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li > a {
+  margin-right: 0;
+}
+.nav-tabs.nav-stacked {
+  border-bottom: 0;
+}
+.nav-tabs.nav-stacked > li > a {
+  border: 1px solid #ddd;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.nav-tabs.nav-stacked > li:first-child > a {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+}
+.nav-tabs.nav-stacked > li:last-child > a {
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.nav-tabs.nav-stacked > li > a:hover,
+.nav-tabs.nav-stacked > li > a:focus {
+  border-color: #ddd;
+  z-index: 2;
+}
+.nav-pills.nav-stacked > li > a {
+  margin-bottom: 3px;
+}
+.nav-pills.nav-stacked > li:last-child > a {
+  margin-bottom: 1px;
+}
+.nav-tabs .dropdown-menu {
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+}
+.nav-pills .dropdown-menu {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.nav .dropdown-toggle .caret {
+  border-top-color: #0088cc;
+  border-bottom-color: #0088cc;
+  margin-top: 6px;
+}
+.nav .dropdown-toggle:hover .caret,
+.nav .dropdown-toggle:focus .caret {
+  border-top-color: #005580;
+  border-bottom-color: #005580;
+}
+/* move down carets for tabs */
+.nav-tabs .dropdown-toggle .caret {
+  margin-top: 8px;
+}
+.nav .active .dropdown-toggle .caret {
+  border-top-color: #fff;
+  border-bottom-color: #fff;
+}
+.nav-tabs .active .dropdown-toggle .caret {
+  border-top-color: #555555;
+  border-bottom-color: #555555;
+}
+.nav > .dropdown.active > a:hover,
+.nav > .dropdown.active > a:focus {
+  cursor: pointer;
+}
+.nav-tabs .open .dropdown-toggle,
+.nav-pills .open .dropdown-toggle,
+.nav > li.dropdown.open.active > a:hover,
+.nav > li.dropdown.open.active > a:focus {
+  color: #ffffff;
+  background-color: #999999;
+  border-color: #999999;
+}
+.nav li.dropdown.open .caret,
+.nav li.dropdown.open.active .caret,
+.nav li.dropdown.open a:hover .caret,
+.nav li.dropdown.open a:focus .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.tabs-stacked .open > a:hover,
+.tabs-stacked .open > a:focus {
+  border-color: #999999;
+}
+.tabbable {
+  *zoom: 1;
+}
+.tabbable:before,
+.tabbable:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.tabbable:after {
+  clear: both;
+}
+.tab-content {
+  overflow: auto;
+}
+.tabs-below > .nav-tabs,
+.tabs-right > .nav-tabs,
+.tabs-left > .nav-tabs {
+  border-bottom: 0;
+}
+.tab-content > .tab-pane,
+.pill-content > .pill-pane {
+  display: none;
+}
+.tab-content > .active,
+.pill-content > .active {
+  display: block;
+}
+.tabs-below > .nav-tabs {
+  border-top: 1px solid #ddd;
+}
+.tabs-below > .nav-tabs > li {
+  margin-top: -1px;
+  margin-bottom: 0;
+}
+.tabs-below > .nav-tabs > li > a {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.tabs-below > .nav-tabs > li > a:hover,
+.tabs-below > .nav-tabs > li > a:focus {
+  border-bottom-color: transparent;
+  border-top-color: #ddd;
+}
+.tabs-below > .nav-tabs > .active > a,
+.tabs-below > .nav-tabs > .active > a:hover,
+.tabs-below > .nav-tabs > .active > a:focus {
+  border-color: transparent #ddd #ddd #ddd;
+}
+.tabs-left > .nav-tabs > li,
+.tabs-right > .nav-tabs > li {
+  float: none;
+}
+.tabs-left > .nav-tabs > li > a,
+.tabs-right > .nav-tabs > li > a {
+  min-width: 74px;
+  margin-right: 0;
+  margin-bottom: 3px;
+}
+.tabs-left > .nav-tabs {
+  float: left;
+  margin-right: 19px;
+  border-right: 1px solid #ddd;
+}
+.tabs-left > .nav-tabs > li > a {
+  margin-right: -1px;
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.tabs-left > .nav-tabs > li > a:hover,
+.tabs-left > .nav-tabs > li > a:focus {
+  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
+}
+.tabs-left > .nav-tabs .active > a,
+.tabs-left > .nav-tabs .active > a:hover,
+.tabs-left > .nav-tabs .active > a:focus {
+  border-color: #ddd transparent #ddd #ddd;
+  *border-right-color: #ffffff;
+}
+.tabs-right > .nav-tabs {
+  float: right;
+  margin-left: 19px;
+  border-left: 1px solid #ddd;
+}
+.tabs-right > .nav-tabs > li > a {
+  margin-left: -1px;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.tabs-right > .nav-tabs > li > a:hover,
+.tabs-right > .nav-tabs > li > a:focus {
+  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
+}
+.tabs-right > .nav-tabs .active > a,
+.tabs-right > .nav-tabs .active > a:hover,
+.tabs-right > .nav-tabs .active > a:focus {
+  border-color: #ddd #ddd #ddd transparent;
+  *border-left-color: #ffffff;
+}
+.nav > .disabled > a {
+  color: #999999;
+}
+.nav > .disabled > a:hover,
+.nav > .disabled > a:focus {
+  text-decoration: none;
+  background-color: transparent;
+  cursor: default;
+}
+.navbar {
+  overflow: visible;
+  margin-bottom: 20px;
+  *position: relative;
+  *z-index: 2;
+}
+.navbar-inner {
+  min-height: 40px;
+  padding-left: 20px;
+  padding-right: 20px;
+  background-color: #fafafa;
+  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
+  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
+  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
+  border: 1px solid #d4d4d4;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  *zoom: 1;
+}
+.navbar-inner:before,
+.navbar-inner:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.navbar-inner:after {
+  clear: both;
+}
+.navbar .container {
+  width: auto;
+}
+.nav-collapse.collapse {
+  height: auto;
+  overflow: visible;
+}
+.navbar .brand {
+  float: left;
+  display: block;
+  padding: 10px 20px 10px;
+  margin-left: -20px;
+  font-size: 20px;
+  font-weight: 200;
+  color: #777777;
+  text-shadow: 0 1px 0 #ffffff;
+}
+.navbar .brand:hover,
+.navbar .brand:focus {
+  text-decoration: none;
+}
+.navbar-text {
+  margin-bottom: 0;
+  line-height: 40px;
+  color: #777777;
+}
+.navbar-link {
+  color: #777777;
+}
+.navbar-link:hover,
+.navbar-link:focus {
+  color: #333333;
+}
+.navbar .divider-vertical {
+  height: 40px;
+  margin: 0 9px;
+  border-left: 1px solid #f2f2f2;
+  border-right: 1px solid #ffffff;
+}
+.navbar .btn,
+.navbar .btn-group {
+  margin-top: 5px;
+}
+.navbar .btn-group .btn,
+.navbar .input-prepend .btn,
+.navbar .input-append .btn,
+.navbar .input-prepend .btn-group,
+.navbar .input-append .btn-group {
+  margin-top: 0;
+}
+.navbar-form {
+  margin-bottom: 0;
+  *zoom: 1;
+}
+.navbar-form:before,
+.navbar-form:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.navbar-form:after {
+  clear: both;
+}
+.navbar-form input,
+.navbar-form select,
+.navbar-form .radio,
+.navbar-form .checkbox {
+  margin-top: 5px;
+}
+.navbar-form input,
+.navbar-form select,
+.navbar-form .btn {
+  display: inline-block;
+  margin-bottom: 0;
+}
+.navbar-form input[type="image"],
+.navbar-form input[type="checkbox"],
+.navbar-form input[type="radio"] {
+  margin-top: 3px;
+}
+.navbar-form .input-append,
+.navbar-form .input-prepend {
+  margin-top: 5px;
+  white-space: nowrap;
+}
+.navbar-form .input-append input,
+.navbar-form .input-prepend input {
+  margin-top: 0;
+}
+.navbar-search {
+  position: relative;
+  float: left;
+  margin-top: 5px;
+  margin-bottom: 0;
+}
+.navbar-search .search-query {
+  margin-bottom: 0;
+  padding: 4px 14px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 1;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  border-radius: 15px;
+}
+.navbar-static-top {
+  position: static;
+  margin-bottom: 0;
+}
+.navbar-static-top .navbar-inner {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+  margin-bottom: 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+  border-width: 0 0 1px;
+}
+.navbar-fixed-bottom .navbar-inner {
+  border-width: 1px 0 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-fixed-bottom .navbar-inner {
+  padding-left: 0;
+  padding-right: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+  width: 940px;
+}
+.navbar-fixed-top {
+  top: 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+  -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1);
+  -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1);
+  box-shadow: 0 1px 10px rgba(0,0,0,.1);
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+}
+.navbar-fixed-bottom .navbar-inner {
+  -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
+  -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
+  box-shadow: 0 -1px 10px rgba(0,0,0,.1);
+}
+.navbar .nav {
+  position: relative;
+  left: 0;
+  display: block;
+  float: left;
+  margin: 0 10px 0 0;
+}
+.navbar .nav.pull-right {
+  float: right;
+  margin-right: 0;
+}
+.navbar .nav > li {
+  float: left;
+}
+.navbar .nav > li > a {
+  float: none;
+  padding: 10px 15px 10px;
+  color: #777777;
+  text-decoration: none;
+  text-shadow: 0 1px 0 #ffffff;
+}
+.navbar .nav .dropdown-toggle .caret {
+  margin-top: 8px;
+}
+.navbar .nav > li > a:focus,
+.navbar .nav > li > a:hover {
+  background-color: transparent;
+  color: #333333;
+  text-decoration: none;
+}
+.navbar .nav > .active > a,
+.navbar .nav > .active > a:hover,
+.navbar .nav > .active > a:focus {
+  color: #555555;
+  text-decoration: none;
+  background-color: #e5e5e5;
+  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+  -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+  box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+}
+.navbar .btn-navbar {
+  display: none;
+  float: right;
+  padding: 7px 10px;
+  margin-left: 5px;
+  margin-right: 5px;
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #ededed;
+  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
+  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
+  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #e5e5e5;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+}
+.navbar .btn-navbar:hover,
+.navbar .btn-navbar:focus,
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active,
+.navbar .btn-navbar.disabled,
+.navbar .btn-navbar[disabled] {
+  color: #ffffff;
+  background-color: #e5e5e5;
+  *background-color: #d9d9d9;
+}
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active {
+  background-color: #cccccc \9;
+}
+.navbar .btn-navbar .icon-bar {
+  display: block;
+  width: 18px;
+  height: 2px;
+  background-color: #f5f5f5;
+  -webkit-border-radius: 1px;
+  -moz-border-radius: 1px;
+  border-radius: 1px;
+  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+}
+.btn-navbar .icon-bar + .icon-bar {
+  margin-top: 3px;
+}
+.navbar .nav > li > .dropdown-menu:before {
+  content: '';
+  display: inline-block;
+  border-left: 7px solid transparent;
+  border-right: 7px solid transparent;
+  border-bottom: 7px solid #ccc;
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+  position: absolute;
+  top: -7px;
+  left: 9px;
+}
+.navbar .nav > li > .dropdown-menu:after {
+  content: '';
+  display: inline-block;
+  border-left: 6px solid transparent;
+  border-right: 6px solid transparent;
+  border-bottom: 6px solid #ffffff;
+  position: absolute;
+  top: -6px;
+  left: 10px;
+}
+.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
+  border-top: 7px solid #ccc;
+  border-top-color: rgba(0, 0, 0, 0.2);
+  border-bottom: 0;
+  bottom: -7px;
+  top: auto;
+}
+.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
+  border-top: 6px solid #ffffff;
+  border-bottom: 0;
+  bottom: -6px;
+  top: auto;
+}
+.navbar .nav li.dropdown > a:hover .caret,
+.navbar .nav li.dropdown > a:focus .caret {
+  border-top-color: #333333;
+  border-bottom-color: #333333;
+}
+.navbar .nav li.dropdown.open > .dropdown-toggle,
+.navbar .nav li.dropdown.active > .dropdown-toggle,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle {
+  background-color: #e5e5e5;
+  color: #555555;
+}
+.navbar .nav li.dropdown > .dropdown-toggle .caret {
+  border-top-color: #777777;
+  border-bottom-color: #777777;
+}
+.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
+  border-top-color: #555555;
+  border-bottom-color: #555555;
+}
+.navbar .pull-right > li > .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right {
+  left: auto;
+  right: 0;
+}
+.navbar .pull-right > li > .dropdown-menu:before,
+.navbar .nav > li > .dropdown-menu.pull-right:before {
+  left: auto;
+  right: 12px;
+}
+.navbar .pull-right > li > .dropdown-menu:after,
+.navbar .nav > li > .dropdown-menu.pull-right:after {
+  left: auto;
+  right: 13px;
+}
+.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
+  left: auto;
+  right: 100%;
+  margin-left: 0;
+  margin-right: -1px;
+  -webkit-border-radius: 6px 0 6px 6px;
+  -moz-border-radius: 6px 0 6px 6px;
+  border-radius: 6px 0 6px 6px;
+}
+.navbar-inverse .navbar-inner {
+  background-color: #1b1b1b;
+  background-image: -moz-linear-gradient(top, #222222, #111111);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
+  background-image: -webkit-linear-gradient(top, #222222, #111111);
+  background-image: -o-linear-gradient(top, #222222, #111111);
+  background-image: linear-gradient(to bottom, #222222, #111111);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
+  border-color: #252525;
+}
+.navbar-inverse .brand,
+.navbar-inverse .nav > li > a {
+  color: #999999;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.navbar-inverse .brand:hover,
+.navbar-inverse .nav > li > a:hover,
+.navbar-inverse .brand:focus,
+.navbar-inverse .nav > li > a:focus {
+  color: #ffffff;
+}
+.navbar-inverse .brand {
+  color: #999999;
+}
+.navbar-inverse .navbar-text {
+  color: #999999;
+}
+.navbar-inverse .nav > li > a:focus,
+.navbar-inverse .nav > li > a:hover {
+  background-color: transparent;
+  color: #ffffff;
+}
+.navbar-inverse .nav .active > a,
+.navbar-inverse .nav .active > a:hover,
+.navbar-inverse .nav .active > a:focus {
+  color: #ffffff;
+  background-color: #111111;
+}
+.navbar-inverse .navbar-link {
+  color: #999999;
+}
+.navbar-inverse .navbar-link:hover,
+.navbar-inverse .navbar-link:focus {
+  color: #ffffff;
+}
+.navbar-inverse .divider-vertical {
+  border-left-color: #111111;
+  border-right-color: #222222;
+}
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
+  background-color: #111111;
+  color: #ffffff;
+}
+.navbar-inverse .nav li.dropdown > a:hover .caret,
+.navbar-inverse .nav li.dropdown > a:focus .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
+  border-top-color: #999999;
+  border-bottom-color: #999999;
+}
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.navbar-inverse .navbar-search .search-query {
+  color: #ffffff;
+  background-color: #515151;
+  border-color: #111111;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  -webkit-transition: none;
+  -moz-transition: none;
+  -o-transition: none;
+  transition: none;
+}
+.navbar-inverse .navbar-search .search-query:-moz-placeholder {
+  color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
+  color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
+  color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query:focus,
+.navbar-inverse .navbar-search .search-query.focused {
+  padding: 5px 15px;
+  color: #333333;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #ffffff;
+  border: 0;
+  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  outline: 0;
+}
+.navbar-inverse .btn-navbar {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #0e0e0e;
+  background-image: -moz-linear-gradient(top, #151515, #040404);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
+  background-image: -webkit-linear-gradient(top, #151515, #040404);
+  background-image: -o-linear-gradient(top, #151515, #040404);
+  background-image: linear-gradient(to bottom, #151515, #040404);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
+  border-color: #040404 #040404 #000000;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #040404;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.navbar-inverse .btn-navbar:hover,
+.navbar-inverse .btn-navbar:focus,
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active,
+.navbar-inverse .btn-navbar.disabled,
+.navbar-inverse .btn-navbar[disabled] {
+  color: #ffffff;
+  background-color: #040404;
+  *background-color: #000000;
+}
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active {
+  background-color: #000000 \9;
+}
+/*@import "bootstrap/breadcrumbs.less";*/
+/*@import "bootstrap/pagination.less";*/
+/*@import "bootstrap/pager.less";*/
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+  background-color: #000000;
+}
+.modal-backdrop.fade {
+  opacity: 0;
+}
+.modal-backdrop,
+.modal-backdrop.fade.in {
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.modal {
+  position: fixed;
+  top: 10%;
+  left: 50%;
+  z-index: 1050;
+  width: 560px;
+  margin-left: -280px;
+  background-color: #ffffff;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, 0.3);
+  *border: 1px solid #999;
+  /* IE6-7 */
+
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding-box;
+  background-clip: padding-box;
+  outline: none;
+}
+.modal.fade {
+  -webkit-transition: opacity .3s linear, top .3s ease-out;
+  -moz-transition: opacity .3s linear, top .3s ease-out;
+  -o-transition: opacity .3s linear, top .3s ease-out;
+  transition: opacity .3s linear, top .3s ease-out;
+  top: -25%;
+}
+.modal.fade.in {
+  top: 10%;
+}
+.modal-header {
+  padding: 9px 15px;
+  border-bottom: 1px solid #eee;
+}
+.modal-header .close {
+  margin-top: 2px;
+}
+.modal-header h3 {
+  margin: 0;
+  line-height: 30px;
+}
+.modal-body {
+  position: relative;
+  overflow-y: auto;
+  max-height: 400px;
+  padding: 15px;
+}
+.modal-form {
+  margin-bottom: 0;
+}
+.modal-footer {
+  padding: 14px 15px 15px;
+  margin-bottom: 0;
+  text-align: right;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+  -webkit-box-shadow: inset 0 1px 0 #ffffff;
+  -moz-box-shadow: inset 0 1px 0 #ffffff;
+  box-shadow: inset 0 1px 0 #ffffff;
+  *zoom: 1;
+}
+.modal-footer:before,
+.modal-footer:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.modal-footer:after {
+  clear: both;
+}
+.modal-footer .btn + .btn {
+  margin-left: 5px;
+  margin-bottom: 0;
+}
+.modal-footer .btn-group .btn + .btn {
+  margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+  margin-left: 0;
+}
+.tooltip {
+  position: absolute;
+  z-index: 1030;
+  display: block;
+  visibility: visible;
+  font-size: 11px;
+  line-height: 1.4;
+  opacity: 0;
+  filter: alpha(opacity=0);
+}
+.tooltip.in {
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.tooltip.top {
+  margin-top: -3px;
+  padding: 5px 0;
+}
+.tooltip.right {
+  margin-left: 3px;
+  padding: 0 5px;
+}
+.tooltip.bottom {
+  margin-top: 3px;
+  padding: 5px 0;
+}
+.tooltip.left {
+  margin-left: -3px;
+  padding: 0 5px;
+}
+.tooltip-inner {
+  max-width: 200px;
+  padding: 8px;
+  color: #ffffff;
+  text-align: center;
+  text-decoration: none;
+  background-color: #000000;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000000;
+}
+.tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-width: 5px 5px 5px 0;
+  border-right-color: #000000;
+}
+.tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #000000;
+}
+.tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000000;
+}
+/*@import "bootstrap/popovers.less";*/
+/*@import "bootstrap/thumbnails.less";*/
+/*@import "bootstrap/media.less";*/
+/*@import "bootstrap/labels-badges.less";*/
+/*@import "bootstrap/progress-bars.less";*/
+/*@import "bootstrap/accordion.less";*/
+/*@import "bootstrap/carousel.less";*/
+/*@import "bootstrap/hero-unit.less";*/
+.pull-right {
+  float: right;
+}
+.pull-left {
+  float: left;
+}
+.hide {
+  display: none;
+}
+.show {
+  display: block;
+}
+.invisible {
+  visibility: hidden;
+}
+.affix {
+  position: fixed;
+}
+/* http://meyerweb.com/eric/tools/css/reset/ 
+   v2.0 | 20110126
+   License: none (public domain)
+*/
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font: inherit;
+  vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+menu,
+nav,
+section {
+  display: block;
+}
+body {
+  line-height: 1;
+}
+ol,
+ul {
+  list-style: none;
+}
+blockquote,
+q {
+  quotes: none;
+}
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+  content: '';
+  content: none;
+}
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+label {
+  line-height: 1.8em;
+}
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  /*  font: inherit;*/
+
+  vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+menu,
+nav,
+section {
+  display: block;
+}
+body {
+  line-height: 1;
+}
+ol,
+ul {
+  list-style: none;
+}
+blockquote,
+q {
+  quotes: none;
+}
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+  content: '';
+  content: none;
+}
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+body {
+  font-family: "Helvetica Neue", helvetica, arial, sans-serif;
+  background: #ececec;
+  min-width: 747px;
+}
+a {
+  text-decoration: none;
+  color: #11506d;
+}
+a:hover {
+  color: #0f5e83;
+}
+.loading-assets {
+  background: url('../img/loading.gif') no-repeat 0 0;
+  overflow: hidden;
+  text-indent: -1000px;
+  margin: 200px auto 0;
+  height: 95px;
+  width: 483px;
+}
+#main {
+  background-color: #fafafa;
+  border: thin solid #ccc;
+  overflow: auto;
+  width: auto;
+}
+[class^="icon-"],
+[class*=" icon-"] {
+  display: inline-block;
+  width: 14px;
+  height: 14px;
+  line-height: 14px;
+  vertical-align: text-top;
+  background-image: url("../img/glyphicons-halflings.png");
+  background-position: 14px 14px;
+  background-repeat: no-repeat;
+  margin-top: 1px;
+}
+/* White icons with optional class, or on hover/active states of certain elements */
+.icon-white,
+.nav-tabs > .active > a > [class^="icon-"],
+.nav-tabs > .active > a > [class*=" icon-"],
+.nav-pills > .active > a > [class^="icon-"],
+.nav-pills > .active > a > [class*=" icon-"],
+.nav-list > .active > a > [class^="icon-"],
+.nav-list > .active > a > [class*=" icon-"],
+.navbar-inverse .nav > .active > a > [class^="icon-"],
+.navbar-inverse .nav > .active > a > [class*=" icon-"],
+.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > .active > a > [class^="icon-"],
+.dropdown-menu > .active > a > [class*=" icon-"] {
+  background-image: url("../img/glyphicons-halflings-white.png");
+}
+.icon-glass {
+  background-position: 0      0;
+}
+.icon-music {
+  background-position: -24px 0;
+}
+.icon-search {
+  background-position: -48px 0;
+}
+.icon-envelope {
+  background-position: -72px 0;
+}
+.icon-heart {
+  background-position: -96px 0;
+}
+.icon-star {
+  background-position: -120px 0;
+}
+.icon-star-empty {
+  background-position: -144px 0;
+}
+.icon-user {
+  background-position: -168px 0;
+}
+.icon-film {
+  background-position: -192px 0;
+}
+.icon-th-large {
+  background-position: -216px 0;
+}
+.icon-th {
+  background-position: -240px 0;
+}
+.icon-th-list {
+  background-position: -264px 0;
+}
+.icon-ok {
+  background-position: -288px 0;
+}
+.icon-remove {
+  background-position: -312px 0;
+}
+.icon-zoom-in {
+  background-position: -336px 0;
+}
+.icon-zoom-out {
+  background-position: -360px 0;
+}
+.icon-off {
+  background-position: -384px 0;
+}
+.icon-signal {
+  background-position: -408px 0;
+}
+.icon-cog {
+  background-position: -432px 0;
+}
+.icon-trash {
+  background-position: -456px 0;
+}
+.icon-home {
+  background-position: 0 -24px;
+}
+.icon-file {
+  background-position: -24px -24px;
+}
+.icon-time {
+  background-position: -48px -24px;
+}
+.icon-road {
+  background-position: -72px -24px;
+}
+.icon-download-alt {
+  background-position: -96px -24px;
+}
+.icon-download {
+  background-position: -120px -24px;
+}
+.icon-upload {
+  background-position: -144px -24px;
+}
+.icon-inbox {
+  background-position: -168px -24px;
+}
+.icon-play-circle {
+  background-position: -192px -24px;
+}
+.icon-repeat {
+  background-position: -216px -24px;
+}
+.icon-refresh {
+  background-position: -240px -24px;
+}
+.icon-list-alt {
+  background-position: -264px -24px;
+}
+.icon-lock {
+  background-position: -287px -24px;
+}
+.icon-flag {
+  background-position: -312px -24px;
+}
+.icon-headphones {
+  background-position: -336px -24px;
+}
+.icon-volume-off {
+  background-position: -360px -24px;
+}
+.icon-volume-down {
+  background-position: -384px -24px;
+}
+.icon-volume-up {
+  background-position: -408px -24px;
+}
+

<TRUNCATED>


[77/98] [abbrv] incubator-apex-malhar git commit: NOTICE original developer

Posted by da...@apache.org.
NOTICE original developer


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/66282d6d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/66282d6d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/66282d6d

Branch: refs/heads/master
Commit: 66282d6d81cb18cbd94c865d2fa1768f5ecfd253
Parents: 146e4a0
Author: Thomas Weise <th...@datatorrent.com>
Authored: Wed Nov 4 22:37:27 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Thu Nov 5 20:30:28 2015 -0800

----------------------------------------------------------------------
 NOTICE                                                   | 3 ++-
 benchmark/src/main/appended-resources/META-INF/NOTICE.vm | 3 +++
 contrib/src/main/appended-resources/META-INF/NOTICE.vm   | 3 +++
 library/src/main/appended-resources/META-INF/NOTICE.vm   | 3 +++
 4 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/66282d6d/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index eef5e86..d0f6855 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,9 +1,10 @@
-Apache Apex
+Apache Apex (incubating)
 Copyright (c) 2015 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
 
+
 The initial developer of the original code is
 DataTorrent, Inc. (http://www.datatorrent.com)
 Copyright (c) 2012 - 2015. All Rights Reserved.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/66282d6d/benchmark/src/main/appended-resources/META-INF/NOTICE.vm
----------------------------------------------------------------------
diff --git a/benchmark/src/main/appended-resources/META-INF/NOTICE.vm b/benchmark/src/main/appended-resources/META-INF/NOTICE.vm
new file mode 100644
index 0000000..7edf492
--- /dev/null
+++ b/benchmark/src/main/appended-resources/META-INF/NOTICE.vm
@@ -0,0 +1,3 @@
+#if($project.properties.postNoticeText)
+$project.properties.postNoticeText
+#end
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/66282d6d/contrib/src/main/appended-resources/META-INF/NOTICE.vm
----------------------------------------------------------------------
diff --git a/contrib/src/main/appended-resources/META-INF/NOTICE.vm b/contrib/src/main/appended-resources/META-INF/NOTICE.vm
new file mode 100644
index 0000000..7edf492
--- /dev/null
+++ b/contrib/src/main/appended-resources/META-INF/NOTICE.vm
@@ -0,0 +1,3 @@
+#if($project.properties.postNoticeText)
+$project.properties.postNoticeText
+#end
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/66282d6d/library/src/main/appended-resources/META-INF/NOTICE.vm
----------------------------------------------------------------------
diff --git a/library/src/main/appended-resources/META-INF/NOTICE.vm b/library/src/main/appended-resources/META-INF/NOTICE.vm
new file mode 100644
index 0000000..7edf492
--- /dev/null
+++ b/library/src/main/appended-resources/META-INF/NOTICE.vm
@@ -0,0 +1,3 @@
+#if($project.properties.postNoticeText)
+$project.properties.postNoticeText
+#end
\ No newline at end of file


[03/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Makefile b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Makefile
deleted file mode 100644
index af75dca..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Makefile
+++ /dev/null
@@ -1,350 +0,0 @@
-# We borrow heavily from the kernel build setup, though we are simpler since
-# we don't have Kconfig tweaking settings on us.
-
-# The implicit make rules have it looking for RCS files, among other things.
-# We instead explicitly write all the rules we care about.
-# It's even quicker (saves ~200ms) to pass -r on the command line.
-MAKEFLAGS=-r
-
-# The source directory tree.
-srcdir := ..
-abs_srcdir := $(abspath $(srcdir))
-
-# The name of the builddir.
-builddir_name ?= .
-
-# The V=1 flag on command line makes us verbosely print command lines.
-ifdef V
-  quiet=
-else
-  quiet=quiet_
-endif
-
-# Specify BUILDTYPE=Release on the command line for a release build.
-BUILDTYPE ?= Release
-
-# Directory all our build output goes into.
-# Note that this must be two directories beneath src/ for unit tests to pass,
-# as they reach into the src/ directory for data with relative paths.
-builddir ?= $(builddir_name)/$(BUILDTYPE)
-abs_builddir := $(abspath $(builddir))
-depsdir := $(builddir)/.deps
-
-# Object output directory.
-obj := $(builddir)/obj
-abs_obj := $(abspath $(obj))
-
-# We build up a list of every single one of the targets so we can slurp in the
-# generated dependency rule Makefiles in one pass.
-all_deps :=
-
-
-
-CC.target ?= $(CC)
-CFLAGS.target ?= $(CFLAGS)
-CXX.target ?= $(CXX)
-CXXFLAGS.target ?= $(CXXFLAGS)
-LINK.target ?= $(LINK)
-LDFLAGS.target ?= $(LDFLAGS)
-AR.target ?= $(AR)
-
-# C++ apps need to be linked with g++.
-#
-# Note: flock is used to seralize linking. Linking is a memory-intensive
-# process so running parallel links can often lead to thrashing.  To disable
-# the serialization, override LINK via an envrionment variable as follows:
-#
-#   export LINK=g++
-#
-# This will allow make to invoke N linker processes as specified in -jN.
-LINK ?= ./gyp-mac-tool flock $(builddir)/linker.lock $(CXX.target)
-
-# TODO(evan): move all cross-compilation logic to gyp-time so we don't need
-# to replicate this environment fallback in make as well.
-CC.host ?= gcc
-CFLAGS.host ?=
-CXX.host ?= g++
-CXXFLAGS.host ?=
-LINK.host ?= $(CXX.host)
-LDFLAGS.host ?=
-AR.host ?= ar
-
-# Define a dir function that can handle spaces.
-# http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions
-# "leading spaces cannot appear in the text of the first argument as written.
-# These characters can be put into the argument value by variable substitution."
-empty :=
-space := $(empty) $(empty)
-
-# http://stackoverflow.com/questions/1189781/using-make-dir-or-notdir-on-a-path-with-spaces
-replace_spaces = $(subst $(space),?,$1)
-unreplace_spaces = $(subst ?,$(space),$1)
-dirx = $(call unreplace_spaces,$(dir $(call replace_spaces,$1)))
-
-# Flags to make gcc output dependency info.  Note that you need to be
-# careful here to use the flags that ccache and distcc can understand.
-# We write to a dep file on the side first and then rename at the end
-# so we can't end up with a broken dep file.
-depfile = $(depsdir)/$(call replace_spaces,$@).d
-DEPFLAGS = -MMD -MF $(depfile).raw
-
-# We have to fixup the deps output in a few ways.
-# (1) the file output should mention the proper .o file.
-# ccache or distcc lose the path to the target, so we convert a rule of
-# the form:
-#   foobar.o: DEP1 DEP2
-# into
-#   path/to/foobar.o: DEP1 DEP2
-# (2) we want missing files not to cause us to fail to build.
-# We want to rewrite
-#   foobar.o: DEP1 DEP2 \
-#               DEP3
-# to
-#   DEP1:
-#   DEP2:
-#   DEP3:
-# so if the files are missing, they're just considered phony rules.
-# We have to do some pretty insane escaping to get those backslashes
-# and dollar signs past make, the shell, and sed at the same time.
-# Doesn't work with spaces, but that's fine: .d files have spaces in
-# their names replaced with other characters.
-define fixup_dep
-# The depfile may not exist if the input file didn't have any #includes.
-touch $(depfile).raw
-# Fixup path as in (1).
-sed -e "s|^$(notdir $@)|$@|" $(depfile).raw >> $(depfile)
-# Add extra rules as in (2).
-# We remove slashes and replace spaces with new lines;
-# remove blank lines;
-# delete the first line and append a colon to the remaining lines.
-sed -e 's|\\||' -e 'y| |\n|' $(depfile).raw |\
-  grep -v '^$$'                             |\
-  sed -e 1d -e 's|$$|:|'                     \
-    >> $(depfile)
-rm $(depfile).raw
-endef
-
-# Command definitions:
-# - cmd_foo is the actual command to run;
-# - quiet_cmd_foo is the brief-output summary of the command.
-
-quiet_cmd_cc = CC($(TOOLSET)) $@
-cmd_cc = $(CC.$(TOOLSET)) $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c -o $@ $<
-
-quiet_cmd_cxx = CXX($(TOOLSET)) $@
-cmd_cxx = $(CXX.$(TOOLSET)) $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $<
-
-quiet_cmd_objc = CXX($(TOOLSET)) $@
-cmd_objc = $(CC.$(TOOLSET)) $(GYP_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $<
-
-quiet_cmd_objcxx = CXX($(TOOLSET)) $@
-cmd_objcxx = $(CXX.$(TOOLSET)) $(GYP_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $<
-
-# Commands for precompiled header files.
-quiet_cmd_pch_c = CXX($(TOOLSET)) $@
-cmd_pch_c = $(CC.$(TOOLSET)) $(GYP_PCH_CFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $<
-quiet_cmd_pch_cc = CXX($(TOOLSET)) $@
-cmd_pch_cc = $(CC.$(TOOLSET)) $(GYP_PCH_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $<
-quiet_cmd_pch_m = CXX($(TOOLSET)) $@
-cmd_pch_m = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $<
-quiet_cmd_pch_mm = CXX($(TOOLSET)) $@
-cmd_pch_mm = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $<
-
-# gyp-mac-tool is written next to the root Makefile by gyp.
-# Use $(4) for the command, since $(2) and $(3) are used as flag by do_cmd
-# already.
-quiet_cmd_mac_tool = MACTOOL $(4) $<
-cmd_mac_tool = ./gyp-mac-tool $(4) $< "$@"
-
-quiet_cmd_mac_package_framework = PACKAGE FRAMEWORK $@
-cmd_mac_package_framework = ./gyp-mac-tool package-framework "$@" $(4)
-
-quiet_cmd_infoplist = INFOPLIST $@
-cmd_infoplist = $(CC.$(TOOLSET)) -E -P -Wno-trigraphs -x c $(INFOPLIST_DEFINES) "$<" -o "$@"
-
-quiet_cmd_touch = TOUCH $@
-cmd_touch = touch $@
-
-quiet_cmd_copy = COPY $@
-# send stderr to /dev/null to ignore messages when linking directories.
-cmd_copy = rm -rf "$@" && cp -af "$<" "$@"
-
-quiet_cmd_alink = LIBTOOL-STATIC $@
-cmd_alink = rm -f $@ && ./gyp-mac-tool filter-libtool libtool $(GYP_LIBTOOLFLAGS) -static -o $@ $(filter %.o,$^)
-
-quiet_cmd_link = LINK($(TOOLSET)) $@
-cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS)
-
-quiet_cmd_solink = SOLINK($(TOOLSET)) $@
-cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS)
-
-quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@
-cmd_solink_module = $(LINK.$(TOOLSET)) -bundle $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS)
-
-
-# Define an escape_quotes function to escape single quotes.
-# This allows us to handle quotes properly as long as we always use
-# use single quotes and escape_quotes.
-escape_quotes = $(subst ','\'',$(1))
-# This comment is here just to include a ' to unconfuse syntax highlighting.
-# Define an escape_vars function to escape '$' variable syntax.
-# This allows us to read/write command lines with shell variables (e.g.
-# $LD_LIBRARY_PATH), without triggering make substitution.
-escape_vars = $(subst $$,$$$$,$(1))
-# Helper that expands to a shell command to echo a string exactly as it is in
-# make. This uses printf instead of echo because printf's behaviour with respect
-# to escape sequences is more portable than echo's across different shells
-# (e.g., dash, bash).
-exact_echo = printf '%s\n' '$(call escape_quotes,$(1))'
-
-# Helper to compare the command we're about to run against the command
-# we logged the last time we ran the command.  Produces an empty
-# string (false) when the commands match.
-# Tricky point: Make has no string-equality test function.
-# The kernel uses the following, but it seems like it would have false
-# positives, where one string reordered its arguments.
-#   arg_check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \
-#                       $(filter-out $(cmd_$@), $(cmd_$(1))))
-# We instead substitute each for the empty string into the other, and
-# say they're equal if both substitutions produce the empty string.
-# .d files contain ? instead of spaces, take that into account.
-command_changed = $(or $(subst $(cmd_$(1)),,$(cmd_$(call replace_spaces,$@))),\
-                       $(subst $(cmd_$(call replace_spaces,$@)),,$(cmd_$(1))))
-
-# Helper that is non-empty when a prerequisite changes.
-# Normally make does this implicitly, but we force rules to always run
-# so we can check their command lines.
-#   $? -- new prerequisites
-#   $| -- order-only dependencies
-prereq_changed = $(filter-out FORCE_DO_CMD,$(filter-out $|,$?))
-
-# Helper that executes all postbuilds until one fails.
-define do_postbuilds
-  @E=0;\
-  for p in $(POSTBUILDS); do\
-    eval $$p;\
-    E=$$?;\
-    if [ $$E -ne 0 ]; then\
-      break;\
-    fi;\
-  done;\
-  if [ $$E -ne 0 ]; then\
-    rm -rf "$@";\
-    exit $$E;\
-  fi
-endef
-
-# do_cmd: run a command via the above cmd_foo names, if necessary.
-# Should always run for a given target to handle command-line changes.
-# Second argument, if non-zero, makes it do asm/C/C++ dependency munging.
-# Third argument, if non-zero, makes it do POSTBUILDS processing.
-# Note: We intentionally do NOT call dirx for depfile, since it contains ? for
-# spaces already and dirx strips the ? characters.
-define do_cmd
-$(if $(or $(command_changed),$(prereq_changed)),
-  @$(call exact_echo,  $($(quiet)cmd_$(1)))
-  @mkdir -p "$(call dirx,$@)" "$(dir $(depfile))"
-  $(if $(findstring flock,$(word 2,$(cmd_$1))),
-    @$(cmd_$(1))
-    @echo "  $(quiet_cmd_$(1)): Finished",
-    @$(cmd_$(1))
-  )
-  @$(call exact_echo,$(call escape_vars,cmd_$(call replace_spaces,$@) := $(cmd_$(1)))) > $(depfile)
-  @$(if $(2),$(fixup_dep))
-  $(if $(and $(3), $(POSTBUILDS)),
-    $(call do_postbuilds)
-  )
-)
-endef
-
-# Declare the "all" target first so it is the default,
-# even though we don't have the deps yet.
-.PHONY: all
-all:
-
-# make looks for ways to re-generate included makefiles, but in our case, we
-# don't have a direct way. Explicitly telling make that it has nothing to do
-# for them makes it go faster.
-%.d: ;
-
-# Use FORCE_DO_CMD to force a target to run.  Should be coupled with
-# do_cmd.
-.PHONY: FORCE_DO_CMD
-FORCE_DO_CMD:
-
-TOOLSET := target
-# Suffix rules, putting all outputs into $(obj).
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.c FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cpp FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cxx FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.m FORCE_DO_CMD
-	@$(call do_cmd,objc,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.mm FORCE_DO_CMD
-	@$(call do_cmd,objcxx,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.S FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.s FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-
-# Try building from generated source, too.
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cpp FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cxx FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.m FORCE_DO_CMD
-	@$(call do_cmd,objc,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.mm FORCE_DO_CMD
-	@$(call do_cmd,objcxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.S FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.s FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-
-$(obj).$(TOOLSET)/%.o: $(obj)/%.c FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.cc FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.cpp FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.cxx FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.m FORCE_DO_CMD
-	@$(call do_cmd,objc,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.mm FORCE_DO_CMD
-	@$(call do_cmd,objcxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.S FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.s FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-
-
-ifeq ($(strip $(foreach prefix,$(NO_LOAD),\
-    $(findstring $(join ^,$(prefix)),\
-                 $(join ^,kerberos.target.mk)))),)
-  include kerberos.target.mk
-endif
-
-quiet_cmd_regen_makefile = ACTION Regenerating $@
-cmd_regen_makefile = cd $(srcdir); /usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "--toplevel-dir=." -I/Users/nick/github/malharwebapps/webapps/package/node_modules/mongodb/node_modules/kerberos/build/config.gypi -I/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/Users/nick/.node-gyp/0.10.24/common.gypi "--depth=." "-Goutput_dir=." "--generator-output=build" "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/nick/.node-gyp/0.10.24" "-Dmodule_root_dir=/Users/nick/github/malharwebapps/webapps/package/node_modules/mongodb/node_modules/kerberos" binding.gyp
-Makefile: $(srcdir)/../../../../../../../../.node-gyp/0.10.24/common.gypi $(srcdir)/build/config.gypi $(srcdir)/binding.gyp $(srcdir)/../../../../../../../../../../usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi
-	$(call do_cmd,regen_makefile)
-
-# "all" is a concatenation of the "all" targets from all the included
-# sub-makefiles. This is just here to clarify.
-all:
-
-# Add in dependency-tracking rules.  $(all_deps) is the list of every single
-# target in our tree. Only consider the ones with .d (dependency) info:
-d_files := $(wildcard $(foreach f,$(all_deps),$(depsdir)/$(f).d))
-ifneq ($(d_files),)
-  include $(d_files)
-endif

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/kerberos.node.d
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/kerberos.node.d b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/kerberos.node.d
deleted file mode 100644
index 05a7e3c..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/kerberos.node.d
+++ /dev/null
@@ -1 +0,0 @@
-cmd_Release/kerberos.node := ./gyp-mac-tool flock ./Release/linker.lock c++ -bundle -Wl,-search_paths_first -mmacosx-version-min=10.5 -arch x86_64 -L./Release  -o Release/kerberos.node Release/obj.target/kerberos/lib/kerberos.o Release/obj.target/kerberos/lib/worker.o Release/obj.target/kerberos/lib/kerberosgss.o Release/obj.target/kerberos/lib/base64.o Release/obj.target/kerberos/lib/kerberos_context.o -undefined dynamic_lookup -lkrb5

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/base64.o.d
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/base64.o.d b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/base64.o.d
deleted file mode 100644
index 2cc67b3..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/base64.o.d
+++ /dev/null
@@ -1,4 +0,0 @@
-cmd_Release/obj.target/kerberos/lib/base64.o := cc '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-D__MACOSX_CORE__' '-DBUILDING_NODE_EXTENSION' -I/Users/nick/.node-gyp/0.10.24/src -I/Users/nick/.node-gyp/0.10.24/deps/uv/include -I/Users/nick/.node-gyp/0.10.24/deps/v8/include  -Os -gdwarf-2 -mmacosx-version-min=10.5 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/kerberos/lib/base64.o.d.raw  -c -o Release/obj.target/kerberos/lib/base64.o ../lib/base64.c
-Release/obj.target/kerberos/lib/base64.o: ../lib/base64.c ../lib/base64.h
-../lib/base64.c:
-../lib/base64.h:

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/kerberos.o.d
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/kerberos.o.d b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/kerberos.o.d
deleted file mode 100644
index fa66155..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/kerberos.o.d
+++ /dev/null
@@ -1,24 +0,0 @@
-cmd_Release/obj.target/kerberos/lib/kerberos.o := c++ '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-D__MACOSX_CORE__' '-DBUILDING_NODE_EXTENSION' -I/Users/nick/.node-gyp/0.10.24/src -I/Users/nick/.node-gyp/0.10.24/deps/uv/include -I/Users/nick/.node-gyp/0.10.24/deps/v8/include  -Os -gdwarf-2 -mmacosx-version-min=10.5 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-rtti -fno-threadsafe-statics -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/kerberos/lib/kerberos.o.d.raw  -c -o Release/obj.target/kerberos/lib/kerberos.o ../lib/kerberos.cc
-Release/obj.target/kerberos/lib/kerberos.o: ../lib/kerberos.cc \
-  ../lib/kerberos.h /Users/nick/.node-gyp/0.10.24/src/node.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-unix.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/ngx-queue.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-darwin.h \
-  /Users/nick/.node-gyp/0.10.24/deps/v8/include/v8.h \
-  /Users/nick/.node-gyp/0.10.24/deps/v8/include/v8stdint.h \
-  /Users/nick/.node-gyp/0.10.24/src/node_object_wrap.h \
-  ../lib/kerberosgss.h ../lib/worker.h ../lib/kerberos_context.h
-../lib/kerberos.cc:
-../lib/kerberos.h:
-/Users/nick/.node-gyp/0.10.24/src/node.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-unix.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/ngx-queue.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-darwin.h:
-/Users/nick/.node-gyp/0.10.24/deps/v8/include/v8.h:
-/Users/nick/.node-gyp/0.10.24/deps/v8/include/v8stdint.h:
-/Users/nick/.node-gyp/0.10.24/src/node_object_wrap.h:
-../lib/kerberosgss.h:
-../lib/worker.h:
-../lib/kerberos_context.h:

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/kerberos_context.o.d
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/kerberos_context.o.d b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/kerberos_context.o.d
deleted file mode 100644
index f8ae94a..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/kerberos_context.o.d
+++ /dev/null
@@ -1,23 +0,0 @@
-cmd_Release/obj.target/kerberos/lib/kerberos_context.o := c++ '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-D__MACOSX_CORE__' '-DBUILDING_NODE_EXTENSION' -I/Users/nick/.node-gyp/0.10.24/src -I/Users/nick/.node-gyp/0.10.24/deps/uv/include -I/Users/nick/.node-gyp/0.10.24/deps/v8/include  -Os -gdwarf-2 -mmacosx-version-min=10.5 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-rtti -fno-threadsafe-statics -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/kerberos/lib/kerberos_context.o.d.raw  -c -o Release/obj.target/kerberos/lib/kerberos_context.o ../lib/kerberos_context.cc
-Release/obj.target/kerberos/lib/kerberos_context.o: \
-  ../lib/kerberos_context.cc ../lib/kerberos_context.h \
-  /Users/nick/.node-gyp/0.10.24/src/node.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-unix.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/ngx-queue.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-darwin.h \
-  /Users/nick/.node-gyp/0.10.24/deps/v8/include/v8.h \
-  /Users/nick/.node-gyp/0.10.24/deps/v8/include/v8stdint.h \
-  /Users/nick/.node-gyp/0.10.24/src/node_object_wrap.h \
-  ../lib/kerberosgss.h
-../lib/kerberos_context.cc:
-../lib/kerberos_context.h:
-/Users/nick/.node-gyp/0.10.24/src/node.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-unix.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/ngx-queue.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-darwin.h:
-/Users/nick/.node-gyp/0.10.24/deps/v8/include/v8.h:
-/Users/nick/.node-gyp/0.10.24/deps/v8/include/v8stdint.h:
-/Users/nick/.node-gyp/0.10.24/src/node_object_wrap.h:
-../lib/kerberosgss.h:

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/kerberosgss.o.d
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/kerberosgss.o.d b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/kerberosgss.o.d
deleted file mode 100644
index 5fd91d6..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/kerberosgss.o.d
+++ /dev/null
@@ -1,6 +0,0 @@
-cmd_Release/obj.target/kerberos/lib/kerberosgss.o := cc '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-D__MACOSX_CORE__' '-DBUILDING_NODE_EXTENSION' -I/Users/nick/.node-gyp/0.10.24/src -I/Users/nick/.node-gyp/0.10.24/deps/uv/include -I/Users/nick/.node-gyp/0.10.24/deps/v8/include  -Os -gdwarf-2 -mmacosx-version-min=10.5 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/kerberos/lib/kerberosgss.o.d.raw  -c -o Release/obj.target/kerberos/lib/kerberosgss.o ../lib/kerberosgss.c
-Release/obj.target/kerberos/lib/kerberosgss.o: ../lib/kerberosgss.c \
-  ../lib/kerberosgss.h ../lib/base64.h
-../lib/kerberosgss.c:
-../lib/kerberosgss.h:
-../lib/base64.h:

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/worker.o.d
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/worker.o.d b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/worker.o.d
deleted file mode 100644
index c4d96fb..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/.deps/Release/obj.target/kerberos/lib/worker.o.d
+++ /dev/null
@@ -1,20 +0,0 @@
-cmd_Release/obj.target/kerberos/lib/worker.o := c++ '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-D__MACOSX_CORE__' '-DBUILDING_NODE_EXTENSION' -I/Users/nick/.node-gyp/0.10.24/src -I/Users/nick/.node-gyp/0.10.24/deps/uv/include -I/Users/nick/.node-gyp/0.10.24/deps/v8/include  -Os -gdwarf-2 -mmacosx-version-min=10.5 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-rtti -fno-threadsafe-statics -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/kerberos/lib/worker.o.d.raw  -c -o Release/obj.target/kerberos/lib/worker.o ../lib/worker.cc
-Release/obj.target/kerberos/lib/worker.o: ../lib/worker.cc \
-  ../lib/worker.h /Users/nick/.node-gyp/0.10.24/src/node.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-unix.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/ngx-queue.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-darwin.h \
-  /Users/nick/.node-gyp/0.10.24/deps/v8/include/v8.h \
-  /Users/nick/.node-gyp/0.10.24/deps/v8/include/v8stdint.h \
-  /Users/nick/.node-gyp/0.10.24/src/node_object_wrap.h
-../lib/worker.cc:
-../lib/worker.h:
-/Users/nick/.node-gyp/0.10.24/src/node.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-unix.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/ngx-queue.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-darwin.h:
-/Users/nick/.node-gyp/0.10.24/deps/v8/include/v8.h:
-/Users/nick/.node-gyp/0.10.24/deps/v8/include/v8stdint.h:
-/Users/nick/.node-gyp/0.10.24/src/node_object_wrap.h:

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/kerberos.node
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/kerberos.node b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/kerberos.node
deleted file mode 100755
index 8f97ba7..0000000
Binary files a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/kerberos.node and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/linker.lock
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/linker.lock b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/linker.lock
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/base64.o
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/base64.o b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/base64.o
deleted file mode 100644
index f585f62..0000000
Binary files a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/base64.o and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/kerberos.o
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/kerberos.o b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/kerberos.o
deleted file mode 100644
index 7b5ac0d..0000000
Binary files a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/kerberos.o and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/kerberos_context.o
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/kerberos_context.o b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/kerberos_context.o
deleted file mode 100644
index 72f1345..0000000
Binary files a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/kerberos_context.o and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/kerberosgss.o
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/kerberosgss.o b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/kerberosgss.o
deleted file mode 100644
index 5e6fa9c..0000000
Binary files a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/kerberosgss.o and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/worker.o
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/worker.o b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/worker.o
deleted file mode 100644
index 66e3c2e..0000000
Binary files a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/Release/obj.target/kerberos/lib/worker.o and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/binding.Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/binding.Makefile b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/binding.Makefile
deleted file mode 100644
index d0d9c64..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/binding.Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file is generated by gyp; do not edit.
-
-export builddir_name ?= build/./.
-.PHONY: all
-all:
-	$(MAKE) kerberos

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/config.gypi
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/config.gypi b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/config.gypi
deleted file mode 100644
index 02cd216..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/config.gypi
+++ /dev/null
@@ -1,113 +0,0 @@
-# Do not edit. File was generated by node-gyp's "configure" step
-{
-  "target_defaults": {
-    "cflags": [],
-    "default_configuration": "Release",
-    "defines": [],
-    "include_dirs": [],
-    "libraries": []
-  },
-  "variables": {
-    "clang": 1,
-    "host_arch": "x64",
-    "node_install_npm": "true",
-    "node_prefix": "",
-    "node_shared_cares": "false",
-    "node_shared_http_parser": "false",
-    "node_shared_libuv": "false",
-    "node_shared_openssl": "false",
-    "node_shared_v8": "false",
-    "node_shared_zlib": "false",
-    "node_tag": "",
-    "node_unsafe_optimizations": 0,
-    "node_use_dtrace": "true",
-    "node_use_etw": "false",
-    "node_use_openssl": "true",
-    "node_use_perfctr": "false",
-    "python": "/usr/bin/python",
-    "target_arch": "x64",
-    "v8_enable_gdbjit": 0,
-    "v8_no_strict_aliasing": 1,
-    "v8_use_snapshot": "false",
-    "nodedir": "/Users/nick/.node-gyp/0.10.24",
-    "copy_dev_lib": "true",
-    "standalone_static_library": 1,
-    "save_dev": "",
-    "browser": "",
-    "viewer": "man",
-    "rollback": "true",
-    "usage": "",
-    "globalignorefile": "/usr/local/etc/npmignore",
-    "init_author_url": "",
-    "shell": "/bin/bash",
-    "parseable": "",
-    "shrinkwrap": "true",
-    "email": "",
-    "init_license": "ISC",
-    "cache_max": "null",
-    "init_author_email": "",
-    "sign_git_tag": "",
-    "cert": "",
-    "git_tag_version": "true",
-    "local_address": "",
-    "long": "",
-    "registry": "https://registry.npmjs.org/",
-    "fetch_retries": "2",
-    "npat": "",
-    "key": "",
-    "message": "%s",
-    "versions": "",
-    "globalconfig": "/usr/local/etc/npmrc",
-    "always_auth": "",
-    "cache_lock_retries": "10",
-    "heading": "npm",
-    "fetch_retry_mintimeout": "10000",
-    "proprietary_attribs": "true",
-    "json": "",
-    "description": "true",
-    "engine_strict": "",
-    "https_proxy": "",
-    "init_module": "/Users/nick/.npm-init.js",
-    "userconfig": "/Users/nick/.npmrc",
-    "node_version": "v0.10.24",
-    "user": "",
-    "editor": "vi",
-    "save": "",
-    "tag": "latest",
-    "global": "",
-    "optional": "true",
-    "username": "",
-    "bin_links": "true",
-    "force": "",
-    "searchopts": "",
-    "depth": "null",
-    "rebuild_bundle": "true",
-    "searchsort": "name",
-    "unicode": "true",
-    "fetch_retry_maxtimeout": "60000",
-    "strict_ssl": "true",
-    "dev": "",
-    "fetch_retry_factor": "10",
-    "group": "20",
-    "cache_lock_stale": "60000",
-    "version": "",
-    "cache_min": "10",
-    "cache": "/Users/nick/.npm",
-    "searchexclude": "",
-    "color": "true",
-    "save_optional": "",
-    "ignore_scripts": "",
-    "user_agent": "node/v0.10.24 darwin x64",
-    "cache_lock_wait": "10000",
-    "production": "true",
-    "save_bundle": "",
-    "umask": "18",
-    "git": "git",
-    "init_author_name": "",
-    "onload_script": "",
-    "tmp": "/var/folders/xt/30wz0tn505j5ksg84l_d76jw0000gn/T/",
-    "unsafe_perm": "true",
-    "link": "",
-    "prefix": "/usr/local"
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/gyp-mac-tool
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/gyp-mac-tool b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/gyp-mac-tool
deleted file mode 100755
index 12edee9..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/gyp-mac-tool
+++ /dev/null
@@ -1,265 +0,0 @@
-#!/usr/bin/env python
-# Generated by gyp. Do not edit.
-# Copyright (c) 2012 Google Inc. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Utility functions to perform Xcode-style build steps.
-
-These functions are executed via gyp-mac-tool when using the Makefile generator.
-"""
-
-import fcntl
-import json
-import os
-import plistlib
-import re
-import shutil
-import string
-import subprocess
-import sys
-
-
-def main(args):
-  executor = MacTool()
-  exit_code = executor.Dispatch(args)
-  if exit_code is not None:
-    sys.exit(exit_code)
-
-
-class MacTool(object):
-  """This class performs all the Mac tooling steps. The methods can either be
-  executed directly, or dispatched from an argument list."""
-
-  def Dispatch(self, args):
-    """Dispatches a string command to a method."""
-    if len(args) < 1:
-      raise Exception("Not enough arguments")
-
-    method = "Exec%s" % self._CommandifyName(args[0])
-    return getattr(self, method)(*args[1:])
-
-  def _CommandifyName(self, name_string):
-    """Transforms a tool name like copy-info-plist to CopyInfoPlist"""
-    return name_string.title().replace('-', '')
-
-  def ExecCopyBundleResource(self, source, dest):
-    """Copies a resource file to the bundle/Resources directory, performing any
-    necessary compilation on each resource."""
-    extension = os.path.splitext(source)[1].lower()
-    if os.path.isdir(source):
-      # Copy tree.
-      # TODO(thakis): This copies file attributes like mtime, while the
-      # single-file branch below doesn't. This should probably be changed to
-      # be consistent with the single-file branch.
-      if os.path.exists(dest):
-        shutil.rmtree(dest)
-      shutil.copytree(source, dest)
-    elif extension == '.xib':
-      return self._CopyXIBFile(source, dest)
-    elif extension == '.storyboard':
-      return self._CopyXIBFile(source, dest)
-    elif extension == '.strings':
-      self._CopyStringsFile(source, dest)
-    else:
-      shutil.copy(source, dest)
-
-  def _CopyXIBFile(self, source, dest):
-    """Compiles a XIB file with ibtool into a binary plist in the bundle."""
-
-    # ibtool sometimes crashes with relative paths. See crbug.com/314728.
-    base = os.path.dirname(os.path.realpath(__file__))
-    if os.path.relpath(source):
-      source = os.path.join(base, source)
-    if os.path.relpath(dest):
-      dest = os.path.join(base, dest)
-
-    args = ['xcrun', 'ibtool', '--errors', '--warnings', '--notices',
-        '--output-format', 'human-readable-text', '--compile', dest, source]
-    ibtool_section_re = re.compile(r'/\*.*\*/')
-    ibtool_re = re.compile(r'.*note:.*is clipping its content')
-    ibtoolout = subprocess.Popen(args, stdout=subprocess.PIPE)
-    current_section_header = None
-    for line in ibtoolout.stdout:
-      if ibtool_section_re.match(line):
-        current_section_header = line
-      elif not ibtool_re.match(line):
-        if current_section_header:
-          sys.stdout.write(current_section_header)
-          current_section_header = None
-        sys.stdout.write(line)
-    return ibtoolout.returncode
-
-  def _CopyStringsFile(self, source, dest):
-    """Copies a .strings file using iconv to reconvert the input into UTF-16."""
-    input_code = self._DetectInputEncoding(source) or "UTF-8"
-
-    # Xcode's CpyCopyStringsFile / builtin-copyStrings seems to call
-    # CFPropertyListCreateFromXMLData() behind the scenes; at least it prints
-    #     CFPropertyListCreateFromXMLData(): Old-style plist parser: missing
-    #     semicolon in dictionary.
-    # on invalid files. Do the same kind of validation.
-    import CoreFoundation
-    s = open(source, 'rb').read()
-    d = CoreFoundation.CFDataCreate(None, s, len(s))
-    _, error = CoreFoundation.CFPropertyListCreateFromXMLData(None, d, 0, None)
-    if error:
-      return
-
-    fp = open(dest, 'wb')
-    fp.write(s.decode(input_code).encode('UTF-16'))
-    fp.close()
-
-  def _DetectInputEncoding(self, file_name):
-    """Reads the first few bytes from file_name and tries to guess the text
-    encoding. Returns None as a guess if it can't detect it."""
-    fp = open(file_name, 'rb')
-    try:
-      header = fp.read(3)
-    except e:
-      fp.close()
-      return None
-    fp.close()
-    if header.startswith("\xFE\xFF"):
-      return "UTF-16"
-    elif header.startswith("\xFF\xFE"):
-      return "UTF-16"
-    elif header.startswith("\xEF\xBB\xBF"):
-      return "UTF-8"
-    else:
-      return None
-
-  def ExecCopyInfoPlist(self, source, dest, *keys):
-    """Copies the |source| Info.plist to the destination directory |dest|."""
-    # Read the source Info.plist into memory.
-    fd = open(source, 'r')
-    lines = fd.read()
-    fd.close()
-
-    # Insert synthesized key/value pairs (e.g. BuildMachineOSBuild).
-    plist = plistlib.readPlistFromString(lines)
-    if keys:
-      plist = dict(plist.items() + json.loads(keys[0]).items())
-    lines = plistlib.writePlistToString(plist)
-
-    # Go through all the environment variables and replace them as variables in
-    # the file.
-    IDENT_RE = re.compile('[/\s]')
-    for key in os.environ:
-      if key.startswith('_'):
-        continue
-      evar = '${%s}' % key
-      evalue = os.environ[key]
-      lines = string.replace(lines, evar, evalue)
-
-      # Xcode supports various suffices on environment variables, which are
-      # all undocumented. :rfc1034identifier is used in the standard project
-      # template these days, and :identifier was used earlier. They are used to
-      # convert non-url characters into things that look like valid urls --
-      # except that the replacement character for :identifier, '_' isn't valid
-      # in a URL either -- oops, hence :rfc1034identifier was born.
-      evar = '${%s:identifier}' % key
-      evalue = IDENT_RE.sub('_', os.environ[key])
-      lines = string.replace(lines, evar, evalue)
-
-      evar = '${%s:rfc1034identifier}' % key
-      evalue = IDENT_RE.sub('-', os.environ[key])
-      lines = string.replace(lines, evar, evalue)
-
-    # Remove any keys with values that haven't been replaced.
-    lines = lines.split('\n')
-    for i in range(len(lines)):
-      if lines[i].strip().startswith("<string>${"):
-        lines[i] = None
-        lines[i - 1] = None
-    lines = '\n'.join(filter(lambda x: x is not None, lines))
-
-    # Write out the file with variables replaced.
-    fd = open(dest, 'w')
-    fd.write(lines)
-    fd.close()
-
-    # Now write out PkgInfo file now that the Info.plist file has been
-    # "compiled".
-    self._WritePkgInfo(dest)
-
-  def _WritePkgInfo(self, info_plist):
-    """This writes the PkgInfo file from the data stored in Info.plist."""
-    plist = plistlib.readPlist(info_plist)
-    if not plist:
-      return
-
-    # Only create PkgInfo for executable types.
-    package_type = plist['CFBundlePackageType']
-    if package_type != 'APPL':
-      return
-
-    # The format of PkgInfo is eight characters, representing the bundle type
-    # and bundle signature, each four characters. If that is missing, four
-    # '?' characters are used instead.
-    signature_code = plist.get('CFBundleSignature', '????')
-    if len(signature_code) != 4:  # Wrong length resets everything, too.
-      signature_code = '?' * 4
-
-    dest = os.path.join(os.path.dirname(info_plist), 'PkgInfo')
-    fp = open(dest, 'w')
-    fp.write('%s%s' % (package_type, signature_code))
-    fp.close()
-
-  def ExecFlock(self, lockfile, *cmd_list):
-    """Emulates the most basic behavior of Linux's flock(1)."""
-    # Rely on exception handling to report errors.
-    fd = os.open(lockfile, os.O_RDONLY|os.O_NOCTTY|os.O_CREAT, 0o666)
-    fcntl.flock(fd, fcntl.LOCK_EX)
-    return subprocess.call(cmd_list)
-
-  def ExecFilterLibtool(self, *cmd_list):
-    """Calls libtool and filters out '/path/to/libtool: file: foo.o has no
-    symbols'."""
-    libtool_re = re.compile(r'^.*libtool: file: .* has no symbols$')
-    libtoolout = subprocess.Popen(cmd_list, stderr=subprocess.PIPE)
-    _, err = libtoolout.communicate()
-    for line in err.splitlines():
-      if not libtool_re.match(line):
-        print >>sys.stderr, line
-    return libtoolout.returncode
-
-  def ExecPackageFramework(self, framework, version):
-    """Takes a path to Something.framework and the Current version of that and
-    sets up all the symlinks."""
-    # Find the name of the binary based on the part before the ".framework".
-    binary = os.path.basename(framework).split('.')[0]
-
-    CURRENT = 'Current'
-    RESOURCES = 'Resources'
-    VERSIONS = 'Versions'
-
-    if not os.path.exists(os.path.join(framework, VERSIONS, version, binary)):
-      # Binary-less frameworks don't seem to contain symlinks (see e.g.
-      # chromium's out/Debug/org.chromium.Chromium.manifest/ bundle).
-      return
-
-    # Move into the framework directory to set the symlinks correctly.
-    pwd = os.getcwd()
-    os.chdir(framework)
-
-    # Set up the Current version.
-    self._Relink(version, os.path.join(VERSIONS, CURRENT))
-
-    # Set up the root symlinks.
-    self._Relink(os.path.join(VERSIONS, CURRENT, binary), binary)
-    self._Relink(os.path.join(VERSIONS, CURRENT, RESOURCES), RESOURCES)
-
-    # Back to where we were before!
-    os.chdir(pwd)
-
-  def _Relink(self, dest, link):
-    """Creates a symlink to |dest| named |link|. If |link| already exists,
-    it is overwritten."""
-    if os.path.lexists(link):
-      os.remove(link)
-    os.symlink(dest, link)
-
-
-if __name__ == '__main__':
-  sys.exit(main(sys.argv[1:]))

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/kerberos.target.mk
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/kerberos.target.mk b/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/kerberos.target.mk
deleted file mode 100644
index 32767a0..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/build/kerberos.target.mk
+++ /dev/null
@@ -1,168 +0,0 @@
-# This file is generated by gyp; do not edit.
-
-TOOLSET := target
-TARGET := kerberos
-DEFS_Debug := \
-	'-D_DARWIN_USE_64_BIT_INODE=1' \
-	'-D_LARGEFILE_SOURCE' \
-	'-D_FILE_OFFSET_BITS=64' \
-	'-D__MACOSX_CORE__' \
-	'-DBUILDING_NODE_EXTENSION' \
-	'-DDEBUG' \
-	'-D_DEBUG'
-
-# Flags passed to all source files.
-CFLAGS_Debug := \
-	-O0 \
-	-gdwarf-2 \
-	-mmacosx-version-min=10.5 \
-	-arch x86_64 \
-	-Wall \
-	-Wendif-labels \
-	-W \
-	-Wno-unused-parameter
-
-# Flags passed to only C files.
-CFLAGS_C_Debug := \
-	-fno-strict-aliasing
-
-# Flags passed to only C++ files.
-CFLAGS_CC_Debug := \
-	-fno-rtti \
-	-fno-threadsafe-statics \
-	-fno-strict-aliasing
-
-# Flags passed to only ObjC files.
-CFLAGS_OBJC_Debug :=
-
-# Flags passed to only ObjC++ files.
-CFLAGS_OBJCC_Debug :=
-
-INCS_Debug := \
-	-I/Users/nick/.node-gyp/0.10.24/src \
-	-I/Users/nick/.node-gyp/0.10.24/deps/uv/include \
-	-I/Users/nick/.node-gyp/0.10.24/deps/v8/include
-
-DEFS_Release := \
-	'-D_DARWIN_USE_64_BIT_INODE=1' \
-	'-D_LARGEFILE_SOURCE' \
-	'-D_FILE_OFFSET_BITS=64' \
-	'-D__MACOSX_CORE__' \
-	'-DBUILDING_NODE_EXTENSION'
-
-# Flags passed to all source files.
-CFLAGS_Release := \
-	-Os \
-	-gdwarf-2 \
-	-mmacosx-version-min=10.5 \
-	-arch x86_64 \
-	-Wall \
-	-Wendif-labels \
-	-W \
-	-Wno-unused-parameter
-
-# Flags passed to only C files.
-CFLAGS_C_Release := \
-	-fno-strict-aliasing
-
-# Flags passed to only C++ files.
-CFLAGS_CC_Release := \
-	-fno-rtti \
-	-fno-threadsafe-statics \
-	-fno-strict-aliasing
-
-# Flags passed to only ObjC files.
-CFLAGS_OBJC_Release :=
-
-# Flags passed to only ObjC++ files.
-CFLAGS_OBJCC_Release :=
-
-INCS_Release := \
-	-I/Users/nick/.node-gyp/0.10.24/src \
-	-I/Users/nick/.node-gyp/0.10.24/deps/uv/include \
-	-I/Users/nick/.node-gyp/0.10.24/deps/v8/include
-
-OBJS := \
-	$(obj).target/$(TARGET)/lib/kerberos.o \
-	$(obj).target/$(TARGET)/lib/worker.o \
-	$(obj).target/$(TARGET)/lib/kerberosgss.o \
-	$(obj).target/$(TARGET)/lib/base64.o \
-	$(obj).target/$(TARGET)/lib/kerberos_context.o
-
-# Add to the list of files we specially track dependencies for.
-all_deps += $(OBJS)
-
-# CFLAGS et al overrides must be target-local.
-# See "Target-specific Variable Values" in the GNU Make manual.
-$(OBJS): TOOLSET := $(TOOLSET)
-$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE))  $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE))
-$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE))  $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE))
-$(OBJS): GYP_OBJCFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE))  $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE))
-$(OBJS): GYP_OBJCXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE))  $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE))
-
-# Suffix rules, putting all outputs into $(obj).
-
-$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-
-$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.c FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-
-# Try building from generated source, too.
-
-$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-
-$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-
-$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cc FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-
-$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.c FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-
-# End of this set of suffix rules
-### Rules for final target.
-LDFLAGS_Debug := \
-	-Wl,-search_paths_first \
-	-mmacosx-version-min=10.5 \
-	-arch x86_64 \
-	-L$(builddir)
-
-LIBTOOLFLAGS_Debug := \
-	-Wl,-search_paths_first
-
-LDFLAGS_Release := \
-	-Wl,-search_paths_first \
-	-mmacosx-version-min=10.5 \
-	-arch x86_64 \
-	-L$(builddir)
-
-LIBTOOLFLAGS_Release := \
-	-Wl,-search_paths_first
-
-LIBS := \
-	-undefined dynamic_lookup \
-	-lkrb5
-
-$(builddir)/kerberos.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE))
-$(builddir)/kerberos.node: LIBS := $(LIBS)
-$(builddir)/kerberos.node: GYP_LIBTOOLFLAGS := $(LIBTOOLFLAGS_$(BUILDTYPE))
-$(builddir)/kerberos.node: TOOLSET := $(TOOLSET)
-$(builddir)/kerberos.node: $(OBJS) FORCE_DO_CMD
-	$(call do_cmd,solink_module)
-
-all_deps += $(builddir)/kerberos.node
-# Add target alias
-.PHONY: kerberos
-kerberos: $(builddir)/kerberos.node
-
-# Short alias for building this executable.
-.PHONY: kerberos.node
-kerberos.node: $(builddir)/kerberos.node
-
-# Add executable to "all" target.
-.PHONY: all
-all: $(builddir)/kerberos.node
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/builderror.log
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/builderror.log b/web/demos/package/node_modules/mongodb/node_modules/kerberos/builderror.log
deleted file mode 100644
index b690a12..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/builderror.log
+++ /dev/null
@@ -1,199 +0,0 @@
-../lib/kerberosgss.c:125:14: warning: 'gss_import_name' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-  maj_stat = gss_import_name(&min_stat, &name_token, gss_krb5_nt_service_name, &state->server_name);
-             ^
-/usr/include/gssapi/gssapi.h:586:1: note: 'gss_import_name' declared here
-gss_import_name(
-^
-../lib/kerberosgss.c:148:5: warning: 'gss_delete_sec_context' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    gss_delete_sec_context(&min_stat, &state->context, GSS_C_NO_BUFFER);
-    ^
-/usr/include/gssapi/gssapi.h:498:1: note: 'gss_delete_sec_context' declared here
-gss_delete_sec_context(
-^
-../lib/kerberosgss.c:151:5: warning: 'gss_release_name' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    gss_release_name(&min_stat, &state->server_name);
-    ^
-/usr/include/gssapi/gssapi.h:593:1: note: 'gss_release_name' declared here
-gss_release_name(
-^
-../lib/kerberosgss.c:193:14: warning: 'gss_init_sec_context' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-  maj_stat = gss_init_sec_context(&min_stat,
-             ^
-/usr/include/gssapi/gssapi.h:461:1: note: 'gss_init_sec_context' declared here
-gss_init_sec_context(
-^
-../lib/kerberosgss.c:217:16: warning: 'gss_release_buffer' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    maj_stat = gss_release_buffer(&min_stat, &output_token);
-               ^
-/usr/include/gssapi/gssapi.h:598:1: note: 'gss_release_buffer' declared here
-gss_release_buffer(
-^
-../lib/kerberosgss.c:223:16: warning: 'gss_inquire_context' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    maj_stat = gss_inquire_context(&min_stat, state->context, &gssuser, NULL, NULL, NULL,  NULL, NULL, NULL);
-               ^
-/usr/include/gssapi/gssapi.h:618:1: note: 'gss_inquire_context' declared here
-gss_inquire_context(
-^
-../lib/kerberosgss.c:233:16: warning: 'gss_display_name' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    maj_stat = gss_display_name(&min_stat, gssuser, &name_token, NULL);
-               ^
-/usr/include/gssapi/gssapi.h:578:1: note: 'gss_display_name' declared here
-gss_display_name(
-^
-../lib/kerberosgss.c:237:9: warning: 'gss_release_buffer' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-        gss_release_buffer(&min_stat, &name_token);
-        ^
-/usr/include/gssapi/gssapi.h:598:1: note: 'gss_release_buffer' declared here
-gss_release_buffer(
-^
-../lib/kerberosgss.c:238:7: warning: 'gss_release_name' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-      gss_release_name(&min_stat, &gssuser);
-      ^
-/usr/include/gssapi/gssapi.h:593:1: note: 'gss_release_name' declared here
-gss_release_name(
-^
-../lib/kerberosgss.c:247:7: warning: 'gss_release_buffer' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-      gss_release_buffer(&min_stat, &name_token);
-      ^
-/usr/include/gssapi/gssapi.h:598:1: note: 'gss_release_buffer' declared here
-gss_release_buffer(
-^
-../lib/kerberosgss.c:248:7: warning: 'gss_release_name' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-      gss_release_name(&min_stat, &gssuser);
-      ^
-/usr/include/gssapi/gssapi.h:593:1: note: 'gss_release_name' declared here
-gss_release_name(
-^
-../lib/kerberosgss.c:254:5: warning: 'gss_release_buffer' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    gss_release_buffer(&min_stat, &output_token);
-    ^
-/usr/include/gssapi/gssapi.h:598:1: note: 'gss_release_buffer' declared here
-gss_release_buffer(
-^
-../lib/kerberosgss.c:289:14: warning: 'gss_unwrap' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-  maj_stat = gss_unwrap(&min_stat,
-             ^
-/usr/include/gssapi/gssapi.h:544:1: note: 'gss_unwrap' declared here
-gss_unwrap(
-^
-../lib/kerberosgss.c:307:16: warning: 'gss_release_buffer' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    maj_stat = gss_release_buffer(&min_stat, &output_token);
-               ^
-/usr/include/gssapi/gssapi.h:598:1: note: 'gss_release_buffer' declared here
-gss_release_buffer(
-^
-../lib/kerberosgss.c:311:5: warning: 'gss_release_buffer' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    gss_release_buffer(&min_stat, &output_token);
-    ^
-/usr/include/gssapi/gssapi.h:598:1: note: 'gss_release_buffer' declared here
-gss_release_buffer(
-^
-../lib/kerberosgss.c:371:14: warning: 'gss_wrap' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-  maj_stat = gss_wrap(&min_stat,
-             ^
-/usr/include/gssapi/gssapi.h:532:1: note: 'gss_wrap' declared here
-gss_wrap(
-^
-../lib/kerberosgss.c:388:16: warning: 'gss_release_buffer' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    maj_stat = gss_release_buffer(&min_stat, &output_token);
-               ^
-/usr/include/gssapi/gssapi.h:598:1: note: 'gss_release_buffer' declared here
-gss_release_buffer(
-^
-../lib/kerberosgss.c:392:5: warning: 'gss_release_buffer' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    gss_release_buffer(&min_stat, &output_token);
-    ^
-/usr/include/gssapi/gssapi.h:598:1: note: 'gss_release_buffer' declared here
-gss_release_buffer(
-^
-../lib/kerberosgss.c:427:20: warning: 'gss_import_name' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-        maj_stat = gss_import_name(&min_stat, &name_token, GSS_C_NT_HOSTBASED_SERVICE, &state->server_name);
-                   ^
-/usr/include/gssapi/gssapi.h:586:1: note: 'gss_import_name' declared here
-gss_import_name(
-^
-../lib/kerberosgss.c:437:20: warning: 'gss_acquire_cred' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-        maj_stat = gss_acquire_cred(&min_stat, state->server_name, GSS_C_INDEFINITE,
-                   ^
-/usr/include/gssapi/gssapi.h:445:1: note: 'gss_acquire_cred' declared here
-gss_acquire_cred(
-^
-../lib/kerberosgss.c:458:9: warning: 'gss_delete_sec_context' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-        gss_delete_sec_context(&min_stat, &state->context, GSS_C_NO_BUFFER);
-        ^
-/usr/include/gssapi/gssapi.h:498:1: note: 'gss_delete_sec_context' declared here
-gss_delete_sec_context(
-^
-../lib/kerberosgss.c:460:9: warning: 'gss_release_name' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-        gss_release_name(&min_stat, &state->server_name);
-        ^
-/usr/include/gssapi/gssapi.h:593:1: note: 'gss_release_name' declared here
-gss_release_name(
-^
-../lib/kerberosgss.c:462:9: warning: 'gss_release_name' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-        gss_release_name(&min_stat, &state->client_name);
-        ^
-/usr/include/gssapi/gssapi.h:593:1: note: 'gss_release_name' declared here
-gss_release_name(
-^
-../lib/kerberosgss.c:464:9: warning: 'gss_release_cred' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-        gss_release_cred(&min_stat, &state->server_creds);
-        ^
-/usr/include/gssapi/gssapi.h:456:1: note: 'gss_release_cred' declared here
-gss_release_cred(
-^
-../lib/kerberosgss.c:466:9: warning: 'gss_release_cred' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-        gss_release_cred(&min_stat, &state->client_creds);
-        ^
-/usr/include/gssapi/gssapi.h:456:1: note: 'gss_release_cred' declared here
-gss_release_cred(
-^
-../lib/kerberosgss.c:595:16: warning: 'gss_display_status' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    maj_stat = gss_display_status (&min_stat,
-               ^
-/usr/include/gssapi/gssapi.h:554:1: note: 'gss_display_status' declared here
-gss_display_status(
-^
-../lib/kerberosgss.c:605:5: warning: 'gss_release_buffer' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    gss_release_buffer(&min_stat, &status_string);
-    ^
-/usr/include/gssapi/gssapi.h:598:1: note: 'gss_release_buffer' declared here
-gss_release_buffer(
-^
-../lib/kerberosgss.c:607:16: warning: 'gss_display_status' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    maj_stat = gss_display_status (&min_stat,
-               ^
-/usr/include/gssapi/gssapi.h:554:1: note: 'gss_display_status' declared here
-gss_display_status(
-^
-../lib/kerberosgss.c:616:7: warning: 'gss_release_buffer' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-      gss_release_buffer(&min_stat, &status_string);
-      ^
-/usr/include/gssapi/gssapi.h:598:1: note: 'gss_release_buffer' declared here
-gss_release_buffer(
-^
-../lib/kerberosgss.c:631:16: warning: 'gss_display_status' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    maj_stat = gss_display_status (&min_stat,
-               ^
-/usr/include/gssapi/gssapi.h:554:1: note: 'gss_display_status' declared here
-gss_display_status(
-^
-../lib/kerberosgss.c:641:5: warning: 'gss_release_buffer' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    gss_release_buffer(&min_stat, &status_string);
-    ^
-/usr/include/gssapi/gssapi.h:598:1: note: 'gss_release_buffer' declared here
-gss_release_buffer(
-^
-../lib/kerberosgss.c:643:16: warning: 'gss_display_status' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-    maj_stat = gss_display_status (&min_stat,
-               ^
-/usr/include/gssapi/gssapi.h:554:1: note: 'gss_display_status' declared here
-gss_display_status(
-^
-../lib/kerberosgss.c:651:7: warning: 'gss_release_buffer' is deprecated: use GSS.framework [-Wdeprecated-declarations]
-      gss_release_buffer(&min_stat, &status_string);
-      ^
-/usr/include/gssapi/gssapi.h:598:1: note: 'gss_release_buffer' declared here
-gss_release_buffer(
-^
-33 warnings generated.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/index.js b/web/demos/package/node_modules/mongodb/node_modules/kerberos/index.js
deleted file mode 100644
index b8c8532..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// Get the Kerberos library
-module.exports = require('./lib/kerberos');
-// Set up the auth processes
-module.exports['processes'] = {
-  MongoAuthProcess: require('./lib/auth_processes/mongodb').MongoAuthProcess
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/auth_processes/mongodb.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/auth_processes/mongodb.js b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/auth_processes/mongodb.js
deleted file mode 100644
index f1e9231..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/auth_processes/mongodb.js
+++ /dev/null
@@ -1,281 +0,0 @@
-var format = require('util').format;
-
-var MongoAuthProcess = function(host, port, service_name) {  
-  // Check what system we are on
-  if(process.platform == 'win32') {
-    this._processor = new Win32MongoProcessor(host, port, service_name);
-  } else {
-    this._processor = new UnixMongoProcessor(host, port, service_name);
-  }
-}
-
-MongoAuthProcess.prototype.init = function(username, password, callback) {
-  this._processor.init(username, password, callback);
-}
-
-MongoAuthProcess.prototype.transition = function(payload, callback) {
-  this._processor.transition(payload, callback);
-}
-
-/*******************************************************************
- *
- * Win32 SSIP Processor for MongoDB
- *
- *******************************************************************/
-var Win32MongoProcessor = function(host, port, service_name) {
-  this.host = host;
-  this.port = port  
-  // SSIP classes
-  this.ssip = require("../kerberos").SSIP;
-  // Set up first transition
-  this._transition = Win32MongoProcessor.first_transition(this);
-  // Set up service name
-  service_name = service_name || "mongodb";
-  // Set up target
-  this.target = format("%s/%s", service_name, host);
-  // Number of retries
-  this.retries = 10;
-}
-
-Win32MongoProcessor.prototype.init = function(username, password, callback) {
-  var self = this;
-  // Save the values used later
-  this.username = username;
-  this.password = password;
-  // Aquire credentials
-  this.ssip.SecurityCredentials.aquire_kerberos(username, password, function(err, security_credentials) {
-    if(err) return callback(err);
-    // Save credentials
-    self.security_credentials = security_credentials;
-    // Callback with success
-    callback(null);
-  });
-}
-
-Win32MongoProcessor.prototype.transition = function(payload, callback) {
-  if(this._transition == null) return callback(new Error("Transition finished"));
-  this._transition(payload, callback);
-}
-
-Win32MongoProcessor.first_transition = function(self) {
-  return function(payload, callback) {    
-    self.ssip.SecurityContext.initialize(
-      self.security_credentials, 
-      self.target, 
-      payload, function(err, security_context) {   
-        if(err) return callback(err);
-        
-        // If no context try again until we have no more retries
-        if(!security_context.hasContext) {
-          if(self.retries == 0) return callback(new Error("Failed to initialize security context"));
-          // Update the number of retries
-          self.retries = self.retries - 1;
-          // Set next transition
-          return self.transition(payload, callback);
-        }
-
-        // Set next transition
-        self._transition = Win32MongoProcessor.second_transition(self);
-        self.security_context = security_context;
-        // Return the payload
-        callback(null, security_context.payload);
-    });
-  }
-}
-
-Win32MongoProcessor.second_transition = function(self) {
-  return function(payload, callback) {    
-    // Perform a step
-    self.security_context.initialize(self.target, payload, function(err, security_context) {
-      if(err) return callback(err);
-
-      // If no context try again until we have no more retries
-      if(!security_context.hasContext) {
-        if(self.retries == 0) return callback(new Error("Failed to initialize security context"));
-        // Update the number of retries
-        self.retries = self.retries - 1;
-        // Set next transition
-        self._transition = Win32MongoProcessor.first_transition(self);
-        // Retry
-        return self.transition(payload, callback);
-      }
-
-      // Set next transition
-      self._transition = Win32MongoProcessor.third_transition(self);
-      // Return the payload
-      callback(null, security_context.payload);
-    });
-  }  
-}
-
-Win32MongoProcessor.third_transition = function(self) {
-  return function(payload, callback) {   
-    var messageLength = 0;
-    // Get the raw bytes
-    var encryptedBytes = new Buffer(payload, 'base64');
-    var encryptedMessage = new Buffer(messageLength);
-    // Copy first byte
-    encryptedBytes.copy(encryptedMessage, 0, 0, messageLength);
-    // Set up trailer
-    var securityTrailerLength = encryptedBytes.length - messageLength;
-    var securityTrailer = new Buffer(securityTrailerLength);
-    // Copy the bytes
-    encryptedBytes.copy(securityTrailer, 0, messageLength, securityTrailerLength);
-
-    // Types used
-    var SecurityBuffer = self.ssip.SecurityBuffer;
-    var SecurityBufferDescriptor = self.ssip.SecurityBufferDescriptor;
-
-    // Set up security buffers
-    var buffers = [
-        new SecurityBuffer(SecurityBuffer.DATA, encryptedBytes)
-      , new SecurityBuffer(SecurityBuffer.STREAM, securityTrailer)
-    ];
-
-    // Set up the descriptor
-    var descriptor = new SecurityBufferDescriptor(buffers);
-
-    // Decrypt the data
-    self.security_context.decryptMessage(descriptor, function(err, security_context) {
-      if(err) return callback(err);
-
-      var length = 4;
-      if(self.username != null) {
-        length += self.username.length;          
-      }
-
-      var bytesReceivedFromServer = new Buffer(length);
-      bytesReceivedFromServer[0] = 0x01;  // NO_PROTECTION
-      bytesReceivedFromServer[1] = 0x00;  // NO_PROTECTION
-      bytesReceivedFromServer[2] = 0x00;  // NO_PROTECTION
-      bytesReceivedFromServer[3] = 0x00;  // NO_PROTECTION        
-
-      if(self.username != null) {
-        var authorization_id_bytes = new Buffer(self.username, 'utf8');
-        authorization_id_bytes.copy(bytesReceivedFromServer, 4, 0);
-      }
-
-      self.security_context.queryContextAttributes(0x00, function(err, sizes) {
-        if(err) return callback(err);
-
-        var buffers = [
-            new SecurityBuffer(SecurityBuffer.TOKEN, new Buffer(sizes.securityTrailer))
-          , new SecurityBuffer(SecurityBuffer.DATA, bytesReceivedFromServer)
-          , new SecurityBuffer(SecurityBuffer.PADDING, new Buffer(sizes.blockSize))
-        ]
-
-        var descriptor = new SecurityBufferDescriptor(buffers);
-
-        self.security_context.encryptMessage(descriptor, 0x80000001, function(err, security_context) {
-          if(err) return callback(err);
-          callback(null, security_context.payload);
-        });
-      });
-    });
-  }  
-}
-
-/*******************************************************************
- *
- * UNIX MIT Kerberos processor
- *
- *******************************************************************/
-var UnixMongoProcessor = function(host, port, service_name) {
-  this.host = host;
-  this.port = port  
-  // SSIP classes
-  this.Kerberos = require("../kerberos").Kerberos;
-  this.kerberos = new this.Kerberos();
-  service_name = service_name || "mongodb";
-  // Set up first transition
-  this._transition = UnixMongoProcessor.first_transition(this);
-  // Set up target
-  this.target = format("%s@%s", service_name, host);
-  // Number of retries
-  this.retries = 10;
-}
-
-UnixMongoProcessor.prototype.init = function(username, password, callback) {
-  var self = this;
-  this.username = username;
-  this.password = password;
-  // Call client initiate
-  this.kerberos.authGSSClientInit(
-      self.target
-    , this.Kerberos.GSS_C_MUTUAL_FLAG, function(err, context) {
-      self.context = context;
-      // Return the context
-      callback(null, context);
-  });
-}
-
-UnixMongoProcessor.prototype.transition = function(payload, callback) {
-  if(this._transition == null) return callback(new Error("Transition finished"));
-  this._transition(payload, callback);
-}
-
-UnixMongoProcessor.first_transition = function(self) {
-  return function(payload, callback) {    
-    self.kerberos.authGSSClientStep(self.context, '', function(err, result) {
-      if(err) return callback(err);
-      // Set up the next step
-      self._transition = UnixMongoProcessor.second_transition(self);
-      // Return the payload
-      callback(null, self.context.response);
-    })
-  }
-}
-
-UnixMongoProcessor.second_transition = function(self) {
-  return function(payload, callback) {    
-    self.kerberos.authGSSClientStep(self.context, payload, function(err, result) {
-      if(err && self.retries == 0) return callback(err);
-      // Attempt to re-establish a context
-      if(err) {
-        // Adjust the number of retries
-        self.retries = self.retries - 1;
-        // Call same step again
-        return self.transition(payload, callback);
-      }
-      
-      // Set up the next step
-      self._transition = UnixMongoProcessor.third_transition(self);
-      // Return the payload
-      callback(null, self.context.response || '');
-    });
-  }
-}
-
-UnixMongoProcessor.third_transition = function(self) {
-  return function(payload, callback) {    
-    // GSS Client Unwrap
-    self.kerberos.authGSSClientUnwrap(self.context, payload, function(err, result) {
-      if(err) return callback(err, false);
-      
-      // Wrap the response
-      self.kerberos.authGSSClientWrap(self.context, self.context.response, self.username, function(err, result) {
-        if(err) return callback(err, false);
-        // Set up the next step
-        self._transition = UnixMongoProcessor.fourth_transition(self);
-        // Return the payload
-        callback(null, self.context.response);
-      });
-    });
-  }
-}
-
-UnixMongoProcessor.fourth_transition = function(self) {
-  return function(payload, callback) {    
-    // Clean up context
-    self.kerberos.authGSSClientClean(self.context, function(err, result) {
-      if(err) return callback(err, false);
-      // Set the transition to null
-      self._transition = null;
-      // Callback with valid authentication
-      callback(null, true);
-    });
-  }
-}
-
-// Set the process
-exports.MongoAuthProcess = MongoAuthProcess;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/base64.c
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/base64.c b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/base64.c
deleted file mode 100644
index 4232106..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/base64.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * Copyright (c) 2006-2008 Apple Inc. All rights reserved.
- *
- * 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 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.
- **/
-
-#include "base64.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-// base64 tables
-static char basis_64[] =
-    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-static signed char index_64[128] =
-{
-    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
-    52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1,
-    -1, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,
-    15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
-    -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
-    41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1
-};
-#define CHAR64(c)  (((c) < 0 || (c) > 127) ? -1 : index_64[(c)])
-
-// base64_encode    :    base64 encode
-//
-// value            :    data to encode
-// vlen             :    length of data
-// (result)         :    new char[] - c-str of result
-char *base64_encode(const unsigned char *value, int vlen)
-{
-    char *result = (char *)malloc((vlen * 4) / 3 + 5);
-    char *out = result;
-    while (vlen >= 3)
-    {
-        *out++ = basis_64[value[0] >> 2];
-        *out++ = basis_64[((value[0] << 4) & 0x30) | (value[1] >> 4)];
-        *out++ = basis_64[((value[1] << 2) & 0x3C) | (value[2] >> 6)];
-        *out++ = basis_64[value[2] & 0x3F];
-        value += 3;
-        vlen -= 3;
-    }
-    if (vlen > 0)
-    {
-        *out++ = basis_64[value[0] >> 2];
-        unsigned char oval = (value[0] << 4) & 0x30;
-        if (vlen > 1) oval |= value[1] >> 4;
-        *out++ = basis_64[oval];
-        *out++ = (vlen < 2) ? '=' : basis_64[(value[1] << 2) & 0x3C];
-        *out++ = '=';
-    }
-    *out = '\0';
-
-    return result;
-}
-
-// base64_decode    :    base64 decode
-//
-// value            :    c-str to decode
-// rlen             :    length of decoded result
-// (result)         :    new unsigned char[] - decoded result
-unsigned char *base64_decode(const char *value, int *rlen)
-{
-    *rlen = 0;
-    int c1, c2, c3, c4;
-
-    int vlen = strlen(value);
-    unsigned char *result =(unsigned char *)malloc((vlen * 3) / 4 + 1);
-    unsigned char *out = result;
-
-    while (1)
-    {
-        if (value[0]==0)
-            return result;
-        c1 = value[0];
-        if (CHAR64(c1) == -1)
-            goto base64_decode_error;;
-        c2 = value[1];
-        if (CHAR64(c2) == -1)
-            goto base64_decode_error;;
-        c3 = value[2];
-        if ((c3 != '=') && (CHAR64(c3) == -1))
-            goto base64_decode_error;;
-        c4 = value[3];
-        if ((c4 != '=') && (CHAR64(c4) == -1))
-            goto base64_decode_error;;
-
-        value += 4;
-        *out++ = (CHAR64(c1) << 2) | (CHAR64(c2) >> 4);
-        *rlen += 1;
-        if (c3 != '=')
-        {
-            *out++ = ((CHAR64(c2) << 4) & 0xf0) | (CHAR64(c3) >> 2);
-            *rlen += 1;
-            if (c4 != '=')
-            {
-                *out++ = ((CHAR64(c3) << 6) & 0xc0) | CHAR64(c4);
-                *rlen += 1;
-            }
-        }
-    }
-
-base64_decode_error:
-    *result = 0;
-    *rlen = 0;
-    return result;
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/base64.h
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/base64.h b/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/base64.h
deleted file mode 100644
index f0e1f06..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/lib/base64.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Copyright (c) 2006-2008 Apple Inc. All rights reserved.
- *
- * 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 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.
- **/
-
-char *base64_encode(const unsigned char *value, int vlen);
-unsigned char *base64_decode(const char *value, int *rlen);


[62/98] [abbrv] incubator-apex-malhar git commit: Cover distributeddistinct in CI build.

Posted by da...@apache.org.
Cover distributeddistinct in CI build.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/9587b03e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/9587b03e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/9587b03e

Branch: refs/heads/master
Commit: 9587b03e26ab884c6877701dfdbd5778aa2a5a81
Parents: a6ba9a4
Author: Thomas Weise <th...@datatorrent.com>
Authored: Fri Oct 16 20:35:22 2015 -0700
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Fri Oct 16 20:35:22 2015 -0700

----------------------------------------------------------------------
 demos/distributedistinct/pom.xml                |  4 +--
 .../demos/distributeddistinct/Application.java  |  9 +++--
 .../UniqueValueCountAppender.java               | 17 ++-------
 .../DistributedDistinctTest.java                |  4 +--
 .../StatefulUniqueCountTest.java                |  5 +--
 demos/pom.xml                                   | 36 ++++++++++++--------
 6 files changed, 34 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9587b03e/demos/distributedistinct/pom.xml
----------------------------------------------------------------------
diff --git a/demos/distributedistinct/pom.xml b/demos/distributedistinct/pom.xml
index 5f608a7..dac02ae 100644
--- a/demos/distributedistinct/pom.xml
+++ b/demos/distributedistinct/pom.xml
@@ -22,8 +22,6 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   
-  <groupId>org.apache.apex</groupId>
-  <version>3.0.0</version>
   <artifactId>distributedistinct</artifactId>
   <packaging>jar</packaging>
 
@@ -33,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.0.0</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9587b03e/demos/distributedistinct/src/main/java/com/datatorrent/demos/distributeddistinct/Application.java
----------------------------------------------------------------------
diff --git a/demos/distributedistinct/src/main/java/com/datatorrent/demos/distributeddistinct/Application.java b/demos/distributedistinct/src/main/java/com/datatorrent/demos/distributeddistinct/Application.java
index 7f65472..656b083 100644
--- a/demos/distributedistinct/src/main/java/com/datatorrent/demos/distributeddistinct/Application.java
+++ b/demos/distributedistinct/src/main/java/com/datatorrent/demos/distributeddistinct/Application.java
@@ -23,7 +23,6 @@ import org.apache.hadoop.conf.Configuration;
 import com.datatorrent.api.DAG;
 import com.datatorrent.api.StreamingApplication;
 import com.datatorrent.api.annotation.ApplicationAnnotation;
-import com.datatorrent.lib.algo.UniqueCounterValue;
 import com.datatorrent.lib.algo.UniqueValueCount;
 import com.datatorrent.lib.io.ConsoleOutputOperator;
 import com.datatorrent.lib.stream.Counter;
@@ -61,10 +60,10 @@ public class Application implements StreamingApplication
     dag.addStream("Duplicates", valCount.output, dup.data);
     dag.addStream("Unverified", dup.out1, verifier.recIn);
     dag.addStream("EventCount", randGen.verport, verifier.trueIn);
-    dag.addStream("Verified", verifier.successPort, successcounter.data);
-    dag.addStream("Failed", verifier.failurePort, failurecounter.data);
-    dag.addStream("SuccessCount", successcounter.count, successOutput.input);
-    dag.addStream("FailedCount", failurecounter.count, failureOutput.input);
+    dag.addStream("Verified", verifier.successPort, successcounter.input);
+    dag.addStream("Failed", verifier.failurePort, failurecounter.input);
+    dag.addStream("SuccessCount", successcounter.output, successOutput.input);
+    dag.addStream("FailedCount", failurecounter.output, failureOutput.input);
     dag.addStream("Output", dup.out2, consOut.input);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9587b03e/demos/distributedistinct/src/main/java/com/datatorrent/demos/distributeddistinct/UniqueValueCountAppender.java
----------------------------------------------------------------------
diff --git a/demos/distributedistinct/src/main/java/com/datatorrent/demos/distributeddistinct/UniqueValueCountAppender.java b/demos/distributedistinct/src/main/java/com/datatorrent/demos/distributeddistinct/UniqueValueCountAppender.java
index e613e32..7c91f77 100644
--- a/demos/distributedistinct/src/main/java/com/datatorrent/demos/distributeddistinct/UniqueValueCountAppender.java
+++ b/demos/distributedistinct/src/main/java/com/datatorrent/demos/distributeddistinct/UniqueValueCountAppender.java
@@ -42,7 +42,6 @@ import com.datatorrent.lib.db.jdbc.JDBCLookupCacheBackedOperator;
 import com.datatorrent.api.Context;
 import com.datatorrent.api.DefaultPartition;
 import com.datatorrent.api.Partitioner;
-
 import com.datatorrent.netlet.util.DTThrowable;
 
 /**
@@ -91,7 +90,7 @@ public abstract class UniqueValueCountAppender<V> extends JDBCLookupCacheBackedO
   public void setup(Context.OperatorContext context)
   {
     super.setup(context);
-    LOGGER.debug("store properties {} {}", store.getDbDriver(), store.getDbUrl());
+    LOGGER.debug("store properties {} {}", store.getDatabaseDriver(), store.getDatabaseUrl());
     LOGGER.debug("table name {}", tableName);
     windowID = context.getValue(Context.OperatorContext.ACTIVATION_WINDOW_ID);
     try {
@@ -197,19 +196,9 @@ public abstract class UniqueValueCountAppender<V> extends JDBCLookupCacheBackedO
    * rollback, each partition will only clear the data that it is responsible for.
    */
   @Override
-  public Collection<com.datatorrent.api.Partitioner.Partition<UniqueValueCountAppender<V>>> definePartitions(Collection<com.datatorrent.api.Partitioner.Partition<UniqueValueCountAppender<V>>> partitions, int incrementalCapacity)
+  public Collection<com.datatorrent.api.Partitioner.Partition<UniqueValueCountAppender<V>>> definePartitions(Collection<com.datatorrent.api.Partitioner.Partition<UniqueValueCountAppender<V>>> partitions, PartitioningContext context)
   {
-    final int finalCapacity;
-
-    //In the case of parallel partitioning
-    if(incrementalCapacity != 0) {
-      finalCapacity = incrementalCapacity;
-    }
-    //Do normal partitioning
-    else {
-      finalCapacity = partitionCount;
-    }
-
+    final int finalCapacity = DefaultPartition.getRequiredPartitionCount(context, this.partitionCount);
     UniqueValueCountAppender<V> anOldOperator = partitions.iterator().next().getPartitionedInstance();
     partitions.clear();
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9587b03e/demos/distributedistinct/src/test/java/com/datatorrent/demos/distributeddistinct/DistributedDistinctTest.java
----------------------------------------------------------------------
diff --git a/demos/distributedistinct/src/test/java/com/datatorrent/demos/distributeddistinct/DistributedDistinctTest.java b/demos/distributedistinct/src/test/java/com/datatorrent/demos/distributeddistinct/DistributedDistinctTest.java
index f5acbd6..d32047a 100644
--- a/demos/distributedistinct/src/test/java/com/datatorrent/demos/distributeddistinct/DistributedDistinctTest.java
+++ b/demos/distributedistinct/src/test/java/com/datatorrent/demos/distributeddistinct/DistributedDistinctTest.java
@@ -192,8 +192,8 @@ public class DistributedDistinctTest
     attributes.put(DAG.APPLICATION_PATH, applicationPath);
     attributes.put(OperatorContext.ACTIVATION_WINDOW_ID, 0L);
     valueCounter.setTableName(TABLE_NAME);
-    valueCounter.getStore().setDbDriver(INMEM_DB_DRIVER);
-    valueCounter.getStore().setDbUrl(INMEM_DB_URL);
+    valueCounter.getStore().setDatabaseDriver(INMEM_DB_DRIVER);
+    valueCounter.getStore().setDatabaseUrl(INMEM_DB_URL);
     TestIdOperatorContext context = new OperatorContextTestHelper.TestIdOperatorContext(OPERATOR_ID, attributes);
     valueCounter.setup(context);
   }

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9587b03e/demos/distributedistinct/src/test/java/com/datatorrent/demos/distributeddistinct/StatefulUniqueCountTest.java
----------------------------------------------------------------------
diff --git a/demos/distributedistinct/src/test/java/com/datatorrent/demos/distributeddistinct/StatefulUniqueCountTest.java b/demos/distributedistinct/src/test/java/com/datatorrent/demos/distributeddistinct/StatefulUniqueCountTest.java
index 93ec636..55f1c8e 100644
--- a/demos/distributedistinct/src/test/java/com/datatorrent/demos/distributeddistinct/StatefulUniqueCountTest.java
+++ b/demos/distributedistinct/src/test/java/com/datatorrent/demos/distributeddistinct/StatefulUniqueCountTest.java
@@ -30,6 +30,7 @@ import org.junit.Test;
 
 import com.datatorrent.api.*;
 import com.datatorrent.api.Context.OperatorContext;
+import com.datatorrent.common.util.BaseOperator;
 import com.datatorrent.demos.distributeddistinct.IntegerUniqueValueCountAppender;
 
 import com.datatorrent.lib.algo.UniqueValueCount;
@@ -41,7 +42,7 @@ public class StatefulUniqueCountTest
   public static final String INMEM_DB_URL = "jdbc:hsqldb:mem:test;sql.syntax_mys=true";
   public static final String INMEM_DB_DRIVER = "org.hsqldb.jdbc.JDBCDriver";
   public static final String TABLE_NAME = "Test_Lookup_Cache";
-  
+
   static class KeyGen implements InputOperator
   {
 
@@ -193,7 +194,7 @@ public class StatefulUniqueCountTest
       dag.addStream("ResultsOut", uniqueOut, verifyTable.input);
     }
   }
-  
+
   @BeforeClass
   public static void setup(){
     try {

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9587b03e/demos/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pom.xml b/demos/pom.xml
index 123591f..97382ba 100644
--- a/demos/pom.xml
+++ b/demos/pom.xml
@@ -32,21 +32,6 @@
   <packaging>pom</packaging>
   <name>Apache Apex Malhar Demos</name>
 
-  <modules>
-    <module>machinedata</module>
-    <module>pi</module>
-    <module>twitter</module>
-    <module>yahoofinance</module>
-    <module>frauddetect</module>
-    <module>mobile</module>
-    <module>wordcount</module>
-    <module>mrmonitor</module>
-    <module>mroperator</module>
-    <module>uniquecount</module>
-    <module>r</module>
-    <module>echoserver</module>
-  </modules>
-
   <properties>
     <apex.core.version>3.2.0-incubating-SNAPSHOT</apex.core.version>
     <datatorrent.apppackage.classpath>lib/*.jar</datatorrent.apppackage.classpath>
@@ -177,8 +162,29 @@
       </plugins>
 	</build>
 	</profile>
+    <profile>
+      <id>all-modules</id>
+      <modules>
+        <module>distributedistinct</module>
+      </modules>
+    </profile>
   </profiles>
 
+  <modules>
+    <module>machinedata</module>
+    <module>pi</module>
+    <module>twitter</module>
+    <module>yahoofinance</module>
+    <module>frauddetect</module>
+    <module>mobile</module>
+    <module>wordcount</module>
+    <module>mrmonitor</module>
+    <module>mroperator</module>
+    <module>uniquecount</module>
+    <module>r</module>
+    <module>echoserver</module>
+  </modules>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.apex</groupId>


[84/98] [abbrv] incubator-apex-malhar git commit: Cleanup of web resources

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/malhar.css
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/malhar.css b/contrib/src/main/html/siteops/malhar.css
deleted file mode 100644
index b2f9a8b..0000000
--- a/contrib/src/main/html/siteops/malhar.css
+++ /dev/null
@@ -1,4564 +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.
- */
-.clearfix {
-  *zoom: 1;
-}
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.clearfix:after {
-  clear: both;
-}
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 30px;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-a:hover,
-a:active {
-  outline: 0;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  /* Responsive images (ensure images don't scale beyond their parents) */
-
-  max-width: 100%;
-  /* Part 1: Set a maxium relative to the parent */
-
-  width: auto\9;
-  /* IE7-8 need help adjusting responsive images */
-
-  height: auto;
-  /* Part 2: Scale the height according to the width, otherwise you get stretching */
-
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-#map_canvas img,
-.google-maps img {
-  max-width: none;
-}
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button;
-  cursor: pointer;
-}
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
-  cursor: pointer;
-}
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-@media print {
-  * {
-    text-shadow: none !important;
-    color: #000 !important;
-    background: transparent !important;
-    box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  .ir a:after,
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  @page  {
-    margin: 0.5cm;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-}
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 20px;
-  color: #333333;
-  background-color: #ffffff;
-}
-a {
-  color: #0088cc;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: #005580;
-  text-decoration: underline;
-}
-.img-rounded {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.img-polaroid {
-  padding: 4px;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-.img-circle {
-  -webkit-border-radius: 500px;
-  -moz-border-radius: 500px;
-  border-radius: 500px;
-}
-/*@import "bootstrap/grid.less";*/
-/*@import "bootstrap/layouts.less";*/
-p {
-  margin: 0 0 10px;
-}
-.lead {
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  font-weight: 200;
-  line-height: 30px;
-}
-small {
-  font-size: 85%;
-}
-strong {
-  font-weight: bold;
-}
-em {
-  font-style: italic;
-}
-cite {
-  font-style: normal;
-}
-.muted {
-  color: #999999;
-}
-a.muted:hover,
-a.muted:focus {
-  color: #808080;
-}
-.text-warning {
-  color: #c09853;
-}
-a.text-warning:hover,
-a.text-warning:focus {
-  color: #a47e3c;
-}
-.text-error {
-  color: #b94a48;
-}
-a.text-error:hover,
-a.text-error:focus {
-  color: #953b39;
-}
-.text-info {
-  color: #3a87ad;
-}
-a.text-info:hover,
-a.text-info:focus {
-  color: #2d6987;
-}
-.text-success {
-  color: #468847;
-}
-a.text-success:hover,
-a.text-success:focus {
-  color: #356635;
-}
-.text-left {
-  text-align: left;
-}
-.text-right {
-  text-align: right;
-}
-.text-center {
-  text-align: center;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 10px 0;
-  font-family: inherit;
-  font-weight: bold;
-  line-height: 20px;
-  color: inherit;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  line-height: 1;
-  color: #999999;
-}
-h1,
-h2,
-h3 {
-  line-height: 40px;
-}
-h1 {
-  font-size: 35.75px;
-}
-h2 {
-  font-size: 29.25px;
-}
-h3 {
-  font-size: 22.75px;
-}
-h4 {
-  font-size: 16.25px;
-}
-h5 {
-  font-size: 13px;
-}
-h6 {
-  font-size: 11.049999999999999px;
-}
-h1 small {
-  font-size: 22.75px;
-}
-h2 small {
-  font-size: 16.25px;
-}
-h3 small {
-  font-size: 13px;
-}
-h4 small {
-  font-size: 13px;
-}
-.page-header {
-  padding-bottom: 9px;
-  margin: 20px 0 30px;
-  border-bottom: 1px solid #eeeeee;
-}
-ul,
-ol {
-  padding: 0;
-  margin: 0 0 10px 25px;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-li {
-  line-height: 20px;
-}
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-ul.inline,
-ol.inline {
-  margin-left: 0;
-  list-style: none;
-}
-ul.inline > li,
-ol.inline > li {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding-left: 5px;
-  padding-right: 5px;
-}
-dl {
-  margin-bottom: 20px;
-}
-dt,
-dd {
-  line-height: 20px;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 10px;
-}
-.dl-horizontal {
-  *zoom: 1;
-}
-.dl-horizontal:before,
-.dl-horizontal:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.dl-horizontal:after {
-  clear: both;
-}
-.dl-horizontal dt {
-  float: left;
-  width: 160px;
-  clear: left;
-  text-align: right;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.dl-horizontal dd {
-  margin-left: 180px;
-}
-hr {
-  margin: 20px 0;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-  border-bottom: 1px solid #ffffff;
-}
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #999999;
-}
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 20px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p {
-  margin-bottom: 0;
-  font-size: 16.25px;
-  font-weight: 300;
-  line-height: 1.25;
-}
-blockquote small {
-  display: block;
-  line-height: 20px;
-  color: #999999;
-}
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-blockquote.pull-right {
-  float: right;
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-blockquote.pull-right small:before {
-  content: '';
-}
-blockquote.pull-right small:after {
-  content: '\00A0 \2014';
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  display: block;
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 20px;
-}
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-  font-size: 11px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-code {
-  padding: 2px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-  white-space: nowrap;
-}
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 12px;
-  line-height: 20px;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-pre.prettyprint {
-  margin-bottom: 20px;
-}
-pre code {
-  padding: 0;
-  color: inherit;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border: 0;
-}
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-form {
-  margin: 0 0 20px;
-}
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  line-height: 40px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-legend small {
-  font-size: 15px;
-  color: #999999;
-}
-label,
-input,
-button,
-select,
-textarea {
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 20px;
-}
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-label {
-  display: block;
-  margin-bottom: 5px;
-}
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  display: inline-block;
-  height: 20px;
-  padding: 4px 6px;
-  margin-bottom: 10px;
-  font-size: 13px;
-  line-height: 20px;
-  color: #555555;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  vertical-align: middle;
-}
-input,
-textarea,
-.uneditable-input {
-  width: 206px;
-}
-textarea {
-  height: auto;
-}
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear .2s, box-shadow linear .2s;
-  -moz-transition: border linear .2s, box-shadow linear .2s;
-  -o-transition: border linear .2s, box-shadow linear .2s;
-  transition: border linear .2s, box-shadow linear .2s;
-}
-textarea:focus,
-input[type="text"]:focus,
-input[type="password"]:focus,
-input[type="datetime"]:focus,
-input[type="datetime-local"]:focus,
-input[type="date"]:focus,
-input[type="month"]:focus,
-input[type="time"]:focus,
-input[type="week"]:focus,
-input[type="number"]:focus,
-input[type="email"]:focus,
-input[type="url"]:focus,
-input[type="search"]:focus,
-input[type="tel"]:focus,
-input[type="color"]:focus,
-.uneditable-input:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-9 */
-
-  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-}
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  *margin-top: 0;
-  /* IE7 */
-
-  margin-top: 1px \9;
-  /* IE8-9 */
-
-  line-height: normal;
-}
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
-  width: auto;
-}
-select,
-input[type="file"] {
-  height: 30px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 30px;
-}
-select {
-  width: 220px;
-  border: 1px solid #cccccc;
-  background-color: #ffffff;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.uneditable-input,
-.uneditable-textarea {
-  color: #999999;
-  background-color: #fcfcfc;
-  border-color: #cccccc;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  cursor: not-allowed;
-}
-.uneditable-input {
-  overflow: hidden;
-  white-space: nowrap;
-}
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-input:-moz-placeholder,
-textarea:-moz-placeholder {
-  color: #999999;
-}
-input:-ms-input-placeholder,
-textarea:-ms-input-placeholder {
-  color: #999999;
-}
-input::-webkit-input-placeholder,
-textarea::-webkit-input-placeholder {
-  color: #999999;
-}
-.radio,
-.checkbox {
-  min-height: 20px;
-  padding-left: 20px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-.input-mini {
-  width: 60px;
-}
-.input-small {
-  width: 90px;
-}
-.input-medium {
-  width: 150px;
-}
-.input-large {
-  width: 210px;
-}
-.input-xlarge {
-  width: 270px;
-}
-.input-xxlarge {
-  width: 530px;
-}
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
-  display: inline-block;
-}
-input,
-textarea,
-.uneditable-input {
-  margin-left: 0;
-}
-.controls-row [class*="span"] + [class*="span"] {
-  margin-left: 20px;
-}
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 926px;
-}
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 846px;
-}
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 766px;
-}
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 686px;
-}
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 606px;
-}
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 526px;
-}
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 446px;
-}
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 366px;
-}
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 286px;
-}
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 206px;
-}
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 126px;
-}
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 46px;
-}
-.controls-row {
-  *zoom: 1;
-}
-.controls-row:before,
-.controls-row:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.controls-row:after {
-  clear: both;
-}
-.controls-row [class*="span"],
-.row-fluid .controls-row [class*="span"] {
-  float: left;
-}
-.controls-row .checkbox[class*="span"],
-.controls-row .radio[class*="span"] {
-  padding-top: 5px;
-}
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-.control-group.warning .control-label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-.control-group.warning .checkbox,
-.control-group.warning .radio,
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-}
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  border-color: #c09853;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-}
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-.control-group.error .control-label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-.control-group.error .checkbox,
-.control-group.error .radio,
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-}
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  border-color: #b94a48;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-}
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-.control-group.success .control-label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-.control-group.success .checkbox,
-.control-group.success .radio,
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-}
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  border-color: #468847;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-}
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-.control-group.info .control-label,
-.control-group.info .help-block,
-.control-group.info .help-inline {
-  color: #3a87ad;
-}
-.control-group.info .checkbox,
-.control-group.info .radio,
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  color: #3a87ad;
-}
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  border-color: #3a87ad;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.info input:focus,
-.control-group.info select:focus,
-.control-group.info textarea:focus {
-  border-color: #2d6987;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-}
-.control-group.info .input-prepend .add-on,
-.control-group.info .input-append .add-on {
-  color: #3a87ad;
-  background-color: #d9edf7;
-  border-color: #3a87ad;
-}
-input:focus:invalid,
-textarea:focus:invalid,
-select:focus:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-input:focus:invalid:focus,
-textarea:focus:invalid:focus,
-select:focus:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-  -moz-box-shadow: 0 0 6px #f8b9b7;
-  box-shadow: 0 0 6px #f8b9b7;
-}
-.form-actions {
-  padding: 19px 20px 20px;
-  margin-top: 20px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #e5e5e5;
-  *zoom: 1;
-}
-.form-actions:before,
-.form-actions:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.form-actions:after {
-  clear: both;
-}
-.help-block,
-.help-inline {
-  color: #595959;
-}
-.help-block {
-  display: block;
-  margin-bottom: 10px;
-}
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  vertical-align: middle;
-  padding-left: 5px;
-}
-.input-append,
-.input-prepend {
-  display: inline-block;
-  margin-bottom: 10px;
-  vertical-align: middle;
-  font-size: 0;
-  white-space: nowrap;
-}
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input,
-.input-append .dropdown-menu,
-.input-prepend .dropdown-menu,
-.input-append .popover,
-.input-prepend .popover {
-  font-size: 13px;
-}
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input {
-  position: relative;
-  margin-bottom: 0;
-  *margin-left: 0;
-  vertical-align: top;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-append input:focus,
-.input-prepend input:focus,
-.input-append select:focus,
-.input-prepend select:focus,
-.input-append .uneditable-input:focus,
-.input-prepend .uneditable-input:focus {
-  z-index: 2;
-}
-.input-append .add-on,
-.input-prepend .add-on {
-  display: inline-block;
-  width: auto;
-  height: 20px;
-  min-width: 16px;
-  padding: 4px 5px;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 20px;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-}
-.input-append .add-on,
-.input-prepend .add-on,
-.input-append .btn,
-.input-prepend .btn,
-.input-append .btn-group > .dropdown-toggle,
-.input-prepend .btn-group > .dropdown-toggle {
-  vertical-align: top;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-append .active,
-.input-prepend .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-.input-prepend .add-on,
-.input-prepend .btn {
-  margin-right: -1px;
-}
-.input-prepend .add-on:first-child,
-.input-prepend .btn:first-child {
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-append input,
-.input-append select,
-.input-append .uneditable-input {
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-append input + .btn-group .btn:last-child,
-.input-append select + .btn-group .btn:last-child,
-.input-append .uneditable-input + .btn-group .btn:last-child {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-append .add-on,
-.input-append .btn,
-.input-append .btn-group {
-  margin-left: -1px;
-}
-.input-append .add-on:last-child,
-.input-append .btn:last-child,
-.input-append .btn-group:last-child > .dropdown-toggle {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append input,
-.input-prepend.input-append select,
-.input-prepend.input-append .uneditable-input {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-prepend.input-append input + .btn-group .btn,
-.input-prepend.input-append select + .btn-group .btn,
-.input-prepend.input-append .uneditable-input + .btn-group .btn {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append .add-on:first-child,
-.input-prepend.input-append .btn:first-child {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-prepend.input-append .add-on:last-child,
-.input-prepend.input-append .btn:last-child {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append .btn-group:first-child {
-  margin-left: 0;
-}
-input.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9;
-  /* IE7-8 doesn't have border-radius, so don't indent the padding */
-
-  margin-bottom: 0;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-/* Allow for input prepend/append in search forms */
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.form-search .input-append .search-query {
-  -webkit-border-radius: 14px 0 0 14px;
-  -moz-border-radius: 14px 0 0 14px;
-  border-radius: 14px 0 0 14px;
-}
-.form-search .input-append .btn {
-  -webkit-border-radius: 0 14px 14px 0;
-  -moz-border-radius: 0 14px 14px 0;
-  border-radius: 0 14px 14px 0;
-}
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0 14px 14px 0;
-  -moz-border-radius: 0 14px 14px 0;
-  border-radius: 0 14px 14px 0;
-}
-.form-search .input-prepend .btn {
-  -webkit-border-radius: 14px 0 0 14px;
-  -moz-border-radius: 14px 0 0 14px;
-  border-radius: 14px 0 0 14px;
-}
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input,
-.form-search .input-prepend,
-.form-inline .input-prepend,
-.form-horizontal .input-prepend,
-.form-search .input-append,
-.form-inline .input-append,
-.form-horizontal .input-append {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .hide,
-.form-inline .hide,
-.form-horizontal .hide {
-  display: none;
-}
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
-  display: inline-block;
-}
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-.control-group {
-  margin-bottom: 10px;
-}
-legend + .control-group {
-  margin-top: 20px;
-  -webkit-margin-top-collapse: separate;
-}
-.form-horizontal .control-group {
-  margin-bottom: 20px;
-  *zoom: 1;
-}
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.form-horizontal .control-group:after {
-  clear: both;
-}
-.form-horizontal .control-label {
-  float: left;
-  width: 160px;
-  padding-top: 5px;
-  text-align: right;
-}
-.form-horizontal .controls {
-  *display: inline-block;
-  *padding-left: 20px;
-  margin-left: 180px;
-  *margin-left: 0;
-}
-.form-horizontal .controls:first-child {
-  *padding-left: 180px;
-}
-.form-horizontal .help-block {
-  margin-bottom: 0;
-}
-.form-horizontal input + .help-block,
-.form-horizontal select + .help-block,
-.form-horizontal textarea + .help-block,
-.form-horizontal .uneditable-input + .help-block,
-.form-horizontal .input-prepend + .help-block,
-.form-horizontal .input-append + .help-block {
-  margin-top: 10px;
-}
-.form-horizontal .form-actions {
-  padding-left: 180px;
-}
-
-/*@import "bootstrap/sprites.less";*/
-.dropup,
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top: 4px solid #000000;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  content: "";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 20px;
-  color: #333333;
-  white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
-  text-decoration: none;
-  color: #ffffff;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  outline: 0;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #999999;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  cursor: default;
-}
-.open {
-  *z-index: 1000;
-}
-.open > .dropdown-menu {
-  display: block;
-}
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid #000000;
-  content: "";
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-.dropdown-submenu {
-  position: relative;
-}
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  -webkit-border-radius: 0 6px 6px 6px;
-  -moz-border-radius: 0 6px 6px 6px;
-  border-radius: 0 6px 6px 6px;
-}
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-}
-.dropup .dropdown-submenu > .dropdown-menu {
-  top: auto;
-  bottom: 0;
-  margin-top: 0;
-  margin-bottom: -2px;
-  -webkit-border-radius: 5px 5px 5px 0;
-  -moz-border-radius: 5px 5px 5px 0;
-  border-radius: 5px 5px 5px 0;
-}
-.dropdown-submenu > a:after {
-  display: block;
-  content: " ";
-  float: right;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  border-left-color: #cccccc;
-  margin-top: 5px;
-  margin-right: -10px;
-}
-.dropdown-submenu:hover > a:after {
-  border-left-color: #ffffff;
-}
-.dropdown-submenu.pull-left {
-  float: none;
-}
-.dropdown-submenu.pull-left > .dropdown-menu {
-  left: -100%;
-  margin-left: 10px;
-  -webkit-border-radius: 6px 0 6px 6px;
-  -moz-border-radius: 6px 0 6px 6px;
-  border-radius: 6px 0 6px 6px;
-}
-.dropdown .dropdown-menu .nav-header {
-  padding-left: 20px;
-  padding-right: 20px;
-}
-.typeahead {
-  z-index: 1051;
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.well-large {
-  padding: 24px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.well-small {
-  padding: 9px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-/*@import "bootstrap/component-animations.less";*/
-/*@import "bootstrap/close.less";*/
-.btn {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding: 4px 12px;
-  margin-bottom: 0;
-  font-size: 13px;
-  line-height: 20px;
-  text-align: center;
-  vertical-align: middle;
-  cursor: pointer;
-  color: #333333;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  background-color: #f5f5f5;
-  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
-  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e6e6e6;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  border: 1px solid #cccccc;
-  *border: 0;
-  border-bottom-color: #b3b3b3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  *margin-left: .3em;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn:hover,
-.btn:focus,
-.btn:active,
-.btn.active,
-.btn.disabled,
-.btn[disabled] {
-  color: #333333;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-}
-.btn:active,
-.btn.active {
-  background-color: #cccccc \9;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover,
-.btn:focus {
-  color: #333333;
-  text-decoration: none;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active,
-.btn:active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 11px 19px;
-  font-size: 16.25px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.btn-large [class^="icon-"],
-.btn-large [class*=" icon-"] {
-  margin-top: 4px;
-}
-.btn-small {
-  padding: 2px 10px;
-  font-size: 11.049999999999999px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.btn-small [class^="icon-"],
-.btn-small [class*=" icon-"] {
-  margin-top: 0;
-}
-.btn-mini [class^="icon-"],
-.btn-mini [class*=" icon-"] {
-  margin-top: -1px;
-}
-.btn-mini {
-  padding: 0 6px;
-  font-size: 9.75px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn-primary {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #006dcc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #0044cc;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  color: #ffffff;
-  background-color: #0044cc;
-  *background-color: #003bb3;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #003399 \9;
-}
-.btn-warning {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #f89406;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  color: #ffffff;
-  background-color: #f89406;
-  *background-color: #df8505;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #bd362f;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  color: #ffffff;
-  background-color: #bd362f;
-  *background-color: #a9302a;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(to bottom, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #51a351;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  color: #ffffff;
-  background-color: #51a351;
-  *background-color: #499249;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #2f96b4;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  color: #ffffff;
-  background-color: #2f96b4;
-  *background-color: #2a85a0;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-.btn-inverse {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #363636;
-  background-image: -moz-linear-gradient(top, #444444, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
-  background-image: -webkit-linear-gradient(top, #444444, #222222);
-  background-image: -o-linear-gradient(top, #444444, #222222);
-  background-image: linear-gradient(to bottom, #444444, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #222222;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-inverse:hover,
-.btn-inverse:focus,
-.btn-inverse:active,
-.btn-inverse.active,
-.btn-inverse.disabled,
-.btn-inverse[disabled] {
-  color: #ffffff;
-  background-color: #222222;
-  *background-color: #151515;
-}
-.btn-inverse:active,
-.btn-inverse.active {
-  background-color: #080808 \9;
-}
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.btn-large,
-input[type="submit"].btn.btn-large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.btn-small,
-input[type="submit"].btn.btn-small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn.btn-mini,
-input[type="submit"].btn.btn-mini {
-  *padding-top: 1px;
-  *padding-bottom: 1px;
-}
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
-  background-color: transparent;
-  background-image: none;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-link {
-  border-color: transparent;
-  cursor: pointer;
-  color: #0088cc;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: #005580;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-.btn-link[disabled]:focus {
-  color: #333333;
-  text-decoration: none;
-}
-.btn-group {
-  position: relative;
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  font-size: 0;
-  vertical-align: middle;
-  white-space: nowrap;
-  *margin-left: .3em;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  font-size: 0;
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.btn-toolbar > .btn + .btn,
-.btn-toolbar > .btn-group + .btn,
-.btn-toolbar > .btn + .btn-group {
-  margin-left: 5px;
-}
-.btn-group > .btn {
-  position: relative;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group > .btn + .btn {
-  margin-left: -1px;
-}
-.btn-group > .btn,
-.btn-group > .dropdown-menu,
-.btn-group > .popover {
-  font-size: 13px;
-}
-.btn-group > .btn-mini {
-  font-size: 9.75px;
-}
-.btn-group > .btn-small {
-  font-size: 11.049999999999999px;
-}
-.btn-group > .btn-large {
-  font-size: 16.25px;
-}
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group > .btn + .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group > .btn-mini + .dropdown-toggle {
-  padding-left: 5px;
-  padding-right: 5px;
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-.btn-group > .btn-small + .dropdown-toggle {
-  *padding-top: 5px;
-  *padding-bottom: 4px;
-}
-.btn-group > .btn-large + .dropdown-toggle {
-  padding-left: 12px;
-  padding-right: 12px;
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn-group.open .btn.dropdown-toggle {
-  background-color: #e6e6e6;
-}
-.btn-group.open .btn-primary.dropdown-toggle {
-  background-color: #0044cc;
-}
-.btn-group.open .btn-warning.dropdown-toggle {
-  background-color: #f89406;
-}
-.btn-group.open .btn-danger.dropdown-toggle {
-  background-color: #bd362f;
-}
-.btn-group.open .btn-success.dropdown-toggle {
-  background-color: #51a351;
-}
-.btn-group.open .btn-info.dropdown-toggle {
-  background-color: #2f96b4;
-}
-.btn-group.open .btn-inverse.dropdown-toggle {
-  background-color: #222222;
-}
-.btn .caret {
-  margin-top: 8px;
-  margin-left: 0;
-}
-.btn-large .caret {
-  margin-top: 6px;
-}
-.btn-large .caret {
-  border-left-width: 5px;
-  border-right-width: 5px;
-  border-top-width: 5px;
-}
-.btn-mini .caret,
-.btn-small .caret {
-  margin-top: 8px;
-}
-.dropup .btn-large .caret {
-  border-bottom-width: 5px;
-}
-.btn-primary .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret,
-.btn-inverse .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.btn-group-vertical {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group-vertical > .btn {
-  display: block;
-  float: none;
-  max-width: 100%;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group-vertical > .btn + .btn {
-  margin-left: 0;
-  margin-top: -1px;
-}
-.btn-group-vertical > .btn:first-child {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.btn-group-vertical > .btn:last-child {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.btn-group-vertical > .btn-large:first-child {
-  -webkit-border-radius: 6px 6px 0 0;
-  -moz-border-radius: 6px 6px 0 0;
-  border-radius: 6px 6px 0 0;
-}
-.btn-group-vertical > .btn-large:last-child {
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-}
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 20px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.alert,
-.alert h4 {
-  color: #c09853;
-}
-.alert h4 {
-  margin: 0;
-}
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 20px;
-}
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-  color: #468847;
-}
-.alert-success h4 {
-  color: #468847;
-}
-.alert-danger,
-.alert-error {
-  background-color: #f2dede;
-  border-color: #eed3d7;
-  color: #b94a48;
-}
-.alert-danger h4,
-.alert-error h4 {
-  color: #b94a48;
-}
-.alert-info {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-  color: #3a87ad;
-}
-.alert-info h4 {
-  color: #3a87ad;
-}
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
-.nav {
-  margin-left: 0;
-  margin-bottom: 20px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav > li > a > img {
-  max-width: none;
-}
-.nav > .pull-right {
-  float: right;
-}
-.nav-header {
-  display: block;
-  padding: 3px 15px;
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #999999;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  text-transform: uppercase;
-}
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list {
-  padding-left: 15px;
-  padding-right: 15px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-.nav-list > .active > a,
-.nav-list > .active > a:hover,
-.nav-list > .active > a:focus {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #0088cc;
-}
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  margin-right: 2px;
-}
-.nav-list .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: 20px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover,
-.nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover,
-.nav-pills > .active > a:focus {
-  color: #ffffff;
-  background-color: #0088cc;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover,
-.nav-tabs.nav-stacked > li > a:focus {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu {
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.nav .dropdown-toggle .caret {
-  border-top-color: #0088cc;
-  border-bottom-color: #0088cc;
-  margin-top: 6px;
-}
-.nav .dropdown-toggle:hover .caret,
-.nav .dropdown-toggle:focus .caret {
-  border-top-color: #005580;
-  border-bottom-color: #005580;
-}
-/* move down carets for tabs */
-.nav-tabs .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-.nav .active .dropdown-toggle .caret {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.nav-tabs .active .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-.nav > .dropdown.active > a:hover,
-.nav > .dropdown.active > a:focus {
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover,
-.nav > li.dropdown.open.active > a:focus {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret,
-.nav li.dropdown.open a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.tabs-stacked .open > a:hover,
-.tabs-stacked .open > a:focus {
-  border-color: #999999;
-}
-.tabbable {
-  *zoom: 1;
-}
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.tabbable:after {
-  clear: both;
-}
-.tab-content {
-  overflow: auto;
-}
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below > .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.tabs-below > .nav-tabs > li > a:hover,
-.tabs-below > .nav-tabs > li > a:focus {
-  border-bottom-color: transparent;
-  border-top-color: #ddd;
-}
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover,
-.tabs-below > .nav-tabs > .active > a:focus {
-  border-color: transparent #ddd #ddd #ddd;
-}
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.tabs-left > .nav-tabs > li > a:hover,
-.tabs-left > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover,
-.tabs-left > .nav-tabs .active > a:focus {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.tabs-right > .nav-tabs > li > a:hover,
-.tabs-right > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover,
-.tabs-right > .nav-tabs .active > a:focus {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-.nav > .disabled > a {
-  color: #999999;
-}
-.nav > .disabled > a:hover,
-.nav > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  cursor: default;
-}
-.navbar {
-  overflow: visible;
-  margin-bottom: 20px;
-  *position: relative;
-  *z-index: 2;
-}
-.navbar-inner {
-  min-height: 40px;
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #fafafa;
-  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
-  border: 1px solid #d4d4d4;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  *zoom: 1;
-}
-.navbar-inner:before,
-.navbar-inner:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.navbar-inner:after {
-  clear: both;
-}
-.navbar .container {
-  width: auto;
-}
-.nav-collapse.collapse {
-  height: auto;
-  overflow: visible;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 10px 20px 10px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  color: #777777;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.navbar .brand:hover,
-.navbar .brand:focus {
-  text-decoration: none;
-}
-.navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #777777;
-}
-.navbar-link {
-  color: #777777;
-}
-.navbar-link:hover,
-.navbar-link:focus {
-  color: #333333;
-}
-.navbar .divider-vertical {
-  height: 40px;
-  margin: 0 9px;
-  border-left: 1px solid #f2f2f2;
-  border-right: 1px solid #ffffff;
-}
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn,
-.navbar .input-prepend .btn,
-.navbar .input-append .btn,
-.navbar .input-prepend .btn-group,
-.navbar .input-append .btn-group {
-  margin-top: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .btn {
-  display: inline-block;
-  margin-bottom: 0;
-}
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-form .input-append,
-.navbar-form .input-prepend {
-  margin-top: 5px;
-  white-space: nowrap;
-}
-.navbar-form .input-append input,
-.navbar-form .input-prepend input {
-  margin-top: 0;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  margin-bottom: 0;
-  padding: 4px 14px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-.navbar-static-top {
-  position: static;
-  margin-bottom: 0;
-}
-.navbar-static-top .navbar-inner {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  margin-bottom: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom .navbar-inner {
-  border-width: 1px 0 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-.navbar-fixed-top {
-  top: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1);
-  -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1);
-  box-shadow: 0 1px 10px rgba(0,0,0,.1);
-}
-.navbar-fixed-bottom {
-  bottom: 0;
-}
-.navbar-fixed-bottom .navbar-inner {
-  -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-  -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-  box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-  margin-right: 0;
-}
-.navbar .nav > li {
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 15px 10px;
-  color: #777777;
-  text-decoration: none;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-.navbar .nav > li > a:focus,
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #333333;
-  text-decoration: none;
-}
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  color: #555555;
-  text-decoration: none;
-  background-color: #e5e5e5;
-  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-  -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-}
-.navbar .btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #ededed;
-  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
-  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
-  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e5e5e5;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-}
-.navbar .btn-navbar:hover,
-.navbar .btn-navbar:focus,
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active,
-.navbar .btn-navbar.disabled,
-.navbar .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #e5e5e5;
-  *background-color: #d9d9d9;
-}
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active {
-  background-color: #cccccc \9;
-}
-.navbar .btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.navbar .nav > li > .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .nav > li > .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
-  border-top: 7px solid #ccc;
-  border-top-color: rgba(0, 0, 0, 0.2);
-  border-bottom: 0;
-  bottom: -7px;
-  top: auto;
-}
-.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
-  border-top: 6px solid #ffffff;
-  border-bottom: 0;
-  bottom: -6px;
-  top: auto;
-}
-.navbar .nav li.dropdown > a:hover .caret,
-.navbar .nav li.dropdown > a:focus .caret {
-  border-top-color: #333333;
-  border-bottom-color: #333333;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: #e5e5e5;
-  color: #555555;
-}
-.navbar .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #777777;
-  border-bottom-color: #777777;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-.navbar .pull-right > li > .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right {
-  left: auto;
-  right: 0;
-}
-.navbar .pull-right > li > .dropdown-menu:before,
-.navbar .nav > li > .dropdown-menu.pull-right:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .pull-right > li > .dropdown-menu:after,
-.navbar .nav > li > .dropdown-menu.pull-right:after {
-  left: auto;
-  right: 13px;
-}
-.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
-  left: auto;
-  right: 100%;
-  margin-left: 0;
-  margin-right: -1px;
-  -webkit-border-radius: 6px 0 6px 6px;
-  -moz-border-radius: 6px 0 6px 6px;
-  border-radius: 6px 0 6px 6px;
-}
-.navbar-inverse .navbar-inner {
-  background-color: #1b1b1b;
-  background-image: -moz-linear-gradient(top, #222222, #111111);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
-  background-image: -webkit-linear-gradient(top, #222222, #111111);
-  background-image: -o-linear-gradient(top, #222222, #111111);
-  background-image: linear-gradient(to bottom, #222222, #111111);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
-  border-color: #252525;
-}
-.navbar-inverse .brand,
-.navbar-inverse .nav > li > a {
-  color: #999999;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar-inverse .brand:hover,
-.navbar-inverse .nav > li > a:hover,
-.navbar-inverse .brand:focus,
-.navbar-inverse .nav > li > a:focus {
-  color: #ffffff;
-}
-.navbar-inverse .brand {
-  color: #999999;
-}
-.navbar-inverse .navbar-text {
-  color: #999999;
-}
-.navbar-inverse .nav > li > a:focus,
-.navbar-inverse .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-}
-.navbar-inverse .nav .active > a,
-.navbar-inverse .nav .active > a:hover,
-.navbar-inverse .nav .active > a:focus {
-  color: #ffffff;
-  background-color: #111111;
-}
-.navbar-inverse .navbar-link {
-  color: #999999;
-}
-.navbar-inverse .navbar-link:hover,
-.navbar-inverse .navbar-link:focus {
-  color: #ffffff;
-}
-.navbar-inverse .divider-vertical {
-  border-left-color: #111111;
-  border-right-color: #222222;
-}
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: #111111;
-  color: #ffffff;
-}
-.navbar-inverse .nav li.dropdown > a:hover .caret,
-.navbar-inverse .nav li.dropdown > a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #999999;
-  border-bottom-color: #999999;
-}
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar-inverse .navbar-search .search-query {
-  color: #ffffff;
-  background-color: #515151;
-  border-color: #111111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-inverse .navbar-search .search-query:-moz-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query:focus,
-.navbar-inverse .navbar-search .search-query.focused {
-  padding: 5px 15px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-inverse .btn-navbar {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e0e0e;
-  background-image: -moz-linear-gradient(top, #151515, #040404);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
-  background-image: -webkit-linear-gradient(top, #151515, #040404);
-  background-image: -o-linear-gradient(top, #151515, #040404);
-  background-image: linear-gradient(to bottom, #151515, #040404);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
-  border-color: #040404 #040404 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #040404;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.navbar-inverse .btn-navbar:hover,
-.navbar-inverse .btn-navbar:focus,
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active,
-.navbar-inverse .btn-navbar.disabled,
-.navbar-inverse .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #040404;
-  *background-color: #000000;
-}
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active {
-  background-color: #000000 \9;
-}
-/*@import "bootstrap/breadcrumbs.less";*/
-/*@import "bootstrap/pagination.less";*/
-/*@import "bootstrap/pager.less";*/
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-}
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.modal {
-  position: fixed;
-  top: 10%;
-  left: 50%;
-  z-index: 1050;
-  width: 560px;
-  margin-left: -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  /* IE6-7 */
-
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-  outline: none;
-}
-.modal.fade {
-  -webkit-transition: opacity .3s linear, top .3s ease-out;
-  -moz-transition: opacity .3s linear, top .3s ease-out;
-  -o-transition: opacity .3s linear, top .3s ease-out;
-  transition: opacity .3s linear, top .3s ease-out;
-  top: -25%;
-}
-.modal.fade.in {
-  top: 10%;
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-.modal-header .close {
-  margin-top: 2px;
-}
-.modal-header h3 {
-  margin: 0;
-  line-height: 30px;
-}
-.modal-body {
-  position: relative;
-  overflow-y: auto;
-  max-height: 400px;
-  padding: 15px;
-}
-.modal-form {
-  margin-bottom: 0;
-}
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  text-align: right;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.modal-footer:after {
-  clear: both;
-}
-.modal-footer .btn + .btn {
-  margin-left: 5px;
-  margin-bottom: 0;
-}
-.modal-footer .btn-group .btn + .btn {
-  margin-left: -1px;
-}
-.modal-footer .btn-block + .btn-block {
-  margin-left: 0;
-}
-.tooltip {
-  position: absolute;
-  z-index: 1030;
-  display: block;
-  visibility: visible;
-  font-size: 11px;
-  line-height: 1.4;
-  opacity: 0;
-  filter: alpha(opacity=0);
-}
-.tooltip.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.tooltip.top {
-  margin-top: -3px;
-  padding: 5px 0;
-}
-.tooltip.right {
-  margin-left: 3px;
-  padding: 0 5px;
-}
-.tooltip.bottom {
-  margin-top: 3px;
-  padding: 5px 0;
-}
-.tooltip.left {
-  margin-left: -3px;
-  padding: 0 5px;
-}
-.tooltip-inner {
-  max-width: 200px;
-  padding: 8px;
-  color: #ffffff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000000;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-width: 5px 5px 0;
-  border-top-color: #000000;
-}
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-width: 5px 5px 5px 0;
-  border-right-color: #000000;
-}
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-width: 5px 0 5px 5px;
-  border-left-color: #000000;
-}
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-width: 0 5px 5px;
-  border-bottom-color: #000000;
-}
-/*@import "bootstrap/popovers.less";*/
-/*@import "bootstrap/thumbnails.less";*/
-/*@import "bootstrap/media.less";*/
-/*@import "bootstrap/labels-badges.less";*/
-/*@import "bootstrap/progress-bars.less";*/
-/*@import "bootstrap/accordion.less";*/
-/*@import "bootstrap/carousel.less";*/
-/*@import "bootstrap/hero-unit.less";*/
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-.invisible {
-  visibility: hidden;
-}
-.affix {
-  position: fixed;
-}
-/* http://meyerweb.com/eric/tools/css/reset/ 
-   v2.0 | 20110126
-   License: none (public domain)
-*/
-html,
-body,
-div,
-span,
-applet,
-object,
-iframe,
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-p,
-blockquote,
-pre,
-a,
-abbr,
-acronym,
-address,
-big,
-cite,
-code,
-del,
-dfn,
-em,
-img,
-ins,
-kbd,
-q,
-s,
-samp,
-small,
-strike,
-strong,
-sub,
-sup,
-tt,
-var,
-b,
-u,
-i,
-center,
-dl,
-dt,
-dd,
-ol,
-ul,
-li,
-fieldset,
-form,
-label,
-legend,
-table,
-caption,
-tbody,
-tfoot,
-thead,
-tr,
-th,
-td,
-article,
-aside,
-canvas,
-details,
-embed,
-figure,
-figcaption,
-footer,
-header,
-hgroup,
-menu,
-nav,
-output,
-ruby,
-section,
-summary,
-time,
-mark,
-audio,
-video {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-size: 100%;
-  font: inherit;
-  vertical-align: baseline;
-}
-/* HTML5 display-role reset for older browsers */
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-menu,
-nav,
-section {
-  display: block;
-}
-body {
-  line-height: 1;
-}
-ol,
-ul {
-  list-style: none;
-}
-blockquote,
-q {
-  quotes: none;
-}
-blockquote:before,
-blockquote:after,
-q:before,
-q:after {
-  content: '';
-  content: none;
-}
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-label {
-  line-height: 1.8em;
-}
-html,
-body,
-div,
-span,
-applet,
-object,
-iframe,
-p,
-blockquote,
-pre,
-a,
-abbr,
-acronym,
-address,
-big,
-cite,
-code,
-del,
-dfn,
-em,
-img,
-ins,
-kbd,
-q,
-s,
-samp,
-small,
-strike,
-strong,
-sub,
-sup,
-tt,
-var,
-b,
-u,
-i,
-center,
-dl,
-dt,
-dd,
-ol,
-ul,
-li,
-fieldset,
-form,
-label,
-legend,
-table,
-caption,
-tbody,
-tfoot,
-thead,
-tr,
-th,
-td,
-article,
-aside,
-canvas,
-details,
-embed,
-figure,
-figcaption,
-footer,
-header,
-hgroup,
-menu,
-nav,
-output,
-ruby,
-section,
-summary,
-time,
-mark,
-audio,
-video {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-size: 100%;
-  /*  font: inherit;*/
-
-  vertical-align: baseline;
-}
-/* HTML5 display-role reset for older browsers */
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-menu,
-nav,
-section {
-  display: block;
-}
-body {
-  line-height: 1;
-}
-ol,
-ul {
-  list-style: none;
-}
-blockquote,
-q {
-  quotes: none;
-}
-blockquote:before,
-blockquote:after,
-q:before,
-q:after {
-  content: '';
-  content: none;
-}
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-body {
-  font-family: "Helvetica Neue", helvetica, arial, sans-serif;
-  background: #ececec;
-  min-width: 747px;
-}
-a {
-  text-decoration: none;
-  color: #11506d;
-}
-a:hover {
-  color: #0f5e83;
-}
-.loading-assets {
-  background: url('../img/loading.gif') no-repeat 0 0;
-  overflow: hidden;
-  text-indent: -1000px;
-  margin: 200px auto 0;
-  height: 95px;
-  width: 483px;
-}
-#main {
-  background-color: #fafafa;
-  border: thin solid #ccc;
-  overflow: auto;
-  width: auto;
-}
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  line-height: 14px;
-  vertical-align: text-top;
-  background-image: url("../img/glyphicons-halflings.png");
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-  margin-top: 1px;
-}
-/* White icons with optional class, or on hover/active states of certain elements */
-.icon-white,
-.nav-tabs > .active > a > [class^="icon-"],
-.nav-tabs > .active > a > [class*=" icon-"],
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"] {
-  background-image: url("../img/glyphicons-halflings-white.png");
-}
-.icon-glass {
-  background-position: 0      0;
-}
-.icon-music {
-  background-position: -24px 0;
-}
-.icon-search {
-  background-position: -48px 0;
-}
-.icon-envelope {
-  background-position: -72px 0;
-}
-.icon-heart {
-  background-position: -96px 0;
-}
-.icon-star {
-  background-position: -120px 0;
-}
-.icon-star-empty {
-  background-position: -144px 0;
-}
-.icon-user {
-  background-position: -168px 0;
-}
-.icon-film {
-  background-position: -192px 0;
-}
-.icon-th-large {
-  background-position: -216px 0;
-}
-.icon-th {
-  background-position: -240px 0;
-}
-.icon-th-list {
-  background-position: -264px 0;
-}
-.icon-ok {
-  background-position: -288px 0;
-}
-.icon-remove {
-  background-position: -312px 0;
-}
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-.icon-off {
-  background-position: -384px 0;
-}
-.icon-signal {
-  background-position: -408px 0;
-}
-.icon-cog {
-  background-position: -432px 0;
-}
-.icon-trash {
-  background-position: -456px 0;
-}
-.icon-home {
-  background-position: 0 -24px;
-}
-.icon-file {
-  background-position: -24px -24px;
-}
-.icon-time {
-  background-position: -48px -24px;
-}
-.icon-road {
-  background-position: -72px -24px;
-}
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-.icon-download {
-  background-position: -120px -24px;
-}
-.icon-upload {
-  background-position: -144px -24px;
-}
-.icon-inbox {
-  background-position: -168px -24px;
-}
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-.icon-repeat {
-  background-position: -216px -24px;
-}
-.icon-refresh {
-  background-position: -240px -24px;
-}
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-.icon-lock {
-  background-position: -287px -24px;
-}
-.icon-flag {
-  background-position: -312px -24px;
-}
-.icon-headphones {
-  background-position: -336px -24px;
-}
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-.icon-volume-up {
-  background-position: -408px -24

<TRUNCATED>


[31/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/example/json.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/example/json.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/example/json.js
deleted file mode 100644
index eb8a724..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/example/json.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var common = require('../test/common'),
-    http = require('http'),
-    util = require('util'),
-    formidable = common.formidable,
-    Buffer = require('buffer').Buffer,
-    port = common.port,
-    server;
-
-server = http.createServer(function(req, res) {
-  if (req.method !== 'POST') {
-    res.writeHead(200, {'content-type': 'text/plain'})
-    res.end('Please POST a JSON payload to http://localhost:'+port+'/')
-    return;
-  }
-
-  var form = new formidable.IncomingForm(),
-      fields = {};
-
-  form
-    .on('error', function(err) {
-      res.writeHead(500, {'content-type': 'text/plain'});
-      res.end('error:\n\n'+util.inspect(err));
-      console.error(err);
-    })
-    .on('field', function(field, value) {
-      console.log(field, value);
-      fields[field] = value;
-    })
-    .on('end', function() {
-      console.log('-> post done');
-      res.writeHead(200, {'content-type': 'text/plain'});
-      res.end('received fields:\n\n '+util.inspect(fields));
-    });
-  form.parse(req);
-});
-server.listen(port);
-
-console.log('listening on http://localhost:'+port+'/');
-
-
-var request = http.request({
-  host: 'localhost',
-  path: '/',
-  port: port,
-  method: 'POST',
-  headers: { 'content-type':'application/json', 'content-length':48 }
-}, function(response) {
-  var data = '';
-  console.log('\nServer responded with:');
-  console.log('Status:', response.statusCode);
-  response.pipe(process.stdout);
-  response.on('end', function() {
-    console.log('\n')
-    process.exit();
-  });
-  // response.on('data', function(chunk) {
-  //   data += chunk.toString('utf8');
-  // });
-  // response.on('end', function() {
-  //   console.log('Response Data:')
-  //   console.log(data);
-  //   process.exit();
-  // });
-})
-
-request.write('{"numbers":[1,2,3,4,5],"nested":{"key":"value"}}');
-request.end();

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js
deleted file mode 100644
index f6c15a6..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js
+++ /dev/null
@@ -1,43 +0,0 @@
-require('../test/common');
-var http = require('http'),
-    util = require('util'),
-    formidable = require('formidable'),
-    server;
-
-server = http.createServer(function(req, res) {
-  if (req.url == '/') {
-    res.writeHead(200, {'content-type': 'text/html'});
-    res.end(
-      '<form action="/post" method="post">'+
-      '<input type="text" name="title"><br>'+
-      '<input type="text" name="data[foo][]"><br>'+
-      '<input type="submit" value="Submit">'+
-      '</form>'
-    );
-  } else if (req.url == '/post') {
-    var form = new formidable.IncomingForm(),
-        fields = [];
-
-    form
-      .on('error', function(err) {
-        res.writeHead(200, {'content-type': 'text/plain'});
-        res.end('error:\n\n'+util.inspect(err));
-      })
-      .on('field', function(field, value) {
-        console.log(field, value);
-        fields.push([field, value]);
-      })
-      .on('end', function() {
-        console.log('-> post done');
-        res.writeHead(200, {'content-type': 'text/plain'});
-        res.end('received fields:\n\n '+util.inspect(fields));
-      });
-    form.parse(req);
-  } else {
-    res.writeHead(404, {'content-type': 'text/plain'});
-    res.end('404');
-  }
-});
-server.listen(TEST_PORT);
-
-console.log('listening on http://localhost:'+TEST_PORT+'/');

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js
deleted file mode 100644
index 050cdd9..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js
+++ /dev/null
@@ -1,48 +0,0 @@
-require('../test/common');
-var http = require('http'),
-    util = require('util'),
-    formidable = require('formidable'),
-    server;
-
-server = http.createServer(function(req, res) {
-  if (req.url == '/') {
-    res.writeHead(200, {'content-type': 'text/html'});
-    res.end(
-      '<form action="/upload" enctype="multipart/form-data" method="post">'+
-      '<input type="text" name="title"><br>'+
-      '<input type="file" name="upload" multiple="multiple"><br>'+
-      '<input type="submit" value="Upload">'+
-      '</form>'
-    );
-  } else if (req.url == '/upload') {
-    var form = new formidable.IncomingForm(),
-        files = [],
-        fields = [];
-
-    form.uploadDir = TEST_TMP;
-
-    form
-      .on('field', function(field, value) {
-        console.log(field, value);
-        fields.push([field, value]);
-      })
-      .on('file', function(field, file) {
-        console.log(field, file);
-        files.push([field, file]);
-      })
-      .on('end', function() {
-        console.log('-> upload done');
-        res.writeHead(200, {'content-type': 'text/plain'});
-        res.write('received fields:\n\n '+util.inspect(fields));
-        res.write('\n\n');
-        res.end('received files:\n\n '+util.inspect(files));
-      });
-    form.parse(req);
-  } else {
-    res.writeHead(404, {'content-type': 'text/plain'});
-    res.end('404');
-  }
-});
-server.listen(TEST_PORT);
-
-console.log('listening on http://localhost:'+TEST_PORT+'/');

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/index.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/index.js
deleted file mode 100644
index 4cc88b3..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js
deleted file mode 100644
index e34c10e..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js
+++ /dev/null
@@ -1,72 +0,0 @@
-if (global.GENTLY) require = GENTLY.hijack(require);
-
-var util = require('util'),
-    WriteStream = require('fs').WriteStream,
-    EventEmitter = require('events').EventEmitter,
-    crypto = require('crypto');
-
-function File(properties) {
-  EventEmitter.call(this);
-
-  this.size = 0;
-  this.path = null;
-  this.name = null;
-  this.type = null;
-  this.hash = null;
-  this.lastModifiedDate = null;
-
-  this._writeStream = null;
-  
-  for (var key in properties) {
-    this[key] = properties[key];
-  }
-
-  if(typeof this.hash === 'string') {
-    this.hash = crypto.createHash(properties.hash);
-  } else {
-    this.hash = null;
-  }
-}
-module.exports = File;
-util.inherits(File, EventEmitter);
-
-File.prototype.open = function() {
-  this._writeStream = new WriteStream(this.path);
-};
-
-File.prototype.toJSON = function() {
-  return {
-    size: this.size,
-    path: this.path,
-    name: this.name,
-    type: this.type,
-    mtime: this.lastModifiedDate,
-    length: this.length,
-    filename: this.filename,
-    mime: this.mime
-  };
-};
-
-File.prototype.write = function(buffer, cb) {
-  var self = this;
-  if (self.hash) {
-    self.hash.update(buffer);
-  }
-  this._writeStream.write(buffer, function() {
-    self.lastModifiedDate = new Date();
-    self.size += buffer.length;
-    self.emit('progress', self.size);
-    cb();
-  });
-};
-
-File.prototype.end = function(cb) {
-  var self = this;
-  if (self.hash) {
-    self.hash = self.hash.digest('hex');
-  }
-  this._writeStream.end(function() {
-    self.emit('end');
-    cb();
-  });
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js
deleted file mode 100644
index c2eeaf8..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js
+++ /dev/null
@@ -1,535 +0,0 @@
-if (global.GENTLY) require = GENTLY.hijack(require);
-
-var fs = require('fs');
-var util = require('util'),
-    path = require('path'),
-    File = require('./file'),
-    MultipartParser = require('./multipart_parser').MultipartParser,
-    QuerystringParser = require('./querystring_parser').QuerystringParser,
-    OctetParser       = require('./octet_parser').OctetParser,
-    JSONParser = require('./json_parser').JSONParser,
-    StringDecoder = require('string_decoder').StringDecoder,
-    EventEmitter = require('events').EventEmitter,
-    Stream = require('stream').Stream,
-    os = require('os');
-
-function IncomingForm(opts) {
-  if (!(this instanceof IncomingForm)) return new IncomingForm(opts);
-  EventEmitter.call(this);
-
-  opts=opts||{};
-
-  this.error = null;
-  this.ended = false;
-
-  this.maxFields = opts.maxFields || 1000;
-  this.maxFieldsSize = opts.maxFieldsSize || 2 * 1024 * 1024;
-  this.keepExtensions = opts.keepExtensions || false;
-  this.uploadDir = opts.uploadDir || os.tmpDir();
-  this.encoding = opts.encoding || 'utf-8';
-  this.headers = null;
-  this.type = null;
-  this.hash = false;
-
-  this.bytesReceived = null;
-  this.bytesExpected = null;
-
-  this._parser = null;
-  this._flushing = 0;
-  this._fieldsSize = 0;
-  this.openedFiles = [];
-
-  return this;
-};
-util.inherits(IncomingForm, EventEmitter);
-exports.IncomingForm = IncomingForm;
-
-IncomingForm.prototype.parse = function(req, cb) {
-  this.pause = function() {
-    try {
-      req.pause();
-    } catch (err) {
-      // the stream was destroyed
-      if (!this.ended) {
-        // before it was completed, crash & burn
-        this._error(err);
-      }
-      return false;
-    }
-    return true;
-  };
-
-  this.resume = function() {
-    try {
-      req.resume();
-    } catch (err) {
-      // the stream was destroyed
-      if (!this.ended) {
-        // before it was completed, crash & burn
-        this._error(err);
-      }
-      return false;
-    }
-
-    return true;
-  };
-
-  // Setup callback first, so we don't miss anything from data events emitted
-  // immediately.
-  if (cb) {
-    var fields = {}, files = {};
-    this
-      .on('field', function(name, value) {
-        fields[name] = value;
-      })
-      .on('file', function(name, file) {
-        files[name] = file;
-      })
-      .on('error', function(err) {
-        cb(err, fields, files);
-      })
-      .on('end', function() {
-        cb(null, fields, files);
-      });
-  }
-
-  // Parse headers and setup the parser, ready to start listening for data.
-  this.writeHeaders(req.headers);
-
-  // Start listening for data.
-  var self = this;
-  req
-    .on('error', function(err) {
-      self._error(err);
-    })
-    .on('aborted', function() {
-      self.emit('aborted');
-      self._error(new Error('Request aborted'));
-    })
-    .on('data', function(buffer) {
-      self.write(buffer);
-    })
-    .on('end', function() {
-      if (self.error) {
-        return;
-      }
-
-      var err = self._parser.end();
-      if (err) {
-        self._error(err);
-      }
-    });
-
-  return this;
-};
-
-IncomingForm.prototype.writeHeaders = function(headers) {
-  this.headers = headers;
-  this._parseContentLength();
-  this._parseContentType();
-};
-
-IncomingForm.prototype.write = function(buffer) {
-  if (!this._parser) {
-    this._error(new Error('unintialized parser'));
-    return;
-  }
-
-  this.bytesReceived += buffer.length;
-  this.emit('progress', this.bytesReceived, this.bytesExpected);
-
-  var bytesParsed = this._parser.write(buffer);
-  if (bytesParsed !== buffer.length) {
-    this._error(new Error('parser error, '+bytesParsed+' of '+buffer.length+' bytes parsed'));
-  }
-
-  return bytesParsed;
-};
-
-IncomingForm.prototype.pause = function() {
-  // this does nothing, unless overwritten in IncomingForm.parse
-  return false;
-};
-
-IncomingForm.prototype.resume = function() {
-  // this does nothing, unless overwritten in IncomingForm.parse
-  return false;
-};
-
-IncomingForm.prototype.onPart = function(part) {
-  // this method can be overwritten by the user
-  this.handlePart(part);
-};
-
-IncomingForm.prototype.handlePart = function(part) {
-  var self = this;
-
-  if (part.filename === undefined) {
-    var value = ''
-      , decoder = new StringDecoder(this.encoding);
-
-    part.on('data', function(buffer) {
-      self._fieldsSize += buffer.length;
-      if (self._fieldsSize > self.maxFieldsSize) {
-        self._error(new Error('maxFieldsSize exceeded, received '+self._fieldsSize+' bytes of field data'));
-        return;
-      }
-      value += decoder.write(buffer);
-    });
-
-    part.on('end', function() {
-      self.emit('field', part.name, value);
-    });
-    return;
-  }
-
-  this._flushing++;
-
-  var file = new File({
-    path: this._uploadPath(part.filename),
-    name: part.filename,
-    type: part.mime,
-    hash: self.hash
-  });
-
-  this.emit('fileBegin', part.name, file);
-
-  file.open();
-  this.openedFiles.push(file);
-
-  part.on('data', function(buffer) {
-    self.pause();
-    file.write(buffer, function() {
-      self.resume();
-    });
-  });
-
-  part.on('end', function() {
-    file.end(function() {
-      self._flushing--;
-      self.emit('file', part.name, file);
-      self._maybeEnd();
-    });
-  });
-};
-
-function dummyParser(self) {
-  return {
-    end: function () {
-      self.ended = true;
-      self._maybeEnd();
-      return null;
-    }
-  };
-}
-
-IncomingForm.prototype._parseContentType = function() {
-  if (this.bytesExpected === 0) {
-    this._parser = dummyParser(this);
-    return;
-  }
-
-  if (!this.headers['content-type']) {
-    this._error(new Error('bad content-type header, no content-type'));
-    return;
-  }
-
-  if (this.headers['content-type'].match(/octet-stream/i)) {
-    this._initOctetStream();
-    return;
-  }
-
-  if (this.headers['content-type'].match(/urlencoded/i)) {
-    this._initUrlencoded();
-    return;
-  }
-
-  if (this.headers['content-type'].match(/multipart/i)) {
-    var m;
-    if (m = this.headers['content-type'].match(/boundary=(?:"([^"]+)"|([^;]+))/i)) {
-      this._initMultipart(m[1] || m[2]);
-    } else {
-      this._error(new Error('bad content-type header, no multipart boundary'));
-    }
-    return;
-  }
-
-  if (this.headers['content-type'].match(/json/i)) {
-    this._initJSONencoded();
-    return;
-  }
-
-  this._error(new Error('bad content-type header, unknown content-type: '+this.headers['content-type']));
-};
-
-IncomingForm.prototype._error = function(err) {
-  if (this.error || this.ended) {
-    return;
-  }
-
-  this.error = err;
-  this.pause();
-  this.emit('error', err);
-
-  if (Array.isArray(this.openedFiles)) {
-    this.openedFiles.forEach(function(file) {
-      file._writeStream.destroy();
-      setTimeout(fs.unlink, 0, file.path);
-    });
-  }
-};
-
-IncomingForm.prototype._parseContentLength = function() {
-  this.bytesReceived = 0;
-  if (this.headers['content-length']) {
-    this.bytesExpected = parseInt(this.headers['content-length'], 10);
-  } else if (this.headers['transfer-encoding'] === undefined) {
-    this.bytesExpected = 0;
-  }
-
-  if (this.bytesExpected !== null) {
-    this.emit('progress', this.bytesReceived, this.bytesExpected);
-  }
-};
-
-IncomingForm.prototype._newParser = function() {
-  return new MultipartParser();
-};
-
-IncomingForm.prototype._initMultipart = function(boundary) {
-  this.type = 'multipart';
-
-  var parser = new MultipartParser(),
-      self = this,
-      headerField,
-      headerValue,
-      part;
-
-  parser.initWithBoundary(boundary);
-
-  parser.onPartBegin = function() {
-    part = new Stream();
-    part.readable = true;
-    part.headers = {};
-    part.name = null;
-    part.filename = null;
-    part.mime = null;
-
-    part.transferEncoding = 'binary';
-    part.transferBuffer = '';
-
-    headerField = '';
-    headerValue = '';
-  };
-
-  parser.onHeaderField = function(b, start, end) {
-    headerField += b.toString(self.encoding, start, end);
-  };
-
-  parser.onHeaderValue = function(b, start, end) {
-    headerValue += b.toString(self.encoding, start, end);
-  };
-
-  parser.onHeaderEnd = function() {
-    headerField = headerField.toLowerCase();
-    part.headers[headerField] = headerValue;
-
-    var m;
-    if (headerField == 'content-disposition') {
-      if (m = headerValue.match(/\bname="([^"]+)"/i)) {
-        part.name = m[1];
-      }
-
-      part.filename = self._fileName(headerValue);
-    } else if (headerField == 'content-type') {
-      part.mime = headerValue;
-    } else if (headerField == 'content-transfer-encoding') {
-      part.transferEncoding = headerValue.toLowerCase();
-    }
-
-    headerField = '';
-    headerValue = '';
-  };
-
-  parser.onHeadersEnd = function() {
-    switch(part.transferEncoding){
-      case 'binary':
-      case '7bit':
-      case '8bit':
-      parser.onPartData = function(b, start, end) {
-        part.emit('data', b.slice(start, end));
-      };
-
-      parser.onPartEnd = function() {
-        part.emit('end');
-      };
-      break;
-
-      case 'base64':
-      parser.onPartData = function(b, start, end) {
-        part.transferBuffer += b.slice(start, end).toString('ascii');
-
-        /*
-        four bytes (chars) in base64 converts to three bytes in binary
-        encoding. So we should always work with a number of bytes that
-        can be divided by 4, it will result in a number of buytes that
-        can be divided vy 3.
-        */
-        var offset = parseInt(part.transferBuffer.length / 4) * 4;
-        part.emit('data', new Buffer(part.transferBuffer.substring(0, offset), 'base64'))
-        part.transferBuffer = part.transferBuffer.substring(offset);
-      };
-
-      parser.onPartEnd = function() {
-        part.emit('data', new Buffer(part.transferBuffer, 'base64'))
-        part.emit('end');
-      };
-      break;
-
-      default:
-      return self._error(new Error('unknown transfer-encoding'));
-    }
-
-    self.onPart(part);
-  };
-
-
-  parser.onEnd = function() {
-    self.ended = true;
-    self._maybeEnd();
-  };
-
-  this._parser = parser;
-};
-
-IncomingForm.prototype._fileName = function(headerValue) {
-  var m = headerValue.match(/\bfilename="(.*?)"($|; )/i);
-  if (!m) return;
-
-  var filename = m[1].substr(m[1].lastIndexOf('\\') + 1);
-  filename = filename.replace(/%22/g, '"');
-  filename = filename.replace(/&#([\d]{4});/g, function(m, code) {
-    return String.fromCharCode(code);
-  });
-  return filename;
-};
-
-IncomingForm.prototype._initUrlencoded = function() {
-  this.type = 'urlencoded';
-
-  var parser = new QuerystringParser(this.maxFields)
-    , self = this;
-
-  parser.onField = function(key, val) {
-    self.emit('field', key, val);
-  };
-
-  parser.onEnd = function() {
-    self.ended = true;
-    self._maybeEnd();
-  };
-
-  this._parser = parser;
-};
-
-IncomingForm.prototype._initOctetStream = function() {
-  this.type = 'octet-stream';
-  var filename = this.headers['x-file-name'];
-  var mime = this.headers['content-type'];
-
-  var file = new File({
-    path: this._uploadPath(filename),
-    name: filename,
-    type: mime
-  });
-
-  file.open();
-
-  this.emit('fileBegin', filename, file);
-
-  this._flushing++;
-
-  var self = this;
-
-  self._parser = new OctetParser();
-
-  //Keep track of writes that haven't finished so we don't emit the file before it's done being written
-  var outstandingWrites = 0;
-
-  self._parser.on('data', function(buffer){
-    self.pause();
-    outstandingWrites++;
-
-    file.write(buffer, function() {
-      outstandingWrites--;
-      self.resume();
-
-      if(self.ended){
-        self._parser.emit('doneWritingFile');
-      }
-    });
-  });
-
-  self._parser.on('end', function(){
-    self._flushing--;
-    self.ended = true;
-
-    var done = function(){
-      self.emit('file', 'file', file);
-      self._maybeEnd();
-    };
-
-    if(outstandingWrites === 0){
-      done();
-    } else {
-      self._parser.once('doneWritingFile', done);
-    }
-  });
-};
-
-IncomingForm.prototype._initJSONencoded = function() {
-  this.type = 'json';
-
-  var parser = new JSONParser()
-    , self = this;
-
-  if (this.bytesExpected) {
-    parser.initWithLength(this.bytesExpected);
-  }
-
-  parser.onField = function(key, val) {
-    self.emit('field', key, val);
-  }
-
-  parser.onEnd = function() {
-    self.ended = true;
-    self._maybeEnd();
-  };
-
-  this._parser = parser;
-};
-
-IncomingForm.prototype._uploadPath = function(filename) {
-  var name = '';
-  for (var i = 0; i < 32; i++) {
-    name += Math.floor(Math.random() * 16).toString(16);
-  }
-
-  if (this.keepExtensions) {
-    var ext = path.extname(filename);
-    ext     = ext.replace(/(\.[a-z0-9]+).*/, '$1');
-
-    name += ext;
-  }
-
-  return path.join(this.uploadDir, name);
-};
-
-IncomingForm.prototype._maybeEnd = function() {
-  if (!this.ended || this._flushing || this.error) {
-    return;
-  }
-
-  this.emit('end');
-};
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js
deleted file mode 100644
index 7a6e3e1..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var IncomingForm = require('./incoming_form').IncomingForm;
-IncomingForm.IncomingForm = IncomingForm;
-module.exports = IncomingForm;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/json_parser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/json_parser.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/json_parser.js
deleted file mode 100644
index 6ce966b..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/json_parser.js
+++ /dev/null
@@ -1,35 +0,0 @@
-if (global.GENTLY) require = GENTLY.hijack(require);
-
-var Buffer = require('buffer').Buffer
-
-function JSONParser() {
-  this.data = new Buffer('');
-  this.bytesWritten = 0;
-};
-exports.JSONParser = JSONParser;
-
-JSONParser.prototype.initWithLength = function(length) {
-  this.data = new Buffer(length);
-}
-
-JSONParser.prototype.write = function(buffer) {
-  if (this.data.length >= this.bytesWritten + buffer.length) {
-    buffer.copy(this.data, this.bytesWritten);
-  } else {
-    this.data = Buffer.concat([this.data, buffer]);
-  }
-  this.bytesWritten += buffer.length;
-  return buffer.length;
-}
-
-JSONParser.prototype.end = function() {
-  try {
-    var fields = JSON.parse(this.data.toString('utf8'))
-    for (var field in fields) {
-      this.onField(field, fields[field]);
-    }
-  } catch (e) {}
-  this.data = null;
-
-  this.onEnd();
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js
deleted file mode 100644
index 98a6856..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js
+++ /dev/null
@@ -1,324 +0,0 @@
-var Buffer = require('buffer').Buffer,
-    s = 0,
-    S =
-    { PARSER_UNINITIALIZED: s++,
-      START: s++,
-      START_BOUNDARY: s++,
-      HEADER_FIELD_START: s++,
-      HEADER_FIELD: s++,
-      HEADER_VALUE_START: s++,
-      HEADER_VALUE: s++,
-      HEADER_VALUE_ALMOST_DONE: s++,
-      HEADERS_ALMOST_DONE: s++,
-      PART_DATA_START: s++,
-      PART_DATA: s++,
-      PART_END: s++,
-      END: s++
-    },
-
-    f = 1,
-    F =
-    { PART_BOUNDARY: f,
-      LAST_BOUNDARY: f *= 2
-    },
-
-    LF = 10,
-    CR = 13,
-    SPACE = 32,
-    HYPHEN = 45,
-    COLON = 58,
-    A = 97,
-    Z = 122,
-
-    lower = function(c) {
-      return c | 0x20;
-    };
-
-for (s in S) {
-  exports[s] = S[s];
-}
-
-function MultipartParser() {
-  this.boundary = null;
-  this.boundaryChars = null;
-  this.lookbehind = null;
-  this.state = S.PARSER_UNINITIALIZED;
-
-  this.index = null;
-  this.flags = 0;
-};
-exports.MultipartParser = MultipartParser;
-
-MultipartParser.stateToString = function(stateNumber) {
-  for (var state in S) {
-    var number = S[state];
-    if (number === stateNumber) return state;
-  }
-};
-
-MultipartParser.prototype.initWithBoundary = function(str) {
-  this.boundary = new Buffer(str.length+4);
-  this.boundary.write('\r\n--', 'ascii', 0);
-  this.boundary.write(str, 'ascii', 4);
-  this.lookbehind = new Buffer(this.boundary.length+8);
-  this.state = S.START;
-
-  this.boundaryChars = {};
-  for (var i = 0; i < this.boundary.length; i++) {
-    this.boundaryChars[this.boundary[i]] = true;
-  }
-};
-
-MultipartParser.prototype.write = function(buffer) {
-  var self = this,
-      i = 0,
-      len = buffer.length,
-      prevIndex = this.index,
-      index = this.index,
-      state = this.state,
-      flags = this.flags,
-      lookbehind = this.lookbehind,
-      boundary = this.boundary,
-      boundaryChars = this.boundaryChars,
-      boundaryLength = this.boundary.length,
-      boundaryEnd = boundaryLength - 1,
-      bufferLength = buffer.length,
-      c,
-      cl,
-
-      mark = function(name) {
-        self[name+'Mark'] = i;
-      },
-      clear = function(name) {
-        delete self[name+'Mark'];
-      },
-      callback = function(name, buffer, start, end) {
-        if (start !== undefined && start === end) {
-          return;
-        }
-
-        var callbackSymbol = 'on'+name.substr(0, 1).toUpperCase()+name.substr(1);
-        if (callbackSymbol in self) {
-          self[callbackSymbol](buffer, start, end);
-        }
-      },
-      dataCallback = function(name, clear) {
-        var markSymbol = name+'Mark';
-        if (!(markSymbol in self)) {
-          return;
-        }
-
-        if (!clear) {
-          callback(name, buffer, self[markSymbol], buffer.length);
-          self[markSymbol] = 0;
-        } else {
-          callback(name, buffer, self[markSymbol], i);
-          delete self[markSymbol];
-        }
-      };
-
-  for (i = 0; i < len; i++) {
-    c = buffer[i];
-    switch (state) {
-      case S.PARSER_UNINITIALIZED:
-        return i;
-      case S.START:
-        index = 0;
-        state = S.START_BOUNDARY;
-      case S.START_BOUNDARY:
-        if (index == boundary.length - 2) {
-          if (c != CR) {
-            return i;
-          }
-          index++;
-          break;
-        } else if (index - 1 == boundary.length - 2) {
-          if (c != LF) {
-            return i;
-          }
-          index = 0;
-          callback('partBegin');
-          state = S.HEADER_FIELD_START;
-          break;
-        }
-
-        if (c != boundary[index+2]) {
-          index = -2;
-        }
-        if (c == boundary[index+2]) {
-          index++;
-        }
-        break;
-      case S.HEADER_FIELD_START:
-        state = S.HEADER_FIELD;
-        mark('headerField');
-        index = 0;
-      case S.HEADER_FIELD:
-        if (c == CR) {
-          clear('headerField');
-          state = S.HEADERS_ALMOST_DONE;
-          break;
-        }
-
-        index++;
-        if (c == HYPHEN) {
-          break;
-        }
-
-        if (c == COLON) {
-          if (index == 1) {
-            // empty header field
-            return i;
-          }
-          dataCallback('headerField', true);
-          state = S.HEADER_VALUE_START;
-          break;
-        }
-
-        cl = lower(c);
-        if (cl < A || cl > Z) {
-          return i;
-        }
-        break;
-      case S.HEADER_VALUE_START:
-        if (c == SPACE) {
-          break;
-        }
-
-        mark('headerValue');
-        state = S.HEADER_VALUE;
-      case S.HEADER_VALUE:
-        if (c == CR) {
-          dataCallback('headerValue', true);
-          callback('headerEnd');
-          state = S.HEADER_VALUE_ALMOST_DONE;
-        }
-        break;
-      case S.HEADER_VALUE_ALMOST_DONE:
-        if (c != LF) {
-          return i;
-        }
-        state = S.HEADER_FIELD_START;
-        break;
-      case S.HEADERS_ALMOST_DONE:
-        if (c != LF) {
-          return i;
-        }
-
-        callback('headersEnd');
-        state = S.PART_DATA_START;
-        break;
-      case S.PART_DATA_START:
-        state = S.PART_DATA;
-        mark('partData');
-      case S.PART_DATA:
-        prevIndex = index;
-
-        if (index == 0) {
-          // boyer-moore derrived algorithm to safely skip non-boundary data
-          i += boundaryEnd;
-          while (i < bufferLength && !(buffer[i] in boundaryChars)) {
-            i += boundaryLength;
-          }
-          i -= boundaryEnd;
-          c = buffer[i];
-        }
-
-        if (index < boundary.length) {
-          if (boundary[index] == c) {
-            if (index == 0) {
-              dataCallback('partData', true);
-            }
-            index++;
-          } else {
-            index = 0;
-          }
-        } else if (index == boundary.length) {
-          index++;
-          if (c == CR) {
-            // CR = part boundary
-            flags |= F.PART_BOUNDARY;
-          } else if (c == HYPHEN) {
-            // HYPHEN = end boundary
-            flags |= F.LAST_BOUNDARY;
-          } else {
-            index = 0;
-          }
-        } else if (index - 1 == boundary.length)  {
-          if (flags & F.PART_BOUNDARY) {
-            index = 0;
-            if (c == LF) {
-              // unset the PART_BOUNDARY flag
-              flags &= ~F.PART_BOUNDARY;
-              callback('partEnd');
-              callback('partBegin');
-              state = S.HEADER_FIELD_START;
-              break;
-            }
-          } else if (flags & F.LAST_BOUNDARY) {
-            if (c == HYPHEN) {
-              callback('partEnd');
-              callback('end');
-              state = S.END;
-            } else {
-              index = 0;
-            }
-          } else {
-            index = 0;
-          }
-        }
-
-        if (index > 0) {
-          // when matching a possible boundary, keep a lookbehind reference
-          // in case it turns out to be a false lead
-          lookbehind[index-1] = c;
-        } else if (prevIndex > 0) {
-          // if our boundary turned out to be rubbish, the captured lookbehind
-          // belongs to partData
-          callback('partData', lookbehind, 0, prevIndex);
-          prevIndex = 0;
-          mark('partData');
-
-          // reconsider the current character even so it interrupted the sequence
-          // it could be the beginning of a new sequence
-          i--;
-        }
-
-        break;
-      case S.END:
-        break;
-      default:
-        return i;
-    }
-  }
-
-  dataCallback('headerField');
-  dataCallback('headerValue');
-  dataCallback('partData');
-
-  this.index = index;
-  this.state = state;
-  this.flags = flags;
-
-  return len;
-};
-
-MultipartParser.prototype.end = function() {
-  var callback = function(self, name) {
-    var callbackSymbol = 'on'+name.substr(0, 1).toUpperCase()+name.substr(1);
-    if (callbackSymbol in self) {
-      self[callbackSymbol]();
-    }
-  };
-  if ((this.state == S.HEADER_FIELD_START && this.index == 0) ||
-      (this.state == S.PART_DATA && this.index == this.boundary.length)) {
-    callback(this, 'partEnd');
-    callback(this, 'end');
-  } else if (this.state != S.END) {
-    return new Error('MultipartParser.end(): stream ended unexpectedly: ' + this.explain());
-  }
-};
-
-MultipartParser.prototype.explain = function() {
-  return 'state = ' + MultipartParser.stateToString(this.state);
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/octet_parser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/octet_parser.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/octet_parser.js
deleted file mode 100644
index 6e8b551..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/octet_parser.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var EventEmitter = require('events').EventEmitter
-	, util = require('util');
-
-function OctetParser(options){
-	if(!(this instanceof OctetParser)) return new OctetParser(options);
-	EventEmitter.call(this);
-}
-
-util.inherits(OctetParser, EventEmitter);
-
-exports.OctetParser = OctetParser;
-
-OctetParser.prototype.write = function(buffer) {
-    this.emit('data', buffer);
-	return buffer.length;
-};
-
-OctetParser.prototype.end = function() {
-	this.emit('end');
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js
deleted file mode 100644
index 320ce5a..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js
+++ /dev/null
@@ -1,27 +0,0 @@
-if (global.GENTLY) require = GENTLY.hijack(require);
-
-// This is a buffering parser, not quite as nice as the multipart one.
-// If I find time I'll rewrite this to be fully streaming as well
-var querystring = require('querystring');
-
-function QuerystringParser(maxKeys) {
-  this.maxKeys = maxKeys;
-  this.buffer = '';
-};
-exports.QuerystringParser = QuerystringParser;
-
-QuerystringParser.prototype.write = function(buffer) {
-  this.buffer += buffer.toString('ascii');
-  return buffer.length;
-};
-
-QuerystringParser.prototype.end = function() {
-  var fields = querystring.parse(this.buffer, '&', '=', { maxKeys: this.maxKeys });
-  for (var field in fields) {
-    this.onField(field, fields[field]);
-  }
-  this.buffer = '';
-
-  this.onEnd();
-};
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/package.json b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/package.json
deleted file mode 100644
index 4679a11..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-  "name": "formidable",
-  "description": "A node.js module for parsing form data, especially file uploads.",
-  "homepage": "https://github.com/felixge/node-formidable",
-  "version": "1.0.14",
-  "devDependencies": {
-    "gently": "0.8.0",
-    "findit": "0.1.1",
-    "hashish": "0.0.4",
-    "urun": "~0.0.6",
-    "utest": "0.0.3",
-    "request": "~2.11.4"
-  },
-  "directories": {
-    "lib": "./lib"
-  },
-  "main": "./lib/index",
-  "scripts": {
-    "test": "node test/run.js",
-    "clean": "rm test/tmp/*"
-  },
-  "engines": {
-    "node": ">=0.8.0"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/felixge/node-formidable.git"
-  },
-  "bugs": {
-    "url": "http://github.com/felixge/node-formidable/issues"
-  },
-  "optionalDependencies": {},
-  "readme": "# Formidable\n\n[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable)\n\n## Purpose\n\nA node.js module for parsing form data, especially file uploads.\n\n## Current status\n\nThis module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading\nand encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from\na large variety of clients and is considered production-ready.\n\n## Features\n\n* Fast (~500mb/sec), non-buffering multipart parser\n* Automatically writing file uploads to disk\n* Low memory footprint\n* Graceful error handling\n* Very high test coverage\n\n## Installation\n\nVia [npm](http://github.com/isaacs/npm):\n```\nnpm install formidable@latest\n```\nManually:\n```\ngit clone git://github.com/felixge/node-formidable.git formidable\nvim my.js\n# var formidable = require('./formidable');\n```\n\nNote: Formida
 ble requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library.\n\n## Example\n\nParse an incoming file upload.\n```javascript\nvar formidable = require('formidable'),\n    http = require('http'),\n    util = require('util');\n\nhttp.createServer(function(req, res) {\n  if (req.url == '/upload' && req.method.toLowerCase() == 'post') {\n    // parse a file upload\n    var form = new formidable.IncomingForm();\n\n    form.parse(req, function(err, fields, files) {\n      res.writeHead(200, {'content-type': 'text/plain'});\n      res.write('received upload:\\n\\n');\n      res.end(util.inspect({fields: fields, files: files}));\n    });\n\n    return;\n  }\n\n  // show a file upload form\n  res.writeHead(200, {'content-type': 'text/html'});\n  res.end(\n    '<form action=\"/upload\" enctype=\"multipart/form-data\" method=\"post\">'+\n    '<input type=\"text\" name=\"title\"><br>'+\n    '<input type=\"file\" name=\"uplo
 ad\" multiple=\"multiple\"><br>'+\n    '<input type=\"submit\" value=\"Upload\">'+\n    '</form>'\n  );\n}).listen(8080);\n```\n## API\n\n### Formidable.IncomingForm\n```javascript\nvar form = new formidable.IncomingForm()\n```\nCreates a new incoming form.\n\n```javascript\nform.encoding = 'utf-8';\n```\nSets encoding for incoming form fields.\n\n```javascript\nform.uploadDir = process.env.TMP || process.env.TMPDIR || process.env.TEMP || '/tmp' || process.cwd();\n```\nThe directory for placing file uploads in. You can move them later on using\n`fs.rename()`. The default directory is picked at module load time depending on\nthe first existing directory from those listed above.\n\n```javascript\nform.keepExtensions = false;\n```\nIf you want the files written to `form.uploadDir` to include the extensions of the original files, set this property to `true`.\n\n```javascript\nform.type\n```\nEither 'multipart' or 'urlencoded' depending on the incoming request.\n\n```javascript\nform.max
 FieldsSize = 2 * 1024 * 1024;\n```\nLimits the amount of memory a field (not file) can allocate in bytes.\nIf this value is exceeded, an `'error'` event is emitted. The default\nsize is 2MB.\n\n```javascript\nform.maxFields = 0;\n```\nLimits the number of fields that the querystring parser will decode. Defaults\nto 0 (unlimited).\n\n```javascript\nform.hash = false;\n```\nIf you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`.\n\n```javascript\nform.bytesReceived\n```\nThe amount of bytes received for this form so far.\n\n```javascript\nform.bytesExpected\n```\nThe expected number of bytes in this form.\n\n```javascript\nform.parse(request, [cb]);\n```\nParses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback:\n\n\n```javascript\nform.parse(req, function(err, fields, files) {\n  // ...\n});\n\nform.onPart(part);\n```\nYou may overwrite this method if you are inter
 ested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events  processing which would occur otherwise, making you fully responsible for handling the processing.\n\n```javascript\nform.onPart = function(part) {\n  part.addListener('data', function() {\n    // ...\n  });\n}\n```\nIf you want to use formidable to only handle certain parts for you, you can do so:\n```javascript\nform.onPart = function(part) {\n  if (!part.filename) {\n    // let formidable handle all non-file parts\n    form.handlePart(part);\n  }\n}\n```\nCheck the code in this method for further inspiration.\n\n\n### Formidable.File\n```javascript\nfile.size = 0\n```\nThe size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet.\n```javascript\nfile.path = null\n```\nThe path this file is being written to. You can modify this in the `'fileBegin'` event in\ncase
  you are unhappy with the way formidable generates a temporary path for your files.\n```javascript\nfile.name = null\n```\nThe name this file had according to the uploading client.\n```javascript\nfile.type = null\n```\nThe mime type of this file, according to the uploading client.\n```javascript\nfile.lastModifiedDate = null\n```\nA date object (or `null`) containing the time this file was last written to. Mostly\nhere for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/).\n```javascript\nfile.hash = null\n```\nIf hash calculation was set, you can read the hex digest out of this var.\n\n#### Formidable.File#toJSON()\n\n  This method returns a JSON-representation of the file, allowing you to\n  `JSON.stringify()` the file which is useful for logging and responding\n  to requests.\n\n### Events\n\n\n#### 'progress'\n```javascript\nform.on('progress', function(bytesReceived, bytesExpected) {\n});\n```\nEmitted after each incoming chunk of data that ha
 s been parsed. Can be used to roll your own progress bar.\n\n\n\n#### 'field'\n```javascript\nform.on('field', function(name, value) {\n});\n```\n\n#### 'fileBegin'\n\nEmitted whenever a field / value pair has been received.\n```javascript\nform.on('fileBegin', function(name, file) {\n});\n```\n\n#### 'file'\n\nEmitted whenever a new file is detected in the upload stream. Use this even if\nyou want to stream the file to somewhere else while buffering the upload on\nthe file system.\n\nEmitted whenever a field / file pair has been received. `file` is an instance of `File`.\n```javascript\nform.on('file', function(name, file) {\n});\n```\n\n#### 'error'\n\nEmitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events.\n```javascript\nform.on('error', function(err) {\n});\n```\n\n#### 'aborted'\n\n\nEmitted when the req
 uest was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core).\n```javascript\nform.on('aborted', function() {\n});\n```\n\n##### 'end'\n```javascript\nform.on('end', function() {\n});\n```\nEmitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response.\n\n\n\n## Changelog\n\n### v1.0.14\n\n* Add failing hash tests. (Ben Trask)\n* Enable hash calculation again (Eugene Girshov)\n* Test for immediate data events (Tim Smart)\n* Re-arrange IncomingForm#parse (Tim Smart)\n\n### v1.0.13\n\n* Only update hash if update method exists (Sven Lito)\n* According to travis v0.10 needs to go quoted (Sven Lito)\n* Bumping build node versions (Sven Lito)\n* Additional fix for empty requests (Eugene Girshov)\n* Change the default to 1000, to match the new Node behaviour. (Oran
 geDog)\n* Add ability to control maxKeys in the querystring parser. (OrangeDog)\n* Adjust test case to work with node 0.9.x (Eugene Girshov)\n* Update package.json (Sven Lito)\n* Path adjustment according to eb4468b (Markus Ast)\n\n### v1.0.12\n\n* Emit error on aborted connections (Eugene Girshov)\n* Add support for empty requests (Eugene Girshov)\n* Fix name/filename handling in Content-Disposition (jesperp)\n* Tolerate malformed closing boundary in multipart (Eugene Girshov)\n* Ignore preamble in multipart messages (Eugene Girshov)\n* Add support for application/json (Mike Frey, Carlos Rodriguez)\n* Add support for Base64 encoding (Elmer Bulthuis)\n* Add File#toJSON (TJ Holowaychuk)\n* Remove support for Node.js 0.4 & 0.6 (Andrew Kelley)\n* Documentation improvements (Sven Lito, Andre Azevedo)\n* Add support for application/octet-stream (Ion Lupascu, Chris Scribner)\n* Use os.tmpDir() to get tmp directory (Andrew Kelley)\n* Improve package.json (Andrew Kelley, Sven Lito)\n* Fix b
 enchmark script (Andrew Kelley)\n* Fix scope issue in incoming_forms (Sven Lito)\n* Fix file handle leak on error (OrangeDog)\n\n### v1.0.11\n\n* Calculate checksums for incoming files (sreuter)\n* Add definition parameters to \"IncomingForm\" as an argument (Math-)\n\n### v1.0.10\n\n* Make parts to be proper Streams (Matt Robenolt)\n\n### v1.0.9\n\n* Emit progress when content length header parsed (Tim KoschĆ¼tzki)\n* Fix Readme syntax due to GitHub changes (goob)\n* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara)\n\n### v1.0.8\n\n* Strip potentially unsafe characters when using `keepExtensions: true`.\n* Switch to utest / urun for testing\n* Add travis build\n\n### v1.0.7\n\n* Remove file from package that was causing problems when installing on windows. (#102)\n* Fix typos in Readme (Jason Davies).\n\n### v1.0.6\n\n* Do not default to the default to the field name for file uploads where\n  filename=\"\".\n\n### v1.0.5\n\n* Support filename=\"\" in mu
 ltipart parts\n* Explain unexpected end() errors in parser better\n\n**Note:** Starting with this version, formidable emits 'file' events for empty\nfile input fields. Previously those were incorrectly emitted as regular file\ninput fields with value = \"\".\n\n### v1.0.4\n\n* Detect a good default tmp directory regardless of platform. (#88)\n\n### v1.0.3\n\n* Fix problems with utf8 characters (#84) / semicolons in filenames (#58)\n* Small performance improvements\n* New test suite and fixture system\n\n### v1.0.2\n\n* Exclude node\\_modules folder from git\n* Implement new `'aborted'` event\n* Fix files in example folder to work with recent node versions\n* Make gently a devDependency\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2)\n\n### v1.0.1\n\n* Fix package.json to refer to proper main directory. (#68, Dean Landolt)\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1)\n\n### v1.0.0\n\n* Add support for multip
 art boundaries that are quoted strings. (Jeff Craig)\n\nThis marks the beginning of development on version 2.0 which will include\nseveral architectural improvements.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0)\n\n### v0.9.11\n\n* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim KoschĆ¼tzki)\n* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class\n\n**Important:** The old property names of the File class will be removed in a\nfuture release.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11)\n\n### Older releases\n\nThese releases were done before starting to maintain the above Changelog:\n\n* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10)\n* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9)\n* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8)\n* [v0.9.7](htt
 ps://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7)\n* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6)\n* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5)\n* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4)\n* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3)\n* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2)\n* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidab
 le/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0)\n\n## License\n\nFormidable is licensed under the MIT license.\n\n## Ports\n\n* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable\n\n## Credits\n\n* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js\n",
-  "readmeFilename": "Readme.md",
-  "dependencies": {},
-  "_id": "formidable@1.0.14",
-  "_from": "formidable@1.0.14"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js
deleted file mode 100644
index 6a94295..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var path = require('path');
-
-var root = path.join(__dirname, '../');
-exports.dir = {
-  root    : root,
-  lib     : root + '/lib',
-  fixture : root + '/test/fixture',
-  tmp     : root + '/test/tmp',
-};
-
-exports.port = 13532;
-
-exports.formidable = require('..');
-exports.assert     = require('assert');
-
-exports.require = function(lib) {
-  return require(exports.dir.lib + '/' + lib);
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/beta-sticker-1.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/beta-sticker-1.png b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/beta-sticker-1.png
deleted file mode 100644
index 20b1a7f..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/beta-sticker-1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/binaryfile.tar.gz
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/binaryfile.tar.gz b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/binaryfile.tar.gz
deleted file mode 100644
index 4a85af7..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/binaryfile.tar.gz and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/blank.gif
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/blank.gif b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/blank.gif
deleted file mode 100755
index 75b945d..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/blank.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt
deleted file mode 100644
index e7a4785..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt
+++ /dev/null
@@ -1 +0,0 @@
-I am a text file with a funky name!

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/menu_separator.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/menu_separator.png b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/menu_separator.png
deleted file mode 100644
index 1c16a71..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/menu_separator.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt
deleted file mode 100644
index 9b6903e..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt
+++ /dev/null
@@ -1 +0,0 @@
-I am a plain text file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md
deleted file mode 100644
index 3c9dbe3..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md
+++ /dev/null
@@ -1,3 +0,0 @@
-* Opera does not allow submitting this file, it shows a warning to the
-  user that the file could not be found instead. Tested in 9.8, 11.51 on OSX.
-  Reported to Opera on 08.09.2011 (tracking email DSK-346009@bugs.opera.com).

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/encoding.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/encoding.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/encoding.js
deleted file mode 100644
index fc22026..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/encoding.js
+++ /dev/null
@@ -1,24 +0,0 @@
-module.exports['menu_seperator.png.http'] = [
-  {type: 'file', name: 'image', filename: 'menu_separator.png', fixture: 'menu_separator.png',
-  sha1: 'c845ca3ea794be298f2a1b79769b71939eaf4e54'}
-];
-
-module.exports['beta-sticker-1.png.http'] = [
-  {type: 'file', name: 'sticker', filename: 'beta-sticker-1.png', fixture: 'beta-sticker-1.png',
-  sha1: '6abbcffd12b4ada5a6a084fe9e4584f846331bc4'}
-];
-
-module.exports['blank.gif.http'] = [
-  {type: 'file', name: 'file', filename: 'blank.gif', fixture: 'blank.gif',
-  sha1: 'a1fdee122b95748d81cee426d717c05b5174fe96'}
-];
-
-module.exports['binaryfile.tar.gz.http'] = [
-  {type: 'file', name: 'file', filename: 'binaryfile.tar.gz', fixture: 'binaryfile.tar.gz',
-  sha1: 'cfabe13b348e5e69287d677860880c52a69d2155'}
-];
-
-module.exports['plain.txt.http'] = [
-  {type: 'file', name: 'file', filename: 'plain.txt', fixture: 'plain.txt',
-  sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}
-];

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/misc.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/misc.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/misc.js
deleted file mode 100644
index 4489176..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/misc.js
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = {
-  'empty.http': [],
-  'empty-urlencoded.http': [],
-  'empty-multipart.http': [],
-  'minimal.http': [],
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js
deleted file mode 100644
index f03b4f0..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js
+++ /dev/null
@@ -1,9 +0,0 @@
-module.exports['generic.http'] = [
-  {type: 'file', name: 'upload', filename: '', fixture: 'plain.txt',
-  sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'},
-];
-
-module.exports['filename-name.http'] = [
-  {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt',
-  sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'},
-];

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/preamble.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/preamble.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/preamble.js
deleted file mode 100644
index d2e4cfd..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/preamble.js
+++ /dev/null
@@ -1,9 +0,0 @@
-module.exports['crlf.http'] = [
-  {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt',
-  sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'},
-];
-
-module.exports['preamble.http'] = [
-  {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt',
-  sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'},
-];

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js
deleted file mode 100644
index eb76fdc..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var properFilename = 'funkyfilename.txt';
-
-function expect(filename) {
-  return [
-    {type: 'field', name: 'title', value: 'Weird filename'},
-    {type: 'file', name: 'upload', filename: filename, fixture: properFilename},
-  ];
-};
-
-var webkit = " ? % * | \" < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt";
-var ffOrIe = " ? % * | \" < > . ā˜ƒ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt";
-
-module.exports = {
-  'osx-chrome-13.http'   : expect(webkit),
-  'osx-firefox-3.6.http' : expect(ffOrIe),
-  'osx-safari-5.http'    : expect(webkit),
-  'xp-chrome-12.http'    : expect(webkit),
-  'xp-ie-7.http'         : expect(ffOrIe),
-  'xp-ie-8.http'         : expect(ffOrIe),
-  'xp-safari-5.http'     : expect(webkit),
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/workarounds.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/workarounds.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/workarounds.js
deleted file mode 100644
index e59c5b2..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/workarounds.js
+++ /dev/null
@@ -1,8 +0,0 @@
-module.exports['missing-hyphens1.http'] = [
-  {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt',
-  sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'},
-];
-module.exports['missing-hyphens2.http'] = [
-  {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt',
-  sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'},
-];

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js
deleted file mode 100644
index a476169..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js
+++ /dev/null
@@ -1,72 +0,0 @@
-exports['rfc1867'] =
-  { boundary: 'AaB03x',
-    raw:
-      '--AaB03x\r\n'+
-      'content-disposition: form-data; name="field1"\r\n'+
-      '\r\n'+
-      'Joe Blow\r\nalmost tricked you!\r\n'+
-      '--AaB03x\r\n'+
-      'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+
-      'Content-Type: text/plain\r\n'+
-      '\r\n'+
-      '... contents of file1.txt ...\r\r\n'+
-      '--AaB03x--\r\n',
-    parts:
-    [ { headers: {
-          'content-disposition': 'form-data; name="field1"',
-        },
-        data: 'Joe Blow\r\nalmost tricked you!',
-      },
-      { headers: {
-          'content-disposition': 'form-data; name="pics"; filename="file1.txt"',
-          'Content-Type': 'text/plain',
-        },
-        data: '... contents of file1.txt ...\r',
-      }
-    ]
-  };
-
-exports['noTrailing\r\n'] =
-  { boundary: 'AaB03x',
-    raw:
-      '--AaB03x\r\n'+
-      'content-disposition: form-data; name="field1"\r\n'+
-      '\r\n'+
-      'Joe Blow\r\nalmost tricked you!\r\n'+
-      '--AaB03x\r\n'+
-      'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+
-      'Content-Type: text/plain\r\n'+
-      '\r\n'+
-      '... contents of file1.txt ...\r\r\n'+
-      '--AaB03x--',
-    parts:
-    [ { headers: {
-          'content-disposition': 'form-data; name="field1"',
-        },
-        data: 'Joe Blow\r\nalmost tricked you!',
-      },
-      { headers: {
-          'content-disposition': 'form-data; name="pics"; filename="file1.txt"',
-          'Content-Type': 'text/plain',
-        },
-        data: '... contents of file1.txt ...\r',
-      }
-    ]
-  };
-
-exports['emptyHeader'] =
-  { boundary: 'AaB03x',
-    raw:
-      '--AaB03x\r\n'+
-      'content-disposition: form-data; name="field1"\r\n'+
-      ': foo\r\n'+
-      '\r\n'+
-      'Joe Blow\r\nalmost tricked you!\r\n'+
-      '--AaB03x\r\n'+
-      'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+
-      'Content-Type: text/plain\r\n'+
-      '\r\n'+
-      '... contents of file1.txt ...\r\r\n'+
-      '--AaB03x--\r\n',
-    expectError: true,
-  };

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js
deleted file mode 100644
index 8e10ac9..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js
+++ /dev/null
@@ -1,96 +0,0 @@
-var hashish = require('hashish');
-var fs = require('fs');
-var findit = require('findit');
-var path = require('path');
-var http = require('http');
-var net = require('net');
-var assert = require('assert');
-
-var common = require('../common');
-var formidable = common.formidable;
-
-var server = http.createServer();
-server.listen(common.port, findFixtures);
-
-function findFixtures() {
-  var fixtures = [];
-  findit
-    .sync(common.dir.fixture + '/js')
-    .forEach(function(jsPath) {
-      if (!/\.js$/.test(jsPath)) return;
-
-      var group = path.basename(jsPath, '.js');
-      hashish.forEach(require(jsPath), function(fixture, name) {
-        fixtures.push({
-          name    : group + '/' + name,
-          fixture : fixture,
-        });
-      });
-    });
-
-  testNext(fixtures);
-}
-
-function testNext(fixtures) {
-  var fixture = fixtures.shift();
-  if (!fixture) return server.close();
-
-  var name    = fixture.name;
-  var fixture = fixture.fixture;
-
-  uploadFixture(name, function(err, parts) {
-    if (err) throw err;
-
-    fixture.forEach(function(expectedPart, i) {
-      var parsedPart = parts[i];
-      assert.equal(parsedPart.type, expectedPart.type);
-      assert.equal(parsedPart.name, expectedPart.name);
-
-      if (parsedPart.type === 'file') {
-        var file = parsedPart.value;
-        assert.equal(file.name, expectedPart.filename);
-        if(expectedPart.sha1) assert.equal(file.hash, expectedPart.sha1);
-      }
-    });
-
-    testNext(fixtures);
-  });
-};
-
-function uploadFixture(name, cb) {
-  server.once('request', function(req, res) {
-    var form = new formidable.IncomingForm();
-    form.uploadDir = common.dir.tmp;
-    form.hash = "sha1";
-    form.parse(req);
-
-    function callback() {
-      var realCallback = cb;
-      cb = function() {};
-      realCallback.apply(null, arguments);
-    }
-
-    var parts = [];
-    form
-      .on('error', callback)
-      .on('fileBegin', function(name, value) {
-        parts.push({type: 'file', name: name, value: value});
-      })
-      .on('field', function(name, value) {
-        parts.push({type: 'field', name: name, value: value});
-      })
-      .on('end', function() {
-        res.end('OK');
-        callback(null, parts);
-      });
-  });
-
-  var socket = net.createConnection(common.port);
-  var file = fs.createReadStream(common.dir.fixture + '/http/' + name);
-
-  file.pipe(socket, {end: false});
-  socket.on('data', function () {
-    socket.end();
-  });
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-json.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-json.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-json.js
deleted file mode 100644
index 28e758e..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-json.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var common = require('../common');
-var formidable = common.formidable;
-var http = require('http');
-var assert = require('assert');
-
-var testData = {
-  numbers: [1, 2, 3, 4, 5],
-  nested: { key: 'value' }
-};
-
-var server = http.createServer(function(req, res) {
-    var form = new formidable.IncomingForm();
-
-    form.parse(req, function(err, fields, files) {
-        assert.deepEqual(fields, testData);
-
-        res.end();
-        server.close();
-    });
-});
-
-var port = common.port;
-
-server.listen(port, function(err){
-    assert.equal(err, null);
-
-    var request = http.request({
-        port: port,
-        method: 'POST',
-        headers: {
-            'Content-Type': 'application/json'
-        }
-    });
-
-    request.write(JSON.stringify(testData));
-    request.end();
-});
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-octet-stream.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-octet-stream.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-octet-stream.js
deleted file mode 100644
index 643d2c6..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-octet-stream.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var common = require('../common');
-var formidable = common.formidable;
-var http = require('http');
-var fs = require('fs');
-var path = require('path');
-var hashish = require('hashish');
-var assert = require('assert');
-
-var testFilePath = path.join(__dirname, '../fixture/file/binaryfile.tar.gz');
-
-var server = http.createServer(function(req, res) {
-    var form = new formidable.IncomingForm();
-
-    form.parse(req, function(err, fields, files) {
-        assert.equal(hashish(files).length, 1);
-        var file = files.file;
-
-        assert.equal(file.size, 301);
-
-        var uploaded = fs.readFileSync(file.path);
-        var original = fs.readFileSync(testFilePath);
-
-        assert.deepEqual(uploaded, original);
-
-        res.end();
-        server.close();
-    });
-});
-
-var port = common.port;
-
-server.listen(port, function(err){
-    assert.equal(err, null);
-
-    var request = http.request({
-        port: port,
-        method: 'POST',
-        headers: {
-            'Content-Type': 'application/octet-stream'
-        }
-    });
-
-    fs.createReadStream(testFilePath).pipe(request);
-});
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js
deleted file mode 100644
index 2b98598..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var path = require('path'),
-    fs = require('fs');
-
-try {
-  global.Gently = require('gently');
-} catch (e) {
-  throw new Error('this test suite requires node-gently');
-}
-
-exports.lib = path.join(__dirname, '../../lib');
-
-global.GENTLY = new Gently();
-
-global.assert = require('assert');
-global.TEST_PORT = 13532;
-global.TEST_FIXTURES = path.join(__dirname, '../fixture');
-global.TEST_TMP = path.join(__dirname, '../tmp');
-
-// Stupid new feature in node that complains about gently attaching too many
-// listeners to process 'exit'. This is a workaround until I can think of a
-// better way to deal with this.
-if (process.setMaxListeners) {
-  process.setMaxListeners(10000);
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js
deleted file mode 100644
index 75232aa..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js
+++ /dev/null
@@ -1,80 +0,0 @@
-var common = require('../common');
-var CHUNK_LENGTH = 10,
-    multipartParser = require(common.lib + '/multipart_parser'),
-    MultipartParser = multipartParser.MultipartParser,
-    parser = new MultipartParser(),
-    fixtures = require(TEST_FIXTURES + '/multipart'),
-    Buffer = require('buffer').Buffer;
-
-Object.keys(fixtures).forEach(function(name) {
-  var fixture = fixtures[name],
-      buffer = new Buffer(Buffer.byteLength(fixture.raw, 'binary')),
-      offset = 0,
-      chunk,
-      nparsed,
-
-      parts = [],
-      part = null,
-      headerField,
-      headerValue,
-      endCalled = '';
-
-  parser.initWithBoundary(fixture.boundary);
-  parser.onPartBegin = function() {
-    part = {headers: {}, data: ''};
-    parts.push(part);
-    headerField = '';
-    headerValue = '';
-  };
-
-  parser.onHeaderField = function(b, start, end) {
-    headerField += b.toString('ascii', start, end);
-  };
-
-  parser.onHeaderValue = function(b, start, end) {
-    headerValue += b.toString('ascii', start, end);
-  }
-
-  parser.onHeaderEnd = function() {
-    part.headers[headerField] = headerValue;
-    headerField = '';
-    headerValue = '';
-  };
-
-  parser.onPartData = function(b, start, end) {
-    var str = b.toString('ascii', start, end);
-    part.data += b.slice(start, end);
-  }
-
-  parser.onEnd = function() {
-    endCalled = true;
-  }
-
-  buffer.write(fixture.raw, 'binary', 0);
-
-  while (offset < buffer.length) {
-    if (offset + CHUNK_LENGTH < buffer.length) {
-      chunk = buffer.slice(offset, offset+CHUNK_LENGTH);
-    } else {
-      chunk = buffer.slice(offset, buffer.length);
-    }
-    offset = offset + CHUNK_LENGTH;
-
-    nparsed = parser.write(chunk);
-    if (nparsed != chunk.length) {
-      if (fixture.expectError) {
-        return;
-      }
-      puts('-- ERROR --');
-      p(chunk.toString('ascii'));
-      throw new Error(chunk.length+' bytes written, but only '+nparsed+' bytes parsed!');
-    }
-  }
-
-  if (fixture.expectError) {
-    throw new Error('expected parse error did not happen');
-  }
-
-  assert.ok(endCalled);
-  assert.deepEqual(parts, fixture.parts);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js
deleted file mode 100644
index 52ceedb..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js
+++ /dev/null
@@ -1,104 +0,0 @@
-var common = require('../common');
-var WriteStreamStub = GENTLY.stub('fs', 'WriteStream');
-
-var File = require(common.lib + '/file'),
-    EventEmitter = require('events').EventEmitter,
-    file,
-    gently;
-
-function test(test) {
-  gently = new Gently();
-  file = new File();
-  test();
-  gently.verify(test.name);
-}
-
-test(function constructor() {
-  assert.ok(file instanceof EventEmitter);
-  assert.strictEqual(file.size, 0);
-  assert.strictEqual(file.path, null);
-  assert.strictEqual(file.name, null);
-  assert.strictEqual(file.type, null);
-  assert.strictEqual(file.lastModifiedDate, null);
-
-  assert.strictEqual(file._writeStream, null);
-
-  (function testSetProperties() {
-    var file2 = new File({foo: 'bar'});
-    assert.equal(file2.foo, 'bar');
-  })();
-});
-
-test(function open() {
-  var WRITE_STREAM;
-  file.path = '/foo';
-
-  gently.expect(WriteStreamStub, 'new', function (path) {
-    WRITE_STREAM = this;
-    assert.strictEqual(path, file.path);
-  });
-
-  file.open();
-  assert.strictEqual(file._writeStream, WRITE_STREAM);
-});
-
-test(function write() {
-  var BUFFER = {length: 10},
-      CB_STUB,
-      CB = function() {
-        CB_STUB.apply(this, arguments);
-      };
-
-  file._writeStream = {};
-
-  gently.expect(file._writeStream, 'write', function (buffer, cb) {
-    assert.strictEqual(buffer, BUFFER);
-
-    gently.expect(file, 'emit', function (event, bytesWritten) {
-      assert.ok(file.lastModifiedDate instanceof Date);
-      assert.equal(event, 'progress');
-      assert.equal(bytesWritten, file.size);
-    });
-
-    CB_STUB = gently.expect(function writeCb() {
-      assert.equal(file.size, 10);
-    });
-
-    cb();
-
-    gently.expect(file, 'emit', function (event, bytesWritten) {
-      assert.equal(event, 'progress');
-      assert.equal(bytesWritten, file.size);
-    });
-
-    CB_STUB = gently.expect(function writeCb() {
-      assert.equal(file.size, 20);
-    });
-
-    cb();
-  });
-
-  file.write(BUFFER, CB);
-});
-
-test(function end() {
-  var CB_STUB,
-      CB = function() {
-        CB_STUB.apply(this, arguments);
-      };
-
-  file._writeStream = {};
-
-  gently.expect(file._writeStream, 'end', function (cb) {
-    gently.expect(file, 'emit', function (event) {
-      assert.equal(event, 'end');
-    });
-
-    CB_STUB = gently.expect(function endCb() {
-    });
-
-    cb();
-  });
-
-  file.end(CB);
-});


[76/98] [abbrv] incubator-apex-malhar git commit: Merge branch 'MLHR-1886-3.2' into release-3.2

Posted by da...@apache.org.
Merge branch 'MLHR-1886-3.2' into release-3.2


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/146e4a0d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/146e4a0d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/146e4a0d

Branch: refs/heads/master
Commit: 146e4a0df21ee0f64fac648d7580691fefa7fbfe
Parents: 73c8abf 5d8382d
Author: Timothy Farkas <ti...@datatorrent.com>
Authored: Thu Nov 5 17:35:06 2015 -0800
Committer: Timothy Farkas <ti...@datatorrent.com>
Committed: Thu Nov 5 17:35:06 2015 -0800

----------------------------------------------------------------------
 .../lib/io/fs/AbstractFileOutputOperator.java   | 61 +++++++++++++++-----
 1 file changed, 46 insertions(+), 15 deletions(-)
----------------------------------------------------------------------



[28/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/lib/send.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/lib/send.js b/web/demos/package/node_modules/express/node_modules/send/lib/send.js
deleted file mode 100644
index a3d94a6..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/lib/send.js
+++ /dev/null
@@ -1,474 +0,0 @@
-
-/**
- * Module dependencies.
- */
-
-var debug = require('debug')('send')
-  , parseRange = require('range-parser')
-  , Stream = require('stream')
-  , mime = require('mime')
-  , fresh = require('fresh')
-  , path = require('path')
-  , http = require('http')
-  , fs = require('fs')
-  , basename = path.basename
-  , normalize = path.normalize
-  , join = path.join
-  , utils = require('./utils');
-
-/**
- * Expose `send`.
- */
-
-exports = module.exports = send;
-
-/**
- * Expose mime module.
- */
-
-exports.mime = mime;
-
-/**
- * Return a `SendStream` for `req` and `path`.
- *
- * @param {Request} req
- * @param {String} path
- * @param {Object} options
- * @return {SendStream}
- * @api public
- */
-
-function send(req, path, options) {
-  return new SendStream(req, path, options);
-}
-
-/**
- * Initialize a `SendStream` with the given `path`.
- *
- * Events:
- *
- *  - `error` an error occurred
- *  - `stream` file streaming has started
- *  - `end` streaming has completed
- *  - `directory` a directory was requested
- *
- * @param {Request} req
- * @param {String} path
- * @param {Object} options
- * @api private
- */
-
-function SendStream(req, path, options) {
-  var self = this;
-  this.req = req;
-  this.path = path;
-  this.options = options || {};
-  this.maxage(0);
-  this.hidden(false);
-  this.index('index.html');
-}
-
-/**
- * Inherits from `Stream.prototype`.
- */
-
-SendStream.prototype.__proto__ = Stream.prototype;
-
-/**
- * Enable or disable "hidden" (dot) files.
- *
- * @param {Boolean} path
- * @return {SendStream}
- * @api public
- */
-
-SendStream.prototype.hidden = function(val){
-  debug('hidden %s', val);
-  this._hidden = val;
-  return this;
-};
-
-/**
- * Set index `path`, set to a falsy
- * value to disable index support.
- *
- * @param {String|Boolean} path
- * @return {SendStream}
- * @api public
- */
-
-SendStream.prototype.index = function(path){
-  debug('index %s', path);
-  this._index = path;
-  return this;
-};
-
-/**
- * Set root `path`.
- *
- * @param {String} path
- * @return {SendStream}
- * @api public
- */
-
-SendStream.prototype.root = 
-SendStream.prototype.from = function(path){
-  this._root = normalize(path);
-  return this;
-};
-
-/**
- * Set max-age to `ms`.
- *
- * @param {Number} ms
- * @return {SendStream}
- * @api public
- */
-
-SendStream.prototype.maxage = function(ms){
-  if (Infinity == ms) ms = 60 * 60 * 24 * 365 * 1000;
-  debug('max-age %d', ms);
-  this._maxage = ms;
-  return this;
-};
-
-/**
- * Emit error with `status`.
- *
- * @param {Number} status
- * @api private
- */
-
-SendStream.prototype.error = function(status, err){
-  var res = this.res;
-  var msg = http.STATUS_CODES[status];
-  err = err || new Error(msg);
-  err.status = status;
-  if (this.listeners('error').length) return this.emit('error', err);
-  res.statusCode = err.status;
-  res.end(msg);
-};
-
-/**
- * Check if the pathname is potentially malicious.
- *
- * @return {Boolean}
- * @api private
- */
-
-SendStream.prototype.isMalicious = function(){
-  return !this._root && ~this.path.indexOf('..');
-};
-
-/**
- * Check if the pathname ends with "/".
- *
- * @return {Boolean}
- * @api private
- */
-
-SendStream.prototype.hasTrailingSlash = function(){
-  return '/' == this.path[this.path.length - 1];
-};
-
-/**
- * Check if the basename leads with ".".
- *
- * @return {Boolean}
- * @api private
- */
-
-SendStream.prototype.hasLeadingDot = function(){
-  return '.' == basename(this.path)[0];
-};
-
-/**
- * Check if this is a conditional GET request.
- *
- * @return {Boolean}
- * @api private
- */
-
-SendStream.prototype.isConditionalGET = function(){
-  return this.req.headers['if-none-match']
-    || this.req.headers['if-modified-since'];
-};
-
-/**
- * Strip content-* header fields.
- *
- * @api private
- */
-
-SendStream.prototype.removeContentHeaderFields = function(){
-  var res = this.res;
-  Object.keys(res._headers).forEach(function(field){
-    if (0 == field.indexOf('content')) {
-      res.removeHeader(field);
-    }
-  });
-};
-
-/**
- * Respond with 304 not modified.
- *
- * @api private
- */
-
-SendStream.prototype.notModified = function(){
-  var res = this.res;
-  debug('not modified');
-  this.removeContentHeaderFields();
-  res.statusCode = 304;
-  res.end();
-};
-
-/**
- * Check if the request is cacheable, aka
- * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}).
- *
- * @return {Boolean}
- * @api private
- */
-
-SendStream.prototype.isCachable = function(){
-  var res = this.res;
-  return (res.statusCode >= 200 && res.statusCode < 300) || 304 == res.statusCode;
-};
-
-/**
- * Handle stat() error.
- *
- * @param {Error} err
- * @api private
- */
-
-SendStream.prototype.onStatError = function(err){
-  var notfound = ['ENOENT', 'ENAMETOOLONG', 'ENOTDIR'];
-  if (~notfound.indexOf(err.code)) return this.error(404, err);
-  this.error(500, err);
-};
-
-/**
- * Check if the cache is fresh.
- *
- * @return {Boolean}
- * @api private
- */
-
-SendStream.prototype.isFresh = function(){
-  return fresh(this.req.headers, this.res._headers);
-};
-
-/**
- * Redirect to `path`.
- *
- * @param {String} path
- * @api private
- */
-
-SendStream.prototype.redirect = function(path){
-  if (this.listeners('directory').length) return this.emit('directory');
-  var res = this.res;
-  path += '/';
-  res.statusCode = 301;
-  res.setHeader('Location', path);
-  res.end('Redirecting to ' + utils.escape(path));
-};
-
-/**
- * Pipe to `res.
- *
- * @param {Stream} res
- * @return {Stream} res
- * @api public
- */
-
-SendStream.prototype.pipe = function(res){
-  var self = this
-    , args = arguments
-    , path = this.path
-    , root = this._root;
-
-  // references
-  this.res = res;
-
-  // invalid request uri
-  path = utils.decode(path);
-  if (-1 == path) return this.error(400);
-
-  // null byte(s)
-  if (~path.indexOf('\0')) return this.error(400);
-
-  // join / normalize from optional root dir
-  if (root) path = normalize(join(this._root, path));
-
-  // ".." is malicious without "root"
-  if (this.isMalicious()) return this.error(403);
-
-  // malicious path
-  if (root && 0 != path.indexOf(root)) return this.error(403);
-
-  // hidden file support
-  if (!this._hidden && this.hasLeadingDot()) return this.error(404);
-
-  // index file support
-  if (this._index && this.hasTrailingSlash()) path += this._index;
-
-  debug('stat "%s"', path);
-  fs.stat(path, function(err, stat){
-    if (err) return self.onStatError(err);
-    if (stat.isDirectory()) return self.redirect(self.path);
-    self.emit('file', path, stat);
-    self.send(path, stat);
-  });
-
-  return res;
-};
-
-/**
- * Transfer `path`.
- *
- * @param {String} path
- * @api public
- */
-
-SendStream.prototype.send = function(path, stat){
-  var options = this.options;
-  var len = stat.size;
-  var res = this.res;
-  var req = this.req;
-  var ranges = req.headers.range;
-  var offset = options.start || 0;
-
-  // set header fields
-  this.setHeader(stat);
-
-  // set content-type
-  this.type(path);
-
-  // conditional GET support
-  if (this.isConditionalGET()
-    && this.isCachable()
-    && this.isFresh()) {
-    return this.notModified();
-  }
-
-  // adjust len to start/end options
-  len = Math.max(0, len - offset);
-  if (options.end !== undefined) {
-    var bytes = options.end - offset + 1;
-    if (len > bytes) len = bytes;
-  }
-
-  // Range support
-  if (ranges) {
-    ranges = parseRange(len, ranges);
-
-    // unsatisfiable
-    if (-1 == ranges) {
-      res.setHeader('Content-Range', 'bytes */' + stat.size);
-      return this.error(416);
-    }
-
-    // valid (syntactically invalid ranges are treated as a regular response)
-    if (-2 != ranges) {
-      options.start = offset + ranges[0].start;
-      options.end = offset + ranges[0].end;
-
-      // Content-Range
-      res.statusCode = 206;
-      res.setHeader('Content-Range', 'bytes '
-        + ranges[0].start
-        + '-'
-        + ranges[0].end
-        + '/'
-        + len);
-      len = options.end - options.start + 1;
-    }
-  }
-
-  // content-length
-  res.setHeader('Content-Length', len);
-
-  // HEAD support
-  if ('HEAD' == req.method) return res.end();
-
-  this.stream(path, options);
-};
-
-/**
- * Stream `path` to the response.
- *
- * @param {String} path
- * @param {Object} options
- * @api private
- */
-
-SendStream.prototype.stream = function(path, options){
-  // TODO: this is all lame, refactor meeee
-  var self = this;
-  var res = this.res;
-  var req = this.req;
-
-  // pipe
-  var stream = fs.createReadStream(path, options);
-  this.emit('stream', stream);
-  stream.pipe(res);
-
-  // socket closed, done with the fd
-  req.on('close', stream.destroy.bind(stream));
-
-  // error handling code-smell
-  stream.on('error', function(err){
-    // no hope in responding
-    if (res._header) {
-      console.error(err.stack);
-      req.destroy();
-      return;
-    }
-
-    // 500
-    err.status = 500;
-    self.emit('error', err);
-  });
-
-  // end
-  stream.on('end', function(){
-    self.emit('end');
-  });
-};
-
-/**
- * Set content-type based on `path`
- * if it hasn't been explicitly set.
- *
- * @param {String} path
- * @api private
- */
-
-SendStream.prototype.type = function(path){
-  var res = this.res;
-  if (res.getHeader('Content-Type')) return;
-  var type = mime.lookup(path);
-  var charset = mime.charsets.lookup(type);
-  debug('content-type %s', type);
-  res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : ''));
-};
-
-/**
- * Set reaponse header fields, most
- * fields may be pre-defined.
- *
- * @param {Object} stat
- * @api private
- */
-
-SendStream.prototype.setHeader = function(stat){
-  var res = this.res;
-  if (!res.getHeader('Accept-Ranges')) res.setHeader('Accept-Ranges', 'bytes');
-  if (!res.getHeader('ETag')) res.setHeader('ETag', utils.etag(stat));
-  if (!res.getHeader('Date')) res.setHeader('Date', new Date().toUTCString());
-  if (!res.getHeader('Cache-Control')) res.setHeader('Cache-Control', 'public, max-age=' + (this._maxage / 1000));
-  if (!res.getHeader('Last-Modified')) res.setHeader('Last-Modified', stat.mtime.toUTCString());
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/lib/utils.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/lib/utils.js b/web/demos/package/node_modules/express/node_modules/send/lib/utils.js
deleted file mode 100644
index 950e5a2..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/lib/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-
-/**
- * Return an ETag in the form of `"<size>-<mtime>"`
- * from the given `stat`.
- *
- * @param {Object} stat
- * @return {String}
- * @api private
- */
-
-exports.etag = function(stat) {
-  return '"' + stat.size + '-' + Number(stat.mtime) + '"';
-};
-
-/**
- * decodeURIComponent.
- *
- * Allows V8 to only deoptimize this fn instead of all
- * of send().
- *
- * @param {String} path
- * @api private
- */
-
-exports.decode = function(path){
-  try {
-    return decodeURIComponent(path);
-  } catch (err) {
-    return -1;
-  }
-};
-
-/**
- * Escape the given string of `html`.
- *
- * @param {String} html
- * @return {String}
- * @api private
- */
-
-exports.escape = function(html){
-  return String(html)
-    .replace(/&(?!\w+;)/g, '&amp;')
-    .replace(/</g, '&lt;')
-    .replace(/>/g, '&gt;')
-    .replace(/"/g, '&quot;');
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/LICENSE b/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/LICENSE
deleted file mode 100644
index 451fc45..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010 Benjamin Thomas, Robert Kieffer
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/README.md b/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/README.md
deleted file mode 100644
index 6ca19bd..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# mime
-
-Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.
-
-## Install
-
-Install with [npm](http://github.com/isaacs/npm):
-
-    npm install mime
-
-## API - Queries
-
-### mime.lookup(path)
-Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.').  E.g.
-
-    var mime = require('mime');
-
-    mime.lookup('/path/to/file.txt');         // => 'text/plain'
-    mime.lookup('file.txt');                  // => 'text/plain'
-    mime.lookup('.TXT');                      // => 'text/plain'
-    mime.lookup('htm');                       // => 'text/html'
-
-### mime.default_type
-Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.)
-
-### mime.extension(type)
-Get the default extension for `type`
-
-    mime.extension('text/html');                 // => 'html'
-    mime.extension('application/octet-stream');  // => 'bin'
-
-### mime.charsets.lookup()
-
-Map mime-type to charset
-
-    mime.charsets.lookup('text/plain');        // => 'UTF-8'
-
-(The logic for charset lookups is pretty rudimentary.  Feel free to suggest improvements.)
-
-## API - Defining Custom Types
-
-The following APIs allow you to add your own type mappings within your project.  If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types).
-
-### mime.define()
-
-Add custom mime/extension mappings
-
-    mime.define({
-        'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],
-        'application/x-my-type': ['x-mt', 'x-mtt'],
-        // etc ...
-    });
-
-    mime.lookup('x-sft');                 // => 'text/x-some-format'
-
-The first entry in the extensions array is returned by `mime.extension()`. E.g.
-
-    mime.extension('text/x-some-format'); // => 'x-sf'
-
-### mime.load(filepath)
-
-Load mappings from an Apache ".types" format file
-
-    mime.load('./my_project.types');
-
-The .types file format is simple -  See the `types` dir for examples.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/mime.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/mime.js b/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/mime.js
deleted file mode 100644
index 48be0c5..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/mime.js
+++ /dev/null
@@ -1,114 +0,0 @@
-var path = require('path');
-var fs = require('fs');
-
-function Mime() {
-  // Map of extension -> mime type
-  this.types = Object.create(null);
-
-  // Map of mime type -> extension
-  this.extensions = Object.create(null);
-}
-
-/**
- * Define mimetype -> extension mappings.  Each key is a mime-type that maps
- * to an array of extensions associated with the type.  The first extension is
- * used as the default extension for the type.
- *
- * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});
- *
- * @param map (Object) type definitions
- */
-Mime.prototype.define = function (map) {
-  for (var type in map) {
-    var exts = map[type];
-
-    for (var i = 0; i < exts.length; i++) {
-      if (process.env.DEBUG_MIME && this.types[exts]) {
-        console.warn(this._loading.replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' +
-          this.types[exts] + ' to ' + type);
-      }
-
-      this.types[exts[i]] = type;
-    }
-
-    // Default extension is the first one we encounter
-    if (!this.extensions[type]) {
-      this.extensions[type] = exts[0];
-    }
-  }
-};
-
-/**
- * Load an Apache2-style ".types" file
- *
- * This may be called multiple times (it's expected).  Where files declare
- * overlapping types/extensions, the last file wins.
- *
- * @param file (String) path of file to load.
- */
-Mime.prototype.load = function(file) {
-
-  this._loading = file;
-  // Read file and split into lines
-  var map = {},
-      content = fs.readFileSync(file, 'ascii'),
-      lines = content.split(/[\r\n]+/);
-
-  lines.forEach(function(line) {
-    // Clean up whitespace/comments, and split into fields
-    var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/);
-    map[fields.shift()] = fields;
-  });
-
-  this.define(map);
-
-  this._loading = null;
-};
-
-/**
- * Lookup a mime type based on extension
- */
-Mime.prototype.lookup = function(path, fallback) {
-  var ext = path.replace(/.*[\.\/\\]/, '').toLowerCase();
-
-  return this.types[ext] || fallback || this.default_type;
-};
-
-/**
- * Return file extension associated with a mime type
- */
-Mime.prototype.extension = function(mimeType) {
-  var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase();
-  return this.extensions[type];
-};
-
-// Default instance
-var mime = new Mime();
-
-// Load local copy of
-// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
-mime.load(path.join(__dirname, 'types/mime.types'));
-
-// Load additional types from node.js community
-mime.load(path.join(__dirname, 'types/node.types'));
-
-// Default type
-mime.default_type = mime.lookup('bin');
-
-//
-// Additional API specific to the default instance
-//
-
-mime.Mime = Mime;
-
-/**
- * Lookup a charset based on mime type.
- */
-mime.charsets = {
-  lookup: function(mimeType, fallback) {
-    // Assume text types are utf8
-    return (/^text\//).test(mimeType) ? 'UTF-8' : fallback;
-  }
-};
-
-module.exports = mime;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/package.json b/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/package.json
deleted file mode 100644
index a975939..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-  "author": {
-    "name": "Robert Kieffer",
-    "email": "robert@broofa.com",
-    "url": "http://github.com/broofa"
-  },
-  "contributors": [
-    {
-      "name": "Benjamin Thomas",
-      "email": "benjamin@benjaminthomas.org",
-      "url": "http://github.com/bentomas"
-    }
-  ],
-  "dependencies": {},
-  "description": "A comprehensive library for mime-type mapping",
-  "devDependencies": {},
-  "keywords": [
-    "util",
-    "mime"
-  ],
-  "main": "mime.js",
-  "name": "mime",
-  "repository": {
-    "url": "https://github.com/broofa/node-mime",
-    "type": "git"
-  },
-  "version": "1.2.11",
-  "readme": "# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n    npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.').  E.g.\n\n    var mime = require('mime');\n\n    mime.lookup('/path/to/file.txt');         // => 'text/plain'\n    mime.lookup('file.txt');                  // => 'text/plain'\n    mime.lookup('.TXT');                      // => 'text/plain'\n    mime.lookup('htm');                       // => 'text/html'\n\n### mime.default_type\nSets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-
 stream`.)\n\n### mime.extension(type)\nGet the default extension for `type`\n\n    mime.extension('text/html');                 // => 'html'\n    mime.extension('application/octet-stream');  // => 'bin'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n    mime.charsets.lookup('text/plain');        // => 'UTF-8'\n\n(The logic for charset lookups is pretty rudimentary.  Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project.  If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n    mime.define({\n        'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n        'application/x-my-type': ['x-mt', 'x-mtt'],\n        // etc ...\n    });\n\n    mime.lookup('x-sft');                 // => 'text/x-some-format'\n\nThe first en
 try in the extensions array is returned by `mime.extension()`. E.g.\n\n    mime.extension('text/x-some-format'); // => 'x-sf'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n    mime.load('./my_project.types');\n\nThe .types file format is simple -  See the `types` dir for examples.\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/broofa/node-mime/issues"
-  },
-  "homepage": "https://github.com/broofa/node-mime",
-  "_id": "mime@1.2.11",
-  "_from": "mime@~1.2.9"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/test.js b/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/test.js
deleted file mode 100644
index 2cda1c7..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/test.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Usage: node test.js
- */
-
-var mime = require('./mime');
-var assert = require('assert');
-var path = require('path');
-
-function eq(a, b) {
-  console.log('Test: ' + a + ' === ' + b);
-  assert.strictEqual.apply(null, arguments);
-}
-
-console.log(Object.keys(mime.extensions).length + ' types');
-console.log(Object.keys(mime.types).length + ' extensions\n');
-
-//
-// Test mime lookups
-//
-
-eq('text/plain', mime.lookup('text.txt'));     // normal file
-eq('text/plain', mime.lookup('TEXT.TXT'));     // uppercase
-eq('text/plain', mime.lookup('dir/text.txt')); // dir + file
-eq('text/plain', mime.lookup('.text.txt'));    // hidden file
-eq('text/plain', mime.lookup('.txt'));         // nameless
-eq('text/plain', mime.lookup('txt'));          // extension-only
-eq('text/plain', mime.lookup('/txt'));         // extension-less ()
-eq('text/plain', mime.lookup('\\txt'));        // Windows, extension-less
-eq('application/octet-stream', mime.lookup('text.nope')); // unrecognized
-eq('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default
-
-//
-// Test extensions
-//
-
-eq('txt', mime.extension(mime.types.text));
-eq('html', mime.extension(mime.types.htm));
-eq('bin', mime.extension('application/octet-stream'));
-eq('bin', mime.extension('application/octet-stream '));
-eq('html', mime.extension(' text/html; charset=UTF-8'));
-eq('html', mime.extension('text/html; charset=UTF-8 '));
-eq('html', mime.extension('text/html; charset=UTF-8'));
-eq('html', mime.extension('text/html ; charset=UTF-8'));
-eq('html', mime.extension('text/html;charset=UTF-8'));
-eq('html', mime.extension('text/Html;charset=UTF-8'));
-eq(undefined, mime.extension('unrecognized'));
-
-//
-// Test node.types lookups
-//
-
-eq('application/font-woff', mime.lookup('file.woff'));
-eq('application/octet-stream', mime.lookup('file.buffer'));
-eq('audio/mp4', mime.lookup('file.m4a'));
-eq('font/opentype', mime.lookup('file.otf'));
-
-//
-// Test charsets
-//
-
-eq('UTF-8', mime.charsets.lookup('text/plain'));
-eq(undefined, mime.charsets.lookup(mime.types.js));
-eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback'));
-
-//
-// Test for overlaps between mime.types and node.types
-//
-
-var apacheTypes = new mime.Mime(), nodeTypes = new mime.Mime();
-apacheTypes.load(path.join(__dirname, 'types/mime.types'));
-nodeTypes.load(path.join(__dirname, 'types/node.types'));
-
-var keys = [].concat(Object.keys(apacheTypes.types))
-             .concat(Object.keys(nodeTypes.types));
-keys.sort();
-for (var i = 1; i < keys.length; i++) {
-  if (keys[i] == keys[i-1]) {
-    console.warn('Warning: ' +
-      'node.types defines ' + keys[i] + '->' + nodeTypes.types[keys[i]] +
-      ', mime.types defines ' + keys[i] + '->' + apacheTypes.types[keys[i]]);
-  }
-}
-
-console.log('\nOK');

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/types/mime.types
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/types/mime.types b/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/types/mime.types
deleted file mode 100644
index da8cd69..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/types/mime.types
+++ /dev/null
@@ -1,1588 +0,0 @@
-# This file maps Internet media types to unique file extension(s).
-# Although created for httpd, this file is used by many software systems
-# and has been placed in the public domain for unlimited redisribution.
-#
-# The table below contains both registered and (common) unregistered types.
-# A type that has no unique extension can be ignored -- they are listed
-# here to guide configurations toward known types and to make it easier to
-# identify "new" types.  File extensions are also commonly used to indicate
-# content languages and encodings, so choose them carefully.
-#
-# Internet media types should be registered as described in RFC 4288.
-# The registry is at <http://www.iana.org/assignments/media-types/>.
-#
-# MIME type (lowercased)			Extensions
-# ============================================	==========
-# application/1d-interleaved-parityfec
-# application/3gpp-ims+xml
-# application/activemessage
-application/andrew-inset			ez
-# application/applefile
-application/applixware				aw
-application/atom+xml				atom
-application/atomcat+xml				atomcat
-# application/atomicmail
-application/atomsvc+xml				atomsvc
-# application/auth-policy+xml
-# application/batch-smtp
-# application/beep+xml
-# application/calendar+xml
-# application/cals-1840
-# application/ccmp+xml
-application/ccxml+xml				ccxml
-application/cdmi-capability			cdmia
-application/cdmi-container			cdmic
-application/cdmi-domain				cdmid
-application/cdmi-object				cdmio
-application/cdmi-queue				cdmiq
-# application/cea-2018+xml
-# application/cellml+xml
-# application/cfw
-# application/cnrp+xml
-# application/commonground
-# application/conference-info+xml
-# application/cpl+xml
-# application/csta+xml
-# application/cstadata+xml
-application/cu-seeme				cu
-# application/cybercash
-application/davmount+xml			davmount
-# application/dca-rft
-# application/dec-dx
-# application/dialog-info+xml
-# application/dicom
-# application/dns
-application/docbook+xml				dbk
-# application/dskpp+xml
-application/dssc+der				dssc
-application/dssc+xml				xdssc
-# application/dvcs
-application/ecmascript				ecma
-# application/edi-consent
-# application/edi-x12
-# application/edifact
-application/emma+xml				emma
-# application/epp+xml
-application/epub+zip				epub
-# application/eshop
-# application/example
-application/exi					exi
-# application/fastinfoset
-# application/fastsoap
-# application/fits
-application/font-tdpfr				pfr
-# application/framework-attributes+xml
-application/gml+xml				gml
-application/gpx+xml				gpx
-application/gxf					gxf
-# application/h224
-# application/held+xml
-# application/http
-application/hyperstudio				stk
-# application/ibe-key-request+xml
-# application/ibe-pkg-reply+xml
-# application/ibe-pp-data
-# application/iges
-# application/im-iscomposing+xml
-# application/index
-# application/index.cmd
-# application/index.obj
-# application/index.response
-# application/index.vnd
-application/inkml+xml				ink inkml
-# application/iotp
-application/ipfix				ipfix
-# application/ipp
-# application/isup
-application/java-archive			jar
-application/java-serialized-object		ser
-application/java-vm				class
-application/javascript				js
-application/json				json
-application/jsonml+json				jsonml
-# application/kpml-request+xml
-# application/kpml-response+xml
-application/lost+xml				lostxml
-application/mac-binhex40			hqx
-application/mac-compactpro			cpt
-# application/macwriteii
-application/mads+xml				mads
-application/marc				mrc
-application/marcxml+xml				mrcx
-application/mathematica				ma nb mb
-# application/mathml-content+xml
-# application/mathml-presentation+xml
-application/mathml+xml				mathml
-# application/mbms-associated-procedure-description+xml
-# application/mbms-deregister+xml
-# application/mbms-envelope+xml
-# application/mbms-msk+xml
-# application/mbms-msk-response+xml
-# application/mbms-protection-description+xml
-# application/mbms-reception-report+xml
-# application/mbms-register+xml
-# application/mbms-register-response+xml
-# application/mbms-user-service-description+xml
-application/mbox				mbox
-# application/media_control+xml
-application/mediaservercontrol+xml		mscml
-application/metalink+xml			metalink
-application/metalink4+xml			meta4
-application/mets+xml				mets
-# application/mikey
-application/mods+xml				mods
-# application/moss-keys
-# application/moss-signature
-# application/mosskey-data
-# application/mosskey-request
-application/mp21				m21 mp21
-application/mp4					mp4s
-# application/mpeg4-generic
-# application/mpeg4-iod
-# application/mpeg4-iod-xmt
-# application/msc-ivr+xml
-# application/msc-mixer+xml
-application/msword				doc dot
-application/mxf					mxf
-# application/nasdata
-# application/news-checkgroups
-# application/news-groupinfo
-# application/news-transmission
-# application/nss
-# application/ocsp-request
-# application/ocsp-response
-application/octet-stream	bin dms lrf mar so dist distz pkg bpk dump elc deploy
-application/oda					oda
-application/oebps-package+xml			opf
-application/ogg					ogx
-application/omdoc+xml				omdoc
-application/onenote				onetoc onetoc2 onetmp onepkg
-application/oxps				oxps
-# application/parityfec
-application/patch-ops-error+xml			xer
-application/pdf					pdf
-application/pgp-encrypted			pgp
-# application/pgp-keys
-application/pgp-signature			asc sig
-application/pics-rules				prf
-# application/pidf+xml
-# application/pidf-diff+xml
-application/pkcs10				p10
-application/pkcs7-mime				p7m p7c
-application/pkcs7-signature			p7s
-application/pkcs8				p8
-application/pkix-attr-cert			ac
-application/pkix-cert				cer
-application/pkix-crl				crl
-application/pkix-pkipath			pkipath
-application/pkixcmp				pki
-application/pls+xml				pls
-# application/poc-settings+xml
-application/postscript				ai eps ps
-# application/prs.alvestrand.titrax-sheet
-application/prs.cww				cww
-# application/prs.nprend
-# application/prs.plucker
-# application/prs.rdf-xml-crypt
-# application/prs.xsf+xml
-application/pskc+xml				pskcxml
-# application/qsig
-application/rdf+xml				rdf
-application/reginfo+xml				rif
-application/relax-ng-compact-syntax		rnc
-# application/remote-printing
-application/resource-lists+xml			rl
-application/resource-lists-diff+xml		rld
-# application/riscos
-# application/rlmi+xml
-application/rls-services+xml			rs
-application/rpki-ghostbusters			gbr
-application/rpki-manifest			mft
-application/rpki-roa				roa
-# application/rpki-updown
-application/rsd+xml				rsd
-application/rss+xml				rss
-application/rtf					rtf
-# application/rtx
-# application/samlassertion+xml
-# application/samlmetadata+xml
-application/sbml+xml				sbml
-application/scvp-cv-request			scq
-application/scvp-cv-response			scs
-application/scvp-vp-request			spq
-application/scvp-vp-response			spp
-application/sdp					sdp
-# application/set-payment
-application/set-payment-initiation		setpay
-# application/set-registration
-application/set-registration-initiation		setreg
-# application/sgml
-# application/sgml-open-catalog
-application/shf+xml				shf
-# application/sieve
-# application/simple-filter+xml
-# application/simple-message-summary
-# application/simplesymbolcontainer
-# application/slate
-# application/smil
-application/smil+xml				smi smil
-# application/soap+fastinfoset
-# application/soap+xml
-application/sparql-query			rq
-application/sparql-results+xml			srx
-# application/spirits-event+xml
-application/srgs				gram
-application/srgs+xml				grxml
-application/sru+xml				sru
-application/ssdl+xml				ssdl
-application/ssml+xml				ssml
-# application/tamp-apex-update
-# application/tamp-apex-update-confirm
-# application/tamp-community-update
-# application/tamp-community-update-confirm
-# application/tamp-error
-# application/tamp-sequence-adjust
-# application/tamp-sequence-adjust-confirm
-# application/tamp-status-query
-# application/tamp-status-response
-# application/tamp-update
-# application/tamp-update-confirm
-application/tei+xml				tei teicorpus
-application/thraud+xml				tfi
-# application/timestamp-query
-# application/timestamp-reply
-application/timestamped-data			tsd
-# application/tve-trigger
-# application/ulpfec
-# application/vcard+xml
-# application/vemmi
-# application/vividence.scriptfile
-# application/vnd.3gpp.bsf+xml
-application/vnd.3gpp.pic-bw-large		plb
-application/vnd.3gpp.pic-bw-small		psb
-application/vnd.3gpp.pic-bw-var			pvb
-# application/vnd.3gpp.sms
-# application/vnd.3gpp2.bcmcsinfo+xml
-# application/vnd.3gpp2.sms
-application/vnd.3gpp2.tcap			tcap
-application/vnd.3m.post-it-notes		pwn
-application/vnd.accpac.simply.aso		aso
-application/vnd.accpac.simply.imp		imp
-application/vnd.acucobol			acu
-application/vnd.acucorp				atc acutc
-application/vnd.adobe.air-application-installer-package+zip	air
-application/vnd.adobe.formscentral.fcdt		fcdt
-application/vnd.adobe.fxp			fxp fxpl
-# application/vnd.adobe.partial-upload
-application/vnd.adobe.xdp+xml			xdp
-application/vnd.adobe.xfdf			xfdf
-# application/vnd.aether.imp
-# application/vnd.ah-barcode
-application/vnd.ahead.space			ahead
-application/vnd.airzip.filesecure.azf		azf
-application/vnd.airzip.filesecure.azs		azs
-application/vnd.amazon.ebook			azw
-application/vnd.americandynamics.acc		acc
-application/vnd.amiga.ami			ami
-# application/vnd.amundsen.maze+xml
-application/vnd.android.package-archive		apk
-application/vnd.anser-web-certificate-issue-initiation	cii
-application/vnd.anser-web-funds-transfer-initiation	fti
-application/vnd.antix.game-component		atx
-application/vnd.apple.installer+xml		mpkg
-application/vnd.apple.mpegurl			m3u8
-# application/vnd.arastra.swi
-application/vnd.aristanetworks.swi		swi
-application/vnd.astraea-software.iota		iota
-application/vnd.audiograph			aep
-# application/vnd.autopackage
-# application/vnd.avistar+xml
-application/vnd.blueice.multipass		mpm
-# application/vnd.bluetooth.ep.oob
-application/vnd.bmi				bmi
-application/vnd.businessobjects			rep
-# application/vnd.cab-jscript
-# application/vnd.canon-cpdl
-# application/vnd.canon-lips
-# application/vnd.cendio.thinlinc.clientconf
-application/vnd.chemdraw+xml			cdxml
-application/vnd.chipnuts.karaoke-mmd		mmd
-application/vnd.cinderella			cdy
-# application/vnd.cirpack.isdn-ext
-application/vnd.claymore			cla
-application/vnd.cloanto.rp9			rp9
-application/vnd.clonk.c4group			c4g c4d c4f c4p c4u
-application/vnd.cluetrust.cartomobile-config		c11amc
-application/vnd.cluetrust.cartomobile-config-pkg	c11amz
-# application/vnd.collection+json
-# application/vnd.commerce-battelle
-application/vnd.commonspace			csp
-application/vnd.contact.cmsg			cdbcmsg
-application/vnd.cosmocaller			cmc
-application/vnd.crick.clicker			clkx
-application/vnd.crick.clicker.keyboard		clkk
-application/vnd.crick.clicker.palette		clkp
-application/vnd.crick.clicker.template		clkt
-application/vnd.crick.clicker.wordbank		clkw
-application/vnd.criticaltools.wbs+xml		wbs
-application/vnd.ctc-posml			pml
-# application/vnd.ctct.ws+xml
-# application/vnd.cups-pdf
-# application/vnd.cups-postscript
-application/vnd.cups-ppd			ppd
-# application/vnd.cups-raster
-# application/vnd.cups-raw
-# application/vnd.curl
-application/vnd.curl.car			car
-application/vnd.curl.pcurl			pcurl
-# application/vnd.cybank
-application/vnd.dart				dart
-application/vnd.data-vision.rdz			rdz
-application/vnd.dece.data			uvf uvvf uvd uvvd
-application/vnd.dece.ttml+xml			uvt uvvt
-application/vnd.dece.unspecified		uvx uvvx
-application/vnd.dece.zip			uvz uvvz
-application/vnd.denovo.fcselayout-link		fe_launch
-# application/vnd.dir-bi.plate-dl-nosuffix
-application/vnd.dna				dna
-application/vnd.dolby.mlp			mlp
-# application/vnd.dolby.mobile.1
-# application/vnd.dolby.mobile.2
-application/vnd.dpgraph				dpg
-application/vnd.dreamfactory			dfac
-application/vnd.ds-keypoint			kpxx
-application/vnd.dvb.ait				ait
-# application/vnd.dvb.dvbj
-# application/vnd.dvb.esgcontainer
-# application/vnd.dvb.ipdcdftnotifaccess
-# application/vnd.dvb.ipdcesgaccess
-# application/vnd.dvb.ipdcesgaccess2
-# application/vnd.dvb.ipdcesgpdd
-# application/vnd.dvb.ipdcroaming
-# application/vnd.dvb.iptv.alfec-base
-# application/vnd.dvb.iptv.alfec-enhancement
-# application/vnd.dvb.notif-aggregate-root+xml
-# application/vnd.dvb.notif-container+xml
-# application/vnd.dvb.notif-generic+xml
-# application/vnd.dvb.notif-ia-msglist+xml
-# application/vnd.dvb.notif-ia-registration-request+xml
-# application/vnd.dvb.notif-ia-registration-response+xml
-# application/vnd.dvb.notif-init+xml
-# application/vnd.dvb.pfr
-application/vnd.dvb.service			svc
-# application/vnd.dxr
-application/vnd.dynageo				geo
-# application/vnd.easykaraoke.cdgdownload
-# application/vnd.ecdis-update
-application/vnd.ecowin.chart			mag
-# application/vnd.ecowin.filerequest
-# application/vnd.ecowin.fileupdate
-# application/vnd.ecowin.series
-# application/vnd.ecowin.seriesrequest
-# application/vnd.ecowin.seriesupdate
-# application/vnd.emclient.accessrequest+xml
-application/vnd.enliven				nml
-# application/vnd.eprints.data+xml
-application/vnd.epson.esf			esf
-application/vnd.epson.msf			msf
-application/vnd.epson.quickanime		qam
-application/vnd.epson.salt			slt
-application/vnd.epson.ssf			ssf
-# application/vnd.ericsson.quickcall
-application/vnd.eszigno3+xml			es3 et3
-# application/vnd.etsi.aoc+xml
-# application/vnd.etsi.cug+xml
-# application/vnd.etsi.iptvcommand+xml
-# application/vnd.etsi.iptvdiscovery+xml
-# application/vnd.etsi.iptvprofile+xml
-# application/vnd.etsi.iptvsad-bc+xml
-# application/vnd.etsi.iptvsad-cod+xml
-# application/vnd.etsi.iptvsad-npvr+xml
-# application/vnd.etsi.iptvservice+xml
-# application/vnd.etsi.iptvsync+xml
-# application/vnd.etsi.iptvueprofile+xml
-# application/vnd.etsi.mcid+xml
-# application/vnd.etsi.overload-control-policy-dataset+xml
-# application/vnd.etsi.sci+xml
-# application/vnd.etsi.simservs+xml
-# application/vnd.etsi.tsl+xml
-# application/vnd.etsi.tsl.der
-# application/vnd.eudora.data
-application/vnd.ezpix-album			ez2
-application/vnd.ezpix-package			ez3
-# application/vnd.f-secure.mobile
-application/vnd.fdf				fdf
-application/vnd.fdsn.mseed			mseed
-application/vnd.fdsn.seed			seed dataless
-# application/vnd.ffsns
-# application/vnd.fints
-application/vnd.flographit			gph
-application/vnd.fluxtime.clip			ftc
-# application/vnd.font-fontforge-sfd
-application/vnd.framemaker			fm frame maker book
-application/vnd.frogans.fnc			fnc
-application/vnd.frogans.ltf			ltf
-application/vnd.fsc.weblaunch			fsc
-application/vnd.fujitsu.oasys			oas
-application/vnd.fujitsu.oasys2			oa2
-application/vnd.fujitsu.oasys3			oa3
-application/vnd.fujitsu.oasysgp			fg5
-application/vnd.fujitsu.oasysprs		bh2
-# application/vnd.fujixerox.art-ex
-# application/vnd.fujixerox.art4
-# application/vnd.fujixerox.hbpl
-application/vnd.fujixerox.ddd			ddd
-application/vnd.fujixerox.docuworks		xdw
-application/vnd.fujixerox.docuworks.binder	xbd
-# application/vnd.fut-misnet
-application/vnd.fuzzysheet			fzs
-application/vnd.genomatix.tuxedo		txd
-# application/vnd.geocube+xml
-application/vnd.geogebra.file			ggb
-application/vnd.geogebra.tool			ggt
-application/vnd.geometry-explorer		gex gre
-application/vnd.geonext				gxt
-application/vnd.geoplan				g2w
-application/vnd.geospace			g3w
-# application/vnd.globalplatform.card-content-mgt
-# application/vnd.globalplatform.card-content-mgt-response
-application/vnd.gmx				gmx
-application/vnd.google-earth.kml+xml		kml
-application/vnd.google-earth.kmz		kmz
-application/vnd.grafeq				gqf gqs
-# application/vnd.gridmp
-application/vnd.groove-account			gac
-application/vnd.groove-help			ghf
-application/vnd.groove-identity-message		gim
-application/vnd.groove-injector			grv
-application/vnd.groove-tool-message		gtm
-application/vnd.groove-tool-template		tpl
-application/vnd.groove-vcard			vcg
-# application/vnd.hal+json
-application/vnd.hal+xml				hal
-application/vnd.handheld-entertainment+xml	zmm
-application/vnd.hbci				hbci
-# application/vnd.hcl-bireports
-application/vnd.hhe.lesson-player		les
-application/vnd.hp-hpgl				hpgl
-application/vnd.hp-hpid				hpid
-application/vnd.hp-hps				hps
-application/vnd.hp-jlyt				jlt
-application/vnd.hp-pcl				pcl
-application/vnd.hp-pclxl			pclxl
-# application/vnd.httphone
-application/vnd.hydrostatix.sof-data		sfd-hdstx
-# application/vnd.hzn-3d-crossword
-# application/vnd.ibm.afplinedata
-# application/vnd.ibm.electronic-media
-application/vnd.ibm.minipay			mpy
-application/vnd.ibm.modcap			afp listafp list3820
-application/vnd.ibm.rights-management		irm
-application/vnd.ibm.secure-container		sc
-application/vnd.iccprofile			icc icm
-application/vnd.igloader			igl
-application/vnd.immervision-ivp			ivp
-application/vnd.immervision-ivu			ivu
-# application/vnd.informedcontrol.rms+xml
-# application/vnd.informix-visionary
-# application/vnd.infotech.project
-# application/vnd.infotech.project+xml
-# application/vnd.innopath.wamp.notification
-application/vnd.insors.igm			igm
-application/vnd.intercon.formnet		xpw xpx
-application/vnd.intergeo			i2g
-# application/vnd.intertrust.digibox
-# application/vnd.intertrust.nncp
-application/vnd.intu.qbo			qbo
-application/vnd.intu.qfx			qfx
-# application/vnd.iptc.g2.conceptitem+xml
-# application/vnd.iptc.g2.knowledgeitem+xml
-# application/vnd.iptc.g2.newsitem+xml
-# application/vnd.iptc.g2.newsmessage+xml
-# application/vnd.iptc.g2.packageitem+xml
-# application/vnd.iptc.g2.planningitem+xml
-application/vnd.ipunplugged.rcprofile		rcprofile
-application/vnd.irepository.package+xml		irp
-application/vnd.is-xpr				xpr
-application/vnd.isac.fcs			fcs
-application/vnd.jam				jam
-# application/vnd.japannet-directory-service
-# application/vnd.japannet-jpnstore-wakeup
-# application/vnd.japannet-payment-wakeup
-# application/vnd.japannet-registration
-# application/vnd.japannet-registration-wakeup
-# application/vnd.japannet-setstore-wakeup
-# application/vnd.japannet-verification
-# application/vnd.japannet-verification-wakeup
-application/vnd.jcp.javame.midlet-rms		rms
-application/vnd.jisp				jisp
-application/vnd.joost.joda-archive		joda
-application/vnd.kahootz				ktz ktr
-application/vnd.kde.karbon			karbon
-application/vnd.kde.kchart			chrt
-application/vnd.kde.kformula			kfo
-application/vnd.kde.kivio			flw
-application/vnd.kde.kontour			kon
-application/vnd.kde.kpresenter			kpr kpt
-application/vnd.kde.kspread			ksp
-application/vnd.kde.kword			kwd kwt
-application/vnd.kenameaapp			htke
-application/vnd.kidspiration			kia
-application/vnd.kinar				kne knp
-application/vnd.koan				skp skd skt skm
-application/vnd.kodak-descriptor		sse
-application/vnd.las.las+xml			lasxml
-# application/vnd.liberty-request+xml
-application/vnd.llamagraphics.life-balance.desktop	lbd
-application/vnd.llamagraphics.life-balance.exchange+xml	lbe
-application/vnd.lotus-1-2-3			123
-application/vnd.lotus-approach			apr
-application/vnd.lotus-freelance			pre
-application/vnd.lotus-notes			nsf
-application/vnd.lotus-organizer			org
-application/vnd.lotus-screencam			scm
-application/vnd.lotus-wordpro			lwp
-application/vnd.macports.portpkg		portpkg
-# application/vnd.marlin.drm.actiontoken+xml
-# application/vnd.marlin.drm.conftoken+xml
-# application/vnd.marlin.drm.license+xml
-# application/vnd.marlin.drm.mdcf
-application/vnd.mcd				mcd
-application/vnd.medcalcdata			mc1
-application/vnd.mediastation.cdkey		cdkey
-# application/vnd.meridian-slingshot
-application/vnd.mfer				mwf
-application/vnd.mfmp				mfm
-application/vnd.micrografx.flo			flo
-application/vnd.micrografx.igx			igx
-application/vnd.mif				mif
-# application/vnd.minisoft-hp3000-save
-# application/vnd.mitsubishi.misty-guard.trustweb
-application/vnd.mobius.daf			daf
-application/vnd.mobius.dis			dis
-application/vnd.mobius.mbk			mbk
-application/vnd.mobius.mqy			mqy
-application/vnd.mobius.msl			msl
-application/vnd.mobius.plc			plc
-application/vnd.mobius.txf			txf
-application/vnd.mophun.application		mpn
-application/vnd.mophun.certificate		mpc
-# application/vnd.motorola.flexsuite
-# application/vnd.motorola.flexsuite.adsi
-# application/vnd.motorola.flexsuite.fis
-# application/vnd.motorola.flexsuite.gotap
-# application/vnd.motorola.flexsuite.kmr
-# application/vnd.motorola.flexsuite.ttc
-# application/vnd.motorola.flexsuite.wem
-# application/vnd.motorola.iprm
-application/vnd.mozilla.xul+xml			xul
-application/vnd.ms-artgalry			cil
-# application/vnd.ms-asf
-application/vnd.ms-cab-compressed		cab
-# application/vnd.ms-color.iccprofile
-application/vnd.ms-excel			xls xlm xla xlc xlt xlw
-application/vnd.ms-excel.addin.macroenabled.12		xlam
-application/vnd.ms-excel.sheet.binary.macroenabled.12	xlsb
-application/vnd.ms-excel.sheet.macroenabled.12		xlsm
-application/vnd.ms-excel.template.macroenabled.12	xltm
-application/vnd.ms-fontobject			eot
-application/vnd.ms-htmlhelp			chm
-application/vnd.ms-ims				ims
-application/vnd.ms-lrm				lrm
-# application/vnd.ms-office.activex+xml
-application/vnd.ms-officetheme			thmx
-# application/vnd.ms-opentype
-# application/vnd.ms-package.obfuscated-opentype
-application/vnd.ms-pki.seccat			cat
-application/vnd.ms-pki.stl			stl
-# application/vnd.ms-playready.initiator+xml
-application/vnd.ms-powerpoint			ppt pps pot
-application/vnd.ms-powerpoint.addin.macroenabled.12		ppam
-application/vnd.ms-powerpoint.presentation.macroenabled.12	pptm
-application/vnd.ms-powerpoint.slide.macroenabled.12		sldm
-application/vnd.ms-powerpoint.slideshow.macroenabled.12		ppsm
-application/vnd.ms-powerpoint.template.macroenabled.12		potm
-# application/vnd.ms-printing.printticket+xml
-application/vnd.ms-project			mpp mpt
-# application/vnd.ms-tnef
-# application/vnd.ms-wmdrm.lic-chlg-req
-# application/vnd.ms-wmdrm.lic-resp
-# application/vnd.ms-wmdrm.meter-chlg-req
-# application/vnd.ms-wmdrm.meter-resp
-application/vnd.ms-word.document.macroenabled.12	docm
-application/vnd.ms-word.template.macroenabled.12	dotm
-application/vnd.ms-works			wps wks wcm wdb
-application/vnd.ms-wpl				wpl
-application/vnd.ms-xpsdocument			xps
-application/vnd.mseq				mseq
-# application/vnd.msign
-# application/vnd.multiad.creator
-# application/vnd.multiad.creator.cif
-# application/vnd.music-niff
-application/vnd.musician			mus
-application/vnd.muvee.style			msty
-application/vnd.mynfc				taglet
-# application/vnd.ncd.control
-# application/vnd.ncd.reference
-# application/vnd.nervana
-# application/vnd.netfpx
-application/vnd.neurolanguage.nlu		nlu
-application/vnd.nitf				ntf nitf
-application/vnd.noblenet-directory		nnd
-application/vnd.noblenet-sealer			nns
-application/vnd.noblenet-web			nnw
-# application/vnd.nokia.catalogs
-# application/vnd.nokia.conml+wbxml
-# application/vnd.nokia.conml+xml
-# application/vnd.nokia.isds-radio-presets
-# application/vnd.nokia.iptv.config+xml
-# application/vnd.nokia.landmark+wbxml
-# application/vnd.nokia.landmark+xml
-# application/vnd.nokia.landmarkcollection+xml
-# application/vnd.nokia.n-gage.ac+xml
-application/vnd.nokia.n-gage.data		ngdat
-application/vnd.nokia.n-gage.symbian.install	n-gage
-# application/vnd.nokia.ncd
-# application/vnd.nokia.pcd+wbxml
-# application/vnd.nokia.pcd+xml
-application/vnd.nokia.radio-preset		rpst
-application/vnd.nokia.radio-presets		rpss
-application/vnd.novadigm.edm			edm
-application/vnd.novadigm.edx			edx
-application/vnd.novadigm.ext			ext
-# application/vnd.ntt-local.file-transfer
-# application/vnd.ntt-local.sip-ta_remote
-# application/vnd.ntt-local.sip-ta_tcp_stream
-application/vnd.oasis.opendocument.chart		odc
-application/vnd.oasis.opendocument.chart-template	otc
-application/vnd.oasis.opendocument.database		odb
-application/vnd.oasis.opendocument.formula		odf
-application/vnd.oasis.opendocument.formula-template	odft
-application/vnd.oasis.opendocument.graphics		odg
-application/vnd.oasis.opendocument.graphics-template	otg
-application/vnd.oasis.opendocument.image		odi
-application/vnd.oasis.opendocument.image-template	oti
-application/vnd.oasis.opendocument.presentation		odp
-application/vnd.oasis.opendocument.presentation-template	otp
-application/vnd.oasis.opendocument.spreadsheet		ods
-application/vnd.oasis.opendocument.spreadsheet-template	ots
-application/vnd.oasis.opendocument.text			odt
-application/vnd.oasis.opendocument.text-master		odm
-application/vnd.oasis.opendocument.text-template	ott
-application/vnd.oasis.opendocument.text-web		oth
-# application/vnd.obn
-# application/vnd.oftn.l10n+json
-# application/vnd.oipf.contentaccessdownload+xml
-# application/vnd.oipf.contentaccessstreaming+xml
-# application/vnd.oipf.cspg-hexbinary
-# application/vnd.oipf.dae.svg+xml
-# application/vnd.oipf.dae.xhtml+xml
-# application/vnd.oipf.mippvcontrolmessage+xml
-# application/vnd.oipf.pae.gem
-# application/vnd.oipf.spdiscovery+xml
-# application/vnd.oipf.spdlist+xml
-# application/vnd.oipf.ueprofile+xml
-# application/vnd.oipf.userprofile+xml
-application/vnd.olpc-sugar			xo
-# application/vnd.oma-scws-config
-# application/vnd.oma-scws-http-request
-# application/vnd.oma-scws-http-response
-# application/vnd.oma.bcast.associated-procedure-parameter+xml
-# application/vnd.oma.bcast.drm-trigger+xml
-# application/vnd.oma.bcast.imd+xml
-# application/vnd.oma.bcast.ltkm
-# application/vnd.oma.bcast.notification+xml
-# application/vnd.oma.bcast.provisioningtrigger
-# application/vnd.oma.bcast.sgboot
-# application/vnd.oma.bcast.sgdd+xml
-# application/vnd.oma.bcast.sgdu
-# application/vnd.oma.bcast.simple-symbol-container
-# application/vnd.oma.bcast.smartcard-trigger+xml
-# application/vnd.oma.bcast.sprov+xml
-# application/vnd.oma.bcast.stkm
-# application/vnd.oma.cab-address-book+xml
-# application/vnd.oma.cab-feature-handler+xml
-# application/vnd.oma.cab-pcc+xml
-# application/vnd.oma.cab-user-prefs+xml
-# application/vnd.oma.dcd
-# application/vnd.oma.dcdc
-application/vnd.oma.dd2+xml			dd2
-# application/vnd.oma.drm.risd+xml
-# application/vnd.oma.group-usage-list+xml
-# application/vnd.oma.pal+xml
-# application/vnd.oma.poc.detailed-progress-report+xml
-# application/vnd.oma.poc.final-report+xml
-# application/vnd.oma.poc.groups+xml
-# application/vnd.oma.poc.invocation-descriptor+xml
-# application/vnd.oma.poc.optimized-progress-report+xml
-# application/vnd.oma.push
-# application/vnd.oma.scidm.messages+xml
-# application/vnd.oma.xcap-directory+xml
-# application/vnd.omads-email+xml
-# application/vnd.omads-file+xml
-# application/vnd.omads-folder+xml
-# application/vnd.omaloc-supl-init
-application/vnd.openofficeorg.extension		oxt
-# application/vnd.openxmlformats-officedocument.custom-properties+xml
-# application/vnd.openxmlformats-officedocument.customxmlproperties+xml
-# application/vnd.openxmlformats-officedocument.drawing+xml
-# application/vnd.openxmlformats-officedocument.drawingml.chart+xml
-# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml
-# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml
-# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml
-# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml
-# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml
-# application/vnd.openxmlformats-officedocument.extended-properties+xml
-# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml
-# application/vnd.openxmlformats-officedocument.presentationml.comments+xml
-# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml
-# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml
-# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml
-application/vnd.openxmlformats-officedocument.presentationml.presentation	pptx
-# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml
-# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml
-application/vnd.openxmlformats-officedocument.presentationml.slide	sldx
-# application/vnd.openxmlformats-officedocument.presentationml.slide+xml
-# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml
-# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml
-application/vnd.openxmlformats-officedocument.presentationml.slideshow	ppsx
-# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml
-# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml
-# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml
-# application/vnd.openxmlformats-officedocument.presentationml.tags+xml
-application/vnd.openxmlformats-officedocument.presentationml.template	potx
-# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml
-# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml
-application/vnd.openxmlformats-officedocument.spreadsheetml.sheet	xlsx
-# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml
-application/vnd.openxmlformats-officedocument.spreadsheetml.template	xltx
-# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml
-# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml
-# application/vnd.openxmlformats-officedocument.theme+xml
-# application/vnd.openxmlformats-officedocument.themeoverride+xml
-# application/vnd.openxmlformats-officedocument.vmldrawing
-# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml
-application/vnd.openxmlformats-officedocument.wordprocessingml.document	docx
-# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml
-# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml
-# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml
-# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml
-# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml
-# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml
-# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml
-# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml
-# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml
-application/vnd.openxmlformats-officedocument.wordprocessingml.template	dotx
-# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml
-# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml
-# application/vnd.openxmlformats-package.core-properties+xml
-# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml
-# application/vnd.openxmlformats-package.relationships+xml
-# application/vnd.quobject-quoxdocument
-# application/vnd.osa.netdeploy
-application/vnd.osgeo.mapguide.package		mgp
-# application/vnd.osgi.bundle
-application/vnd.osgi.dp				dp
-application/vnd.osgi.subsystem			esa
-# application/vnd.otps.ct-kip+xml
-application/vnd.palm				pdb pqa oprc
-# application/vnd.paos.xml
-application/vnd.pawaafile			paw
-application/vnd.pg.format			str
-application/vnd.pg.osasli			ei6
-# application/vnd.piaccess.application-licence
-application/vnd.picsel				efif
-application/vnd.pmi.widget			wg
-# application/vnd.poc.group-advertisement+xml
-application/vnd.pocketlearn			plf
-application/vnd.powerbuilder6			pbd
-# application/vnd.powerbuilder6-s
-# application/vnd.powerbuilder7
-# application/vnd.powerbuilder7-s
-# application/vnd.powerbuilder75
-# application/vnd.powerbuilder75-s
-# application/vnd.preminet
-application/vnd.previewsystems.box		box
-application/vnd.proteus.magazine		mgz
-application/vnd.publishare-delta-tree		qps
-application/vnd.pvi.ptid1			ptid
-# application/vnd.pwg-multiplexed
-# application/vnd.pwg-xhtml-print+xml
-# application/vnd.qualcomm.brew-app-res
-application/vnd.quark.quarkxpress		qxd qxt qwd qwt qxl qxb
-# application/vnd.radisys.moml+xml
-# application/vnd.radisys.msml+xml
-# application/vnd.radisys.msml-audit+xml
-# application/vnd.radisys.msml-audit-conf+xml
-# application/vnd.radisys.msml-audit-conn+xml
-# application/vnd.radisys.msml-audit-dialog+xml
-# application/vnd.radisys.msml-audit-stream+xml
-# application/vnd.radisys.msml-conf+xml
-# application/vnd.radisys.msml-dialog+xml
-# application/vnd.radisys.msml-dialog-base+xml
-# application/vnd.radisys.msml-dialog-fax-detect+xml
-# application/vnd.radisys.msml-dialog-fax-sendrecv+xml
-# application/vnd.radisys.msml-dialog-group+xml
-# application/vnd.radisys.msml-dialog-speech+xml
-# application/vnd.radisys.msml-dialog-transform+xml
-# application/vnd.rainstor.data
-# application/vnd.rapid
-application/vnd.realvnc.bed			bed
-application/vnd.recordare.musicxml		mxl
-application/vnd.recordare.musicxml+xml		musicxml
-# application/vnd.renlearn.rlprint
-application/vnd.rig.cryptonote			cryptonote
-application/vnd.rim.cod				cod
-application/vnd.rn-realmedia			rm
-application/vnd.rn-realmedia-vbr		rmvb
-application/vnd.route66.link66+xml		link66
-# application/vnd.rs-274x
-# application/vnd.ruckus.download
-# application/vnd.s3sms
-application/vnd.sailingtracker.track		st
-# application/vnd.sbm.cid
-# application/vnd.sbm.mid2
-# application/vnd.scribus
-# application/vnd.sealed.3df
-# application/vnd.sealed.csf
-# application/vnd.sealed.doc
-# application/vnd.sealed.eml
-# application/vnd.sealed.mht
-# application/vnd.sealed.net
-# application/vnd.sealed.ppt
-# application/vnd.sealed.tiff
-# application/vnd.sealed.xls
-# application/vnd.sealedmedia.softseal.html
-# application/vnd.sealedmedia.softseal.pdf
-application/vnd.seemail				see
-application/vnd.sema				sema
-application/vnd.semd				semd
-application/vnd.semf				semf
-application/vnd.shana.informed.formdata		ifm
-application/vnd.shana.informed.formtemplate	itp
-application/vnd.shana.informed.interchange	iif
-application/vnd.shana.informed.package		ipk
-application/vnd.simtech-mindmapper		twd twds
-application/vnd.smaf				mmf
-# application/vnd.smart.notebook
-application/vnd.smart.teacher			teacher
-# application/vnd.software602.filler.form+xml
-# application/vnd.software602.filler.form-xml-zip
-application/vnd.solent.sdkm+xml			sdkm sdkd
-application/vnd.spotfire.dxp			dxp
-application/vnd.spotfire.sfs			sfs
-# application/vnd.sss-cod
-# application/vnd.sss-dtf
-# application/vnd.sss-ntf
-application/vnd.stardivision.calc		sdc
-application/vnd.stardivision.draw		sda
-application/vnd.stardivision.impress		sdd
-application/vnd.stardivision.math		smf
-application/vnd.stardivision.writer		sdw vor
-application/vnd.stardivision.writer-global	sgl
-application/vnd.stepmania.package		smzip
-application/vnd.stepmania.stepchart		sm
-# application/vnd.street-stream
-application/vnd.sun.xml.calc			sxc
-application/vnd.sun.xml.calc.template		stc
-application/vnd.sun.xml.draw			sxd
-application/vnd.sun.xml.draw.template		std
-application/vnd.sun.xml.impress			sxi
-application/vnd.sun.xml.impress.template	sti
-application/vnd.sun.xml.math			sxm
-application/vnd.sun.xml.writer			sxw
-application/vnd.sun.xml.writer.global		sxg
-application/vnd.sun.xml.writer.template		stw
-# application/vnd.sun.wadl+xml
-application/vnd.sus-calendar			sus susp
-application/vnd.svd				svd
-# application/vnd.swiftview-ics
-application/vnd.symbian.install			sis sisx
-application/vnd.syncml+xml			xsm
-application/vnd.syncml.dm+wbxml			bdm
-application/vnd.syncml.dm+xml			xdm
-# application/vnd.syncml.dm.notification
-# application/vnd.syncml.ds.notification
-application/vnd.tao.intent-module-archive	tao
-application/vnd.tcpdump.pcap			pcap cap dmp
-application/vnd.tmobile-livetv			tmo
-application/vnd.trid.tpt			tpt
-application/vnd.triscape.mxs			mxs
-application/vnd.trueapp				tra
-# application/vnd.truedoc
-# application/vnd.ubisoft.webplayer
-application/vnd.ufdl				ufd ufdl
-application/vnd.uiq.theme			utz
-application/vnd.umajin				umj
-application/vnd.unity				unityweb
-application/vnd.uoml+xml			uoml
-# application/vnd.uplanet.alert
-# application/vnd.uplanet.alert-wbxml
-# application/vnd.uplanet.bearer-choice
-# application/vnd.uplanet.bearer-choice-wbxml
-# application/vnd.uplanet.cacheop
-# application/vnd.uplanet.cacheop-wbxml
-# application/vnd.uplanet.channel
-# application/vnd.uplanet.channel-wbxml
-# application/vnd.uplanet.list
-# application/vnd.uplanet.list-wbxml
-# application/vnd.uplanet.listcmd
-# application/vnd.uplanet.listcmd-wbxml
-# application/vnd.uplanet.signal
-application/vnd.vcx				vcx
-# application/vnd.vd-study
-# application/vnd.vectorworks
-# application/vnd.verimatrix.vcas
-# application/vnd.vidsoft.vidconference
-application/vnd.visio				vsd vst vss vsw
-application/vnd.visionary			vis
-# application/vnd.vividence.scriptfile
-application/vnd.vsf				vsf
-# application/vnd.wap.sic
-# application/vnd.wap.slc
-application/vnd.wap.wbxml			wbxml
-application/vnd.wap.wmlc			wmlc
-application/vnd.wap.wmlscriptc			wmlsc
-application/vnd.webturbo			wtb
-# application/vnd.wfa.wsc
-# application/vnd.wmc
-# application/vnd.wmf.bootstrap
-# application/vnd.wolfram.mathematica
-# application/vnd.wolfram.mathematica.package
-application/vnd.wolfram.player			nbp
-application/vnd.wordperfect			wpd
-application/vnd.wqd				wqd
-# application/vnd.wrq-hp3000-labelled
-application/vnd.wt.stf				stf
-# application/vnd.wv.csp+wbxml
-# application/vnd.wv.csp+xml
-# application/vnd.wv.ssp+xml
-application/vnd.xara				xar
-application/vnd.xfdl				xfdl
-# application/vnd.xfdl.webform
-# application/vnd.xmi+xml
-# application/vnd.xmpie.cpkg
-# application/vnd.xmpie.dpkg
-# application/vnd.xmpie.plan
-# application/vnd.xmpie.ppkg
-# application/vnd.xmpie.xlim
-application/vnd.yamaha.hv-dic			hvd
-application/vnd.yamaha.hv-script		hvs
-application/vnd.yamaha.hv-voice			hvp
-application/vnd.yamaha.openscoreformat			osf
-application/vnd.yamaha.openscoreformat.osfpvg+xml	osfpvg
-# application/vnd.yamaha.remote-setup
-application/vnd.yamaha.smaf-audio		saf
-application/vnd.yamaha.smaf-phrase		spf
-# application/vnd.yamaha.through-ngn
-# application/vnd.yamaha.tunnel-udpencap
-application/vnd.yellowriver-custom-menu		cmp
-application/vnd.zul				zir zirz
-application/vnd.zzazz.deck+xml			zaz
-application/voicexml+xml			vxml
-# application/vq-rtcpxr
-# application/watcherinfo+xml
-# application/whoispp-query
-# application/whoispp-response
-application/widget				wgt
-application/winhlp				hlp
-# application/wita
-# application/wordperfect5.1
-application/wsdl+xml				wsdl
-application/wspolicy+xml			wspolicy
-application/x-7z-compressed			7z
-application/x-abiword				abw
-application/x-ace-compressed			ace
-# application/x-amf
-application/x-apple-diskimage			dmg
-application/x-authorware-bin			aab x32 u32 vox
-application/x-authorware-map			aam
-application/x-authorware-seg			aas
-application/x-bcpio				bcpio
-application/x-bittorrent			torrent
-application/x-blorb				blb blorb
-application/x-bzip				bz
-application/x-bzip2				bz2 boz
-application/x-cbr				cbr cba cbt cbz cb7
-application/x-cdlink				vcd
-application/x-cfs-compressed			cfs
-application/x-chat				chat
-application/x-chess-pgn				pgn
-application/x-conference			nsc
-# application/x-compress
-application/x-cpio				cpio
-application/x-csh				csh
-application/x-debian-package			deb udeb
-application/x-dgc-compressed			dgc
-application/x-director			dir dcr dxr cst cct cxt w3d fgd swa
-application/x-doom				wad
-application/x-dtbncx+xml			ncx
-application/x-dtbook+xml			dtb
-application/x-dtbresource+xml			res
-application/x-dvi				dvi
-application/x-envoy				evy
-application/x-eva				eva
-application/x-font-bdf				bdf
-# application/x-font-dos
-# application/x-font-framemaker
-application/x-font-ghostscript			gsf
-# application/x-font-libgrx
-application/x-font-linux-psf			psf
-application/x-font-otf				otf
-application/x-font-pcf				pcf
-application/x-font-snf				snf
-# application/x-font-speedo
-# application/x-font-sunos-news
-application/x-font-ttf				ttf ttc
-application/x-font-type1			pfa pfb pfm afm
-application/font-woff				woff
-# application/x-font-vfont
-application/x-freearc				arc
-application/x-futuresplash			spl
-application/x-gca-compressed			gca
-application/x-glulx				ulx
-application/x-gnumeric				gnumeric
-application/x-gramps-xml			gramps
-application/x-gtar				gtar
-# application/x-gzip
-application/x-hdf				hdf
-application/x-install-instructions		install
-application/x-iso9660-image			iso
-application/x-java-jnlp-file			jnlp
-application/x-latex				latex
-application/x-lzh-compressed			lzh lha
-application/x-mie				mie
-application/x-mobipocket-ebook			prc mobi
-application/x-ms-application			application
-application/x-ms-shortcut			lnk
-application/x-ms-wmd				wmd
-application/x-ms-wmz				wmz
-application/x-ms-xbap				xbap
-application/x-msaccess				mdb
-application/x-msbinder				obd
-application/x-mscardfile			crd
-application/x-msclip				clp
-application/x-msdownload			exe dll com bat msi
-application/x-msmediaview			mvb m13 m14
-application/x-msmetafile			wmf wmz emf emz
-application/x-msmoney				mny
-application/x-mspublisher			pub
-application/x-msschedule			scd
-application/x-msterminal			trm
-application/x-mswrite				wri
-application/x-netcdf				nc cdf
-application/x-nzb				nzb
-application/x-pkcs12				p12 pfx
-application/x-pkcs7-certificates		p7b spc
-application/x-pkcs7-certreqresp			p7r
-application/x-rar-compressed			rar
-application/x-research-info-systems		ris
-application/x-sh				sh
-application/x-shar				shar
-application/x-shockwave-flash			swf
-application/x-silverlight-app			xap
-application/x-sql				sql
-application/x-stuffit				sit
-application/x-stuffitx				sitx
-application/x-subrip				srt
-application/x-sv4cpio				sv4cpio
-application/x-sv4crc				sv4crc
-application/x-t3vm-image			t3
-application/x-tads				gam
-application/x-tar				tar
-application/x-tcl				tcl
-application/x-tex				tex
-application/x-tex-tfm				tfm
-application/x-texinfo				texinfo texi
-application/x-tgif				obj
-application/x-ustar				ustar
-application/x-wais-source			src
-application/x-x509-ca-cert			der crt
-application/x-xfig				fig
-application/x-xliff+xml				xlf
-application/x-xpinstall				xpi
-application/x-xz				xz
-application/x-zmachine				z1 z2 z3 z4 z5 z6 z7 z8
-# application/x400-bp
-application/xaml+xml				xaml
-# application/xcap-att+xml
-# application/xcap-caps+xml
-application/xcap-diff+xml			xdf
-# application/xcap-el+xml
-# application/xcap-error+xml
-# application/xcap-ns+xml
-# application/xcon-conference-info-diff+xml
-# application/xcon-conference-info+xml
-application/xenc+xml				xenc
-application/xhtml+xml				xhtml xht
-# application/xhtml-voice+xml
-application/xml					xml xsl
-application/xml-dtd				dtd
-# application/xml-external-parsed-entity
-# application/xmpp+xml
-application/xop+xml				xop
-application/xproc+xml				xpl
-application/xslt+xml				xslt
-application/xspf+xml				xspf
-application/xv+xml				mxml xhvml xvml xvm
-application/yang				yang
-application/yin+xml				yin
-application/zip					zip
-# audio/1d-interleaved-parityfec
-# audio/32kadpcm
-# audio/3gpp
-# audio/3gpp2
-# audio/ac3
-audio/adpcm					adp
-# audio/amr
-# audio/amr-wb
-# audio/amr-wb+
-# audio/asc
-# audio/atrac-advanced-lossless
-# audio/atrac-x
-# audio/atrac3
-audio/basic					au snd
-# audio/bv16
-# audio/bv32
-# audio/clearmode
-# audio/cn
-# audio/dat12
-# audio/dls
-# audio/dsr-es201108
-# audio/dsr-es202050
-# audio/dsr-es202211
-# audio/dsr-es202212
-# audio/dv
-# audio/dvi4
-# audio/eac3
-# audio/evrc
-# audio/evrc-qcp
-# audio/evrc0
-# audio/evrc1
-# audio/evrcb
-# audio/evrcb0
-# audio/evrcb1
-# audio/evrcwb
-# audio/evrcwb0
-# audio/evrcwb1
-# audio/example
-# audio/fwdred
-# audio/g719
-# audio/g722
-# audio/g7221
-# audio/g723
-# audio/g726-16
-# audio/g726-24
-# audio/g726-32
-# audio/g726-40
-# audio/g728
-# audio/g729
-# audio/g7291
-# audio/g729d
-# audio/g729e
-# audio/gsm
-# audio/gsm-efr
-# audio/gsm-hr-08
-# audio/ilbc
-# audio/ip-mr_v2.5
-# audio/isac
-# audio/l16
-# audio/l20
-# audio/l24
-# audio/l8
-# audio/lpc
-audio/midi					mid midi kar rmi
-# audio/mobile-xmf
-audio/mp4					mp4a
-# audio/mp4a-latm
-# audio/mpa
-# audio/mpa-robust
-audio/mpeg					mpga mp2 mp2a mp3 m2a m3a
-# audio/mpeg4-generic
-# audio/musepack
-audio/ogg					oga ogg spx
-# audio/opus
-# audio/parityfec
-# audio/pcma
-# audio/pcma-wb
-# audio/pcmu-wb
-# audio/pcmu
-# audio/prs.sid
-# audio/qcelp
-# audio/red
-# audio/rtp-enc-aescm128
-# audio/rtp-midi
-# audio/rtx
-audio/s3m					s3m
-audio/silk					sil
-# audio/smv
-# audio/smv0
-# audio/smv-qcp
-# audio/sp-midi
-# audio/speex
-# audio/t140c
-# audio/t38
-# audio/telephone-event
-# audio/tone
-# audio/uemclip
-# audio/ulpfec
-# audio/vdvi
-# audio/vmr-wb
-# audio/vnd.3gpp.iufp
-# audio/vnd.4sb
-# audio/vnd.audiokoz
-# audio/vnd.celp
-# audio/vnd.cisco.nse
-# audio/vnd.cmles.radio-events
-# audio/vnd.cns.anp1
-# audio/vnd.cns.inf1
-audio/vnd.dece.audio				uva uvva
-audio/vnd.digital-winds				eol
-# audio/vnd.dlna.adts
-# audio/vnd.dolby.heaac.1
-# audio/vnd.dolby.heaac.2
-# audio/vnd.dolby.mlp
-# audio/vnd.dolby.mps
-# audio/vnd.dolby.pl2
-# audio/vnd.dolby.pl2x
-# audio/vnd.dolby.pl2z
-# audio/vnd.dolby.pulse.1
-audio/vnd.dra					dra
-audio/vnd.dts					dts
-audio/vnd.dts.hd				dtshd
-# audio/vnd.dvb.file
-# audio/vnd.everad.plj
-# audio/vnd.hns.audio
-audio/vnd.lucent.voice				lvp
-audio/vnd.ms-playready.media.pya		pya
-# audio/vnd.nokia.mobile-xmf
-# audio/vnd.nortel.vbk
-audio/vnd.nuera.ecelp4800			ecelp4800
-audio/vnd.nuera.ecelp7470			ecelp7470
-audio/vnd.nuera.ecelp9600			ecelp9600
-# audio/vnd.octel.sbc
-# audio/vnd.qcelp
-# audio/vnd.rhetorex.32kadpcm
-audio/vnd.rip					rip
-# audio/vnd.sealedmedia.softseal.mpeg
-# audio/vnd.vmx.cvsd
-# audio/vorbis
-# audio/vorbis-config
-audio/webm					weba
-audio/x-aac					aac
-audio/x-aiff					aif aiff aifc
-audio/x-caf					caf
-audio/x-flac					flac
-audio/x-matroska				mka
-audio/x-mpegurl					m3u
-audio/x-ms-wax					wax
-audio/x-ms-wma					wma
-audio/x-pn-realaudio				ram ra
-audio/x-pn-realaudio-plugin			rmp
-# audio/x-tta
-audio/x-wav					wav
-audio/xm					xm
-chemical/x-cdx					cdx
-chemical/x-cif					cif
-chemical/x-cmdf					cmdf
-chemical/x-cml					cml
-chemical/x-csml					csml
-# chemical/x-pdb
-chemical/x-xyz					xyz
-image/bmp					bmp
-image/cgm					cgm
-# image/example
-# image/fits
-image/g3fax					g3
-image/gif					gif
-image/ief					ief
-# image/jp2
-image/jpeg					jpeg jpg jpe
-# image/jpm
-# image/jpx
-image/ktx					ktx
-# image/naplps
-image/png					png
-image/prs.btif					btif
-# image/prs.pti
-image/sgi					sgi
-image/svg+xml					svg svgz
-# image/t38
-image/tiff					tiff tif
-# image/tiff-fx
-image/vnd.adobe.photoshop			psd
-# image/vnd.cns.inf2
-image/vnd.dece.graphic				uvi uvvi uvg uvvg
-image/vnd.dvb.subtitle				sub
-image/vnd.djvu					djvu djv
-image/vnd.dwg					dwg
-image/vnd.dxf					dxf
-image/vnd.fastbidsheet				fbs
-image/vnd.fpx					fpx
-image/vnd.fst					fst
-image/vnd.fujixerox.edmics-mmr			mmr
-image/vnd.fujixerox.edmics-rlc			rlc
-# image/vnd.globalgraphics.pgb
-# image/vnd.microsoft.icon
-# image/vnd.mix
-image/vnd.ms-modi				mdi
-image/vnd.ms-photo				wdp
-image/vnd.net-fpx				npx
-# image/vnd.radiance
-# image/vnd.sealed.png
-# image/vnd.sealedmedia.softseal.gif
-# image/vnd.sealedmedia.softseal.jpg
-# image/vnd.svf
-image/vnd.wap.wbmp				wbmp
-image/vnd.xiff					xif
-image/webp					webp
-image/x-3ds					3ds
-image/x-cmu-raster				ras
-image/x-cmx					cmx
-image/x-freehand				fh fhc fh4 fh5 fh7
-image/x-icon					ico
-image/x-mrsid-image				sid
-image/x-pcx					pcx
-image/x-pict					pic pct
-image/x-portable-anymap				pnm
-image/x-portable-bitmap				pbm
-image/x-portable-graymap			pgm
-image/x-portable-pixmap				ppm
-image/x-rgb					rgb
-image/x-tga					tga
-image/x-xbitmap					xbm
-image/x-xpixmap					xpm
-image/x-xwindowdump				xwd
-# message/cpim
-# message/delivery-status
-# message/disposition-notification
-# message/example
-# message/external-body
-# message/feedback-report
-# message/global
-# message/global-delivery-status
-# message/global-disposition-notification
-# message/global-headers
-# message/http
-# message/imdn+xml
-# message/news
-# message/partial
-message/rfc822					eml mime
-# message/s-http
-# message/sip
-# message/sipfrag
-# message/tracking-status
-# message/vnd.si.simp
-# model/example
-model/iges					igs iges
-model/mesh					msh mesh silo
-model/vnd.collada+xml				dae
-model/vnd.dwf					dwf
-# model/vnd.flatland.3dml
-model/vnd.gdl					gdl
-# model/vnd.gs-gdl
-# model/vnd.gs.gdl
-model/vnd.gtw					gtw
-# model/vnd.moml+xml
-model/vnd.mts					mts
-# model/vnd.parasolid.transmit.binary
-# model/vnd.parasolid.transmit.text
-model/vnd.vtu					vtu
-model/vrml					wrl vrml
-model/x3d+binary				x3db x3dbz
-model/x3d+vrml					x3dv x3dvz
-model/x3d+xml					x3d x3dz
-# multipart/alternative
-# multipart/appledouble
-# multipart/byteranges
-# multipart/digest
-# multipart/encrypted
-# multipart/example
-# multipart/form-data
-# multipart/header-set
-# multipart/mixed
-# multipart/parallel
-# multipart/related
-# multipart/report
-# multipart/signed
-# multipart/voice-message
-# text/1d-interleaved-parityfec
-text/cache-manifest				appcache
-text/calendar					ics ifb
-text/css					css
-text/csv					csv
-# text/directory
-# text/dns
-# text/ecmascript
-# text/enriched
-# text/example
-# text/fwdred
-text/html					html htm
-# text/javascript
-text/n3						n3
-# text/parityfec
-text/plain					txt text conf def list log in
-# text/prs.fallenstein.rst
-text/prs.lines.tag				dsc
-# text/vnd.radisys.msml-basic-layout
-# text/red
-# text/rfc822-headers
-text/richtext					rtx
-# text/rtf
-# text/rtp-enc-aescm128
-# text/rtx
-text/sgml					sgml sgm
-# text/t140
-text/tab-separated-values			tsv
-text/troff					t tr roff man me ms
-text/turtle					ttl
-# text/ulpfec
-text/uri-list					uri uris urls
-text/vcard					vcard
-# text/vnd.abc
-text/vnd.curl					curl
-text/vnd.curl.dcurl				dcurl
-text/vnd.curl.scurl				scurl
-text/vnd.curl.mcurl				mcurl
-# text/vnd.dmclientscript
-text/vnd.dvb.subtitle				sub
-# text/vnd.esmertec.theme-descriptor
-text/vnd.fly					fly
-text/vnd.fmi.flexstor				flx
-text/vnd.graphviz				gv
-text/vnd.in3d.3dml				3dml
-text/vnd.in3d.spot				spot
-# text/vnd.iptc.newsml
-# text/vnd.iptc.nitf
-# text/vnd.latex-z
-# text/vnd.motorola.reflex
-# text/vnd.ms-mediapackage
-# text/vnd.net2phone.commcenter.command
-# text/vnd.si.uricatalogue
-text/vnd.sun.j2me.app-descriptor		jad
-# text/vnd.trolltech.linguist
-# text/vnd.wap.si
-# text/vnd.wap.sl
-text/vnd.wap.wml				wml
-text/vnd.wap.wmlscript				wmls
-text/x-asm					s asm
-text/x-c					c cc cxx cpp h hh dic
-text/x-fortran					f for f77 f90
-text/x-java-source				java
-text/x-opml					opml
-text/x-pascal					p pas
-text/x-nfo					nfo
-text/x-setext					etx
-text/x-sfv					sfv
-text/x-uuencode					uu
-text/x-vcalendar				vcs
-text/x-vcard					vcf
-# text/xml
-# text/xml-external-parsed-entity
-# video/1d-interleaved-parityfec
-video/3gpp					3gp
-# video/3gpp-tt
-video/3gpp2					3g2
-# video/bmpeg
-# video/bt656
-# video/celb
-# video/dv
-# video/example
-video/h261					h261
-video/h263					h263
-# video/h263-1998
-# video/h263-2000
-video/h264					h264
-# video/h264-rcdo
-# video/h264-svc
-video/jpeg					jpgv
-# video/jpeg2000
-video/jpm					jpm jpgm
-video/mj2					mj2 mjp2
-# video/mp1s
-# video/mp2p
-# video/mp2t
-video/mp4					mp4 mp4v mpg4
-# video/mp4v-es
-video/mpeg					mpeg mpg mpe m1v m2v
-# video/mpeg4-generic
-# video/mpv
-# video/nv
-video/ogg					ogv
-# video/parityfec
-# video/pointer
-video/quicktime					qt mov
-# video/raw
-# video/rtp-enc-aescm128
-# video/rtx
-# video/smpte292m
-# video/ulpfec
-# video/vc1
-# video/vnd.cctv
-video/vnd.dece.hd				uvh uvvh
-video/vnd.dece.mobile				uvm uvvm
-# video/vnd.dece.mp4
-video/vnd.dece.pd				uvp uvvp
-video/vnd.dece.sd				uvs uvvs
-video/vnd.dece.video				uvv uvvv
-# video/vnd.directv.mpeg
-# video/vnd.directv.mpeg-tts
-# video/vnd.dlna.mpeg-tts
-video/vnd.dvb.file				dvb
-video/vnd.fvt					fvt
-# video/vnd.hns.video
-# video/vnd.iptvforum.1dparityfec-1010
-# video/vnd.iptvforum.1dparityfec-2005
-# video/vnd.iptvforum.2dparityfec-1010
-# video/vnd.iptvforum.2dparityfec-2005
-# video/vnd.iptvforum.ttsavc
-# video/vnd.iptvforum.ttsmpeg2
-# video/vnd.motorola.video
-# video/vnd.motorola.videop
-video/vnd.mpegurl				mxu m4u
-video/vnd.ms-playready.media.pyv		pyv
-# video/vnd.nokia.interleaved-multimedia
-# video/vnd.nokia.videovoip
-# video/vnd.objectvideo
-# video/vnd.sealed.mpeg1
-# video/vnd.sealed.mpeg4
-# video/vnd.sealed.swf
-# video/vnd.sealedmedia.softseal.mov
-video/vnd.uvvu.mp4				uvu uvvu
-video/vnd.vivo					viv
-video/webm					webm
-video/x-f4v					f4v
-video/x-fli					fli
-video/x-flv					flv
-video/x-m4v					m4v
-video/x-matroska				mkv mk3d mks
-video/x-mng					mng
-video/x-ms-asf					asf asx
-video/x-ms-vob					vob
-video/x-ms-wm					wm
-video/x-ms-wmv					wmv
-video/x-ms-wmx					wmx
-video/x-ms-wvx					wvx
-video/x-msvideo					avi
-video/x-sgi-movie				movie
-video/x-smv					smv
-x-conference/x-cooltalk				ice

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/types/node.types
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/types/node.types b/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/types/node.types
deleted file mode 100644
index 55b2cf7..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/node_modules/mime/types/node.types
+++ /dev/null
@@ -1,77 +0,0 @@
-# What: WebVTT
-# Why: To allow formats intended for marking up external text track resources.
-# http://dev.w3.org/html5/webvtt/
-# Added by: niftylettuce
-text/vtt  vtt
-
-# What: Google Chrome Extension
-# Why: To allow apps to (work) be served with the right content type header.
-# http://codereview.chromium.org/2830017
-# Added by: niftylettuce
-application/x-chrome-extension  crx
-
-# What: HTC support
-# Why: To properly render .htc files such as CSS3PIE
-# Added by: niftylettuce
-text/x-component  htc
-
-# What: HTML5 application cache manifes ('.manifest' extension)
-# Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps
-# per https://developer.mozilla.org/en/offline_resources_in_firefox
-# Added by: louisremi
-text/cache-manifest  manifest
-
-# What: node binary buffer format
-# Why: semi-standard extension w/in the node community
-# Added by: tootallnate
-application/octet-stream  buffer
-
-# What: The "protected" MP-4 formats used by iTunes.
-# Why: Required for streaming music to browsers (?)
-# Added by: broofa
-application/mp4  m4p
-audio/mp4  m4a
-
-# What: Video format, Part of RFC1890
-# Why: See https://github.com/bentomas/node-mime/pull/6
-# Added by: mjrusso
-video/MP2T  ts
-
-# What: EventSource mime type
-# Why: mime type of Server-Sent Events stream
-# http://www.w3.org/TR/eventsource/#text-event-stream
-# Added by: francois2metz
-text/event-stream  event-stream
-
-# What: Mozilla App manifest mime type
-# Why: https://developer.mozilla.org/en/Apps/Manifest#Serving_manifests
-# Added by: ednapiranha
-application/x-web-app-manifest+json   webapp
-
-# What: Lua file types
-# Why: Googling around shows de-facto consensus on these
-# Added by: creationix (Issue #45)
-text/x-lua  lua
-application/x-lua-bytecode  luac
-
-# What: Markdown files, as per http://daringfireball.net/projects/markdown/syntax
-# Why: http://stackoverflow.com/questions/10701983/what-is-the-mime-type-for-markdown
-# Added by: avoidwork
-text/x-markdown  markdown md mkd
-
-# What: ini files
-# Why: because they're just text files
-# Added by: Matthew Kastor
-text/plain  ini
-
-# What: DASH Adaptive Streaming manifest
-# Why: https://developer.mozilla.org/en-US/docs/DASH_Adaptive_Streaming_for_HTML_5_Video
-# Added by: eelcocramer
-application/dash+xml mdp
-
-# What: OpenType font files - http://www.microsoft.com/typography/otspec/
-# Why:  Browsers usually ignore the font MIME types and sniff the content,
-#       but Chrome, shows a warning if OpenType fonts aren't served with
-#       the `font/opentype` MIME type: http://i.imgur.com/8c5RN8M.png.
-# Added by: alrra
-font/opentype  otf


[65/98] [abbrv] incubator-apex-malhar git commit: Merge branch 'MLHR-1876' into release-3.2

Posted by da...@apache.org.
Merge branch 'MLHR-1876' into release-3.2


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/5c7dae14
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/5c7dae14
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/5c7dae14

Branch: refs/heads/master
Commit: 5c7dae1477e43c5addfcf957ba741b52aaa59e72
Parents: 0bb9599 79e7ead
Author: ishark <is...@datatorrent.com>
Authored: Fri Oct 23 11:42:47 2015 -0700
Committer: ishark <is...@datatorrent.com>
Committed: Fri Oct 23 11:42:47 2015 -0700

----------------------------------------------------------------------
 .../lib/appdata/query/WindowBoundedService.java | 41 ++++++++++++++++----
 .../snapshot/AbstractAppDataSnapshotServer.java | 21 +++++++---
 .../lib/io/WebSocketInputOperator.java          |  9 +++++
 .../appdata/query/WindowBoundedServiceTest.java | 27 -------------
 4 files changed, 59 insertions(+), 39 deletions(-)
----------------------------------------------------------------------



[37/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/async/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/async/package.json b/web/demos/package/node_modules/async/package.json
deleted file mode 100644
index 50f75c8..0000000
--- a/web/demos/package/node_modules/async/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "name": "async",
-  "description": "Higher-order functions and common patterns for asynchronous code",
-  "main": "./lib/async",
-  "author": {
-    "name": "Caolan McMahon"
-  },
-  "version": "0.2.10",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/caolan/async.git"
-  },
-  "bugs": {
-    "url": "https://github.com/caolan/async/issues"
-  },
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": "https://github.com/caolan/async/raw/master/LICENSE"
-    }
-  ],
-  "devDependencies": {
-    "nodeunit": ">0.0.0",
-    "uglify-js": "1.2.x",
-    "nodelint": ">0.0.0"
-  },
-  "jam": {
-    "main": "lib/async.js",
-    "include": [
-      "lib/async.js",
-      "README.md",
-      "LICENSE"
-    ]
-  },
-  "scripts": {
-    "test": "nodeunit test/test-async.js"
-  },
-  "readme": "# Async.js\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [node.js](http://nodejs.org), it can also be used directly in the\nbrowser. Also supports [component](https://github.com/component/component).\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (map, reduce, filter, eachā€¦) as well as some common patterns\nfor asynchronous control flow (parallel, series, waterfallā€¦). All these\nfunctions assume you follow the node.js convention of providing a single\ncallback as the last argument of your async function.\n\n\n## Quick Examples\n\n```javascript\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n    // results now equals an array of the existing files\n});\n\nas
 ync.parallel([\n    function(){ ... },\n    function(){ ... }\n], callback);\n\nasync.series([\n    function(){ ... },\n    function(){ ... }\n]);\n```\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n## Common Pitfalls\n\n### Binding a context to an iterator\n\nThis section is really about bind, not about async. If you are wondering how to\nmake async execute your iterators in a given context, or are confused as to why\na method of another library isn't working as an iterator, study this example:\n\n```js\n// Here is a simple object with an (unnecessarily roundabout) squaring method\nvar AsyncSquaringLibrary = {\n  squareExponent: 2,\n  square: function(number, callback){ \n    var result = Math.pow(number, this.squareExponent);\n    setTimeout(function(){\n      callback(null, result);\n    }, 200);\n  }\n};\n\nasync.map([1,
  2, 3], AsyncSquaringLibrary.square, function(err, result){\n  // result is [NaN, NaN, NaN]\n  // This fails because the `this.squareExponent` expression in the square\n  // function is not evaluated in the context of AsyncSquaringLibrary, and is\n  // therefore undefined.\n});\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){\n  // result is [1, 4, 9]\n  // With the help of bind we can attach a context to the iterator before\n  // passing it to async. Now the square function will be executed in its \n  // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`\n  // will be as expected.\n});\n```\n\n## Download\n\nThe source is available for download from\n[GitHub](http://github.com/caolan/async).\nAlternatively, you can install using Node Package Manager (npm):\n\n    npm install async\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed\n\n## In the Bro
 wser\n\nSo far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\n```html\n<script type=\"text/javascript\" src=\"async.js\"></script>\n<script type=\"text/javascript\">\n\n    async.map(data, asyncProcess, function(err, results){\n        alert(results);\n    });\n\n</script>\n```\n\n## Documentation\n\n### Collections\n\n* [each](#each)\n* [eachSeries](#eachSeries)\n* [eachLimit](#eachLimit)\n* [map](#map)\n* [mapSeries](#mapSeries)\n* [mapLimit](#mapLimit)\n* [filter](#filter)\n* [filterSeries](#filterSeries)\n* [reject](#reject)\n* [rejectSeries](#rejectSeries)\n* [reduce](#reduce)\n* [reduceRight](#reduceRight)\n* [detect](#detect)\n* [detectSeries](#detectSeries)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n* [concatSeries](#concatSeries)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [parallelLimit](#parallellimittasks-limit-callback)\n* [whilst](#whilst)\n* [doWhilst](#doWhilst)\n* [until](#until)\n* [do
 Until](#doUntil)\n* [forever](#forever)\n* [waterfall](#waterfall)\n* [compose](#compose)\n* [applyEach](#applyEach)\n* [applyEachSeries](#applyEachSeries)\n* [queue](#queue)\n* [cargo](#cargo)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n* [times](#times)\n* [timesSeries](#timesSeries)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n<a name=\"forEach\" />\n<a name=\"each\" />\n### each(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, in parallel.\nThe iterator is called with an item from the list and a callback for when it\nhas finished. If the iterator passes an error to this callback, the main\ncallback for the each function is immediately called with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in 
 order.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err) which must be called once it has \n  completed. If no error has occured, the callback should be run without \n  arguments or with an explicit null argument.\n* callback(err) - A callback which is called after all the iterator functions\n  have finished, or an error has occurred.\n\n__Example__\n\n```js\n// assuming openFiles is an array of file names and saveFile is a function\n// to save the modified contents of that file:\n\nasync.each(openFiles, saveFile, function(err){\n    // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n<a name=\"forEachSeries\" />\n<a name=\"eachSeries\" />\n### eachSeries(arr, iterator, callback)\n\nThe same as each only the iterator is applied to each item in the array in\nseries. The next iterator is only
  called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n<a name=\"forEachLimit\" />\n<a name=\"eachLimit\" />\n### eachLimit(arr, limit, iterator, callback)\n\nThe same as each only no more than \"limit\" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err) which must be called once it has \n  completed. If no error has occured, the callback should be run without \n  arguments or with an explicit null argument.\n* callback(err) - A callback which is called after all the iterat
 or functions\n  have finished, or an error has occurred.\n\n__Example__\n\n```js\n// Assume documents is an array of JSON objects and requestApi is a\n// function that interacts with a rate-limited REST api.\n\nasync.eachLimit(documents, 20, requestApi, function(err){\n    // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n<a name=\"map\" />\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator 
 functions will complete in order, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, transformed) which must be called once \n  it has completed with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is an array of the\n  transformed items from the original array.\n\n__Example__\n\n```js\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n<a name=\"mapSeries\" />\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called o
 nce the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n<a name=\"mapLimit\" />\n### mapLimit(arr, limit, iterator, callback)\n\nThe same as map only no more than \"limit\" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, transformed) which must be called once \n  it has completed with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is 
 an array of the\n  transformed items from the original array.\n\n__Example__\n\n```js\nasync.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n<a name=\"filter\" />\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has c
 ompleted.\n* callback(results) - A callback which is called after all the iterator\n  functions have finished.\n\n__Example__\n\n```js\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n    // results now equals an array of the existing files\n});\n```\n\n---------------------------------------\n\n<a name=\"filterSeries\" />\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n---------------------------------------\n\n<a name=\"reject\" />\n### reject(arr, iterator, callback)\n\nThe opposite of filter. Removes values that pass an async truth test.\n\n---------------------------------------\n\n<a name=\"rejectSeries\" />\n### rejectSeries(arr, iterator, callback)\n\nThe same as reject, only the iterator is applied t
 o each item in the array\nin series.\n\n\n---------------------------------------\n\n<a name=\"reduce\" />\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then it's probably a good idea to do so.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* memo - The initial state of the reduction.\n* iterator(memo, item, callback) - A function applied to each item in the\n  array to produce the next step in the reduction. The iterator is passed a\n  callback(err, reduction) which accepts an opt
 ional error as its first \n  argument, and the state of the reduction as the second. If an error is \n  passed to the callback, the reduction is stopped and the main callback is \n  immediately called with the error.\n* callback(err, result) - A callback which is called after all the iterator\n  functions have finished. Result is the reduced value.\n\n__Example__\n\n```js\nasync.reduce([1,2,3], 0, function(memo, item, callback){\n    // pointless async:\n    process.nextTick(function(){\n        callback(null, memo + item)\n    });\n}, function(err, result){\n    // result is now equal to the last value of memo, which is 6\n});\n```\n\n---------------------------------------\n\n<a name=\"reduceRight\" />\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n<a name=\"detect\" />\n### detect(arr, iterator, callback)\n\nReturns the first value in a
  list that passes an async truth test. The\niterator is applied in parallel, meaning the first iterator to return true will\nfire the detect callback with that result. That means the result might not be\nthe first item in the original array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at detectSeries.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n  true, or after all the iterator functions have finished. Result will be\n  the first item in the array that passes the truth test (iterator) or the\n  value undefined if none passed.\n\n__Example__\n\n```js\nasync.detect(['file1','file2','file3'], fs.exists, function(result){\n    // result now eq
 uals the first file in the list that exists\n});\n```\n\n---------------------------------------\n\n<a name=\"detectSeries\" />\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (in\nterms of array order) that passes the truth test.\n\n\n---------------------------------------\n\n<a name=\"sortBy\" />\n### sortBy(arr, iterator, callback)\n\nSorts a list by the results of running each value through an async iterator.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, sortValue) which must be called once it\n  has completed with an error (which can be null) and a value to use as the sort\n  criteria.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has 
 occurred. Results is the items from\n  the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n```js\nasync.sortBy(['file1','file2','file3'], function(file, callback){\n    fs.stat(file, function(err, stats){\n        callback(err, stats.mtime);\n    });\n}, function(err, results){\n    // results is now the original array of files sorted by\n    // modified date\n});\n```\n\n---------------------------------------\n\n<a name=\"some\" />\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists. Once any iterator\ncall returns true, the main callback is immediately called.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth tes
 t to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n  true, or after all the iterator functions have finished. Result will be\n  either true or false depending on the values of the async tests.\n\n__Example__\n\n```js\nasync.some(['file1','file2','file3'], fs.exists, function(result){\n    // if result is true then at least one of the files exists\n});\n```\n\n---------------------------------------\n\n<a name=\"every\" />\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists.\n\n__Arguments__\n\n* arr - An array to 
 iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(result) - A callback which is called after all the iterator\n  functions have finished. Result will be either true or false depending on\n  the values of the async tests.\n\n__Example__\n\n```js\nasync.every(['file1','file2','file3'], fs.exists, function(result){\n    // if result is true then every file exists\n});\n```\n\n---------------------------------------\n\n<a name=\"concat\" />\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of the arguments passed to the iterator function.\n\n__Arguments
 __\n\n* arr - An array to iterate over\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, results) which must be called once it \n  has completed with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is an array containing\n  the concatenated results of the iterator function.\n\n__Example__\n\n```js\nasync.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){\n    // files is now a list of filenames that exist in the 3 directories\n});\n```\n\n---------------------------------------\n\n<a name=\"concatSeries\" />\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name=\"series\" />\n### series(tasks, [callback])\n\nRun an array of functions in series, each one running once the
  previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run and the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n  a callback(err, result) it must call on completion with an error (which can\n  be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all \n  the result arguments passed to the task callback
 s.\n\n__Example__\n\n```js\nasync.series([\n    function(callback){\n        // do some stuff ...\n        callback(null, 'one');\n    },\n    function(callback){\n        // do some more stuff ...\n        callback(null, 'two');\n    }\n],\n// optional callback\nfunction(err, results){\n    // results is now equal to ['one', 'two']\n});\n\n\n// an example using an object instead of an array\nasync.series({\n    one: function(callback){\n        setTimeout(function(){\n            callback(null, 1);\n        }, 200);\n    },\n    two: function(callback){\n        setTimeout(function(){\n            callback(null, 2);\n        }, 100);\n    }\n},\nfunction(err, results) {\n    // results is now equal to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name=\"parallel\" />\n### parallel(tasks, [callback])\n\nRun an array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallba
 ck, the main callback is immediately called with the value of the error.\nOnce the tasks have completed, the results are passed to the final callback as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n  a callback(err, result) it must call on completion with an error (which can\n  be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all \n  the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.parallel([\n    function(callback){\n        setTimeout(function(){\n            callback(null, '
 one');\n        }, 200);\n    },\n    function(callback){\n        setTimeout(function(){\n            callback(null, 'two');\n        }, 100);\n    }\n],\n// optional callback\nfunction(err, results){\n    // the results array will equal ['one','two'] even though\n    // the second function had a shorter timeout.\n});\n\n\n// an example using an object instead of an array\nasync.parallel({\n    one: function(callback){\n        setTimeout(function(){\n            callback(null, 1);\n        }, 200);\n    },\n    two: function(callback){\n        setTimeout(function(){\n            callback(null, 2);\n        }, 100);\n    }\n},\nfunction(err, results) {\n    // results is now equals to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name=\"parallel\" />\n### parallelLimit(tasks, limit, [callback])\n\nThe same as parallel only the tasks are executed in parallel with a maximum of \"limit\" \ntasks executing at any time.\n\nNote that the tasks are not exec
 uted in batches, so there is no guarantee that \nthe first \"limit\" tasks will complete before any others are started.\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n  a callback(err, result) it must call on completion with an error (which can\n  be null) and an optional result value.\n* limit - The maximum number of tasks to run at any time.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all \n  the result arguments passed to the task callbacks.\n\n---------------------------------------\n\n<a name=\"whilst\" />\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the callback when stopped,\nor an error occurs.\n\n__Arguments__\n\n* test() - synchronous truth test to perform before each execution of fn.\n* fn(callback) - A function to call each time the test passes. The function is\n  
 passed a callback(err) which must be called once it has completed with an \n  optional error argument.\n* callback(err) - A callback which is called after the test fails and repeated\n  execution of fn has stopped.\n\n__Example__\n\n```js\nvar count = 0;\n\nasync.whilst(\n    function () { return count < 5; },\n    function (callback) {\n        count++;\n        setTimeout(callback, 1000);\n    },\n    function (err) {\n        // 5 seconds have passed\n    }\n);\n```\n\n---------------------------------------\n\n<a name=\"doWhilst\" />\n### doWhilst(fn, test, callback)\n\nThe post check version of whilst. To reflect the difference in the order of operations `test` and `fn` arguments are switched. `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n\n---------------------------------------\n\n<a name=\"until\" />\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse
  of async.whilst.\n\n---------------------------------------\n\n<a name=\"doUntil\" />\n### doUntil(fn, test, callback)\n\nLike doWhilst except the test is inverted. Note the argument ordering differs from `until`.\n\n---------------------------------------\n\n<a name=\"forever\" />\n### forever(fn, callback)\n\nCalls the asynchronous function 'fn' repeatedly, in series, indefinitely.\nIf an error is passed to fn's callback then 'callback' is called with the\nerror, otherwise it will never be called.\n\n---------------------------------------\n\n<a name=\"waterfall\" />\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the callback, the\nnext function is not executed and the main callback is immediately called with\nthe error.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a \n  callback(err, result1, result2, ...) it m
 ust call on completion. The first\n  argument is an error (which can be null) and any further arguments will be \n  passed as arguments in order to the next task.\n* callback(err, [results]) - An optional callback to run once all the functions\n  have completed. This will be passed the results of the last task's callback.\n\n\n\n__Example__\n\n```js\nasync.waterfall([\n    function(callback){\n        callback(null, 'one', 'two');\n    },\n    function(arg1, arg2, callback){\n        callback(null, 'three');\n    },\n    function(arg1, callback){\n        // arg1 now equals 'three'\n        callback(null, 'done');\n    }\n], function (err, result) {\n   // result now equals 'done'    \n});\n```\n\n---------------------------------------\n<a name=\"compose\" />\n### compose(fn1, fn2...)\n\nCreates a function which is a composition of the passed asynchronous\nfunctions. Each function consumes the return value of the function that\nfollows. Composing functions f(), g() and h() would pr
 oduce the result of\nf(g(h())), only this version uses callbacks to obtain the return values.\n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* functions... - the asynchronous functions to compose\n\n\n__Example__\n\n```js\nfunction add1(n, callback) {\n    setTimeout(function () {\n        callback(null, n + 1);\n    }, 10);\n}\n\nfunction mul3(n, callback) {\n    setTimeout(function () {\n        callback(null, n * 3);\n    }, 10);\n}\n\nvar add1mul3 = async.compose(mul3, add1);\n\nadd1mul3(4, function (err, result) {\n   // result now equals 15\n});\n```\n\n---------------------------------------\n<a name=\"applyEach\" />\n### applyEach(fns, args..., callback)\n\nApplies the provided arguments to each function in the array, calling the\ncallback after all functions have completed. If you only provide the first\nargument then it will return a function which lets you pass in the\narguments as if it were a single function call.\n\n_
 _Arguments__\n\n* fns - the asynchronous functions to all call with the same arguments\n* args... - any number of separate arguments to pass to the function\n* callback - the final argument should be the callback, called when all\n  functions have completed processing\n\n\n__Example__\n\n```js\nasync.applyEach([enableSearch, updateSchema], 'bucket', callback);\n\n// partial application example:\nasync.each(\n    buckets,\n    async.applyEach([enableSearch, updateSchema]),\n    callback\n);\n```\n\n---------------------------------------\n\n<a name=\"applyEachSeries\" />\n### applyEachSeries(arr, iterator, callback)\n\nThe same as applyEach only the functions are applied in series.\n\n---------------------------------------\n\n<a name=\"queue\" />\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one i
 s available. Once\na worker has completed a task, the task's callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n  task, which must call its callback(err) argument when finished, with an \n  optional error as an argument.\n* concurrency - An integer for determining how many worker functions should be\n  run in parallel.\n\n__Queue objects__\n\nThe queue object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* concurrency - an integer for determining how many worker functions should be\n  run in parallel. This property can be changed after a queue is created to\n  alter the concurrency on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n  once the worker has finished processing the task.\n  instead of a single task, an array of tasks can be submitted. the respective callback is
  used for every task in the list.\n* unshift(task, [callback]) - add a new task to the front of the queue.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n```js\n// create a queue object with concurrency 2\n\nvar q = async.queue(function (task, callback) {\n    console.log('hello ' + task.name);\n    callback();\n}, 2);\n\n\n// assign a callback\nq.drain = function() {\n    console.log('all items have been processed');\n}\n\n// add some items to the queue\n\nq.push({name: 'foo'}, function (err) {\n    console.log('finished processing foo');\n});\nq.push({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\n\n// add some items to the queue (batch-wise)\n\nq.push([{name: 'baz'},{nam
 e: 'bay'},{name: 'bax'}], function (err) {\n    console.log('finished processing bar');\n});\n\n// add some items to the front of the queue\n\nq.unshift({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\n```\n\n---------------------------------------\n\n<a name=\"cargo\" />\n### cargo(worker, [payload])\n\nCreates a cargo object with the specified payload. Tasks added to the\ncargo will be processed altogether (up to the payload limit). If the\nworker is in progress, the task is queued until it is available. Once\nthe worker has completed some tasks, each callback of those tasks is called.\n\n__Arguments__\n\n* worker(tasks, callback) - An asynchronous function for processing an array of\n  queued tasks, which must call its callback(err) argument when finished, with \n  an optional error as an argument.\n* payload - An optional integer for determining how many tasks should be\n  processed per round; if omitted, the default is unlimited.\n\n__Cargo obj
 ects__\n\nThe cargo object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* payload - an integer for determining how many tasks should be\n  process per round. This property can be changed after a cargo is created to\n  alter the payload on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n  once the worker has finished processing the task.\n  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n```js\n// create a cargo object with payload 2\n\nvar car
 go = async.cargo(function (tasks, callback) {\n    for(var i=0; i<tasks.length; i++){\n      console.log('hello ' + tasks[i].name);\n    }\n    callback();\n}, 2);\n\n\n// add some items\n\ncargo.push({name: 'foo'}, function (err) {\n    console.log('finished processing foo');\n});\ncargo.push({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\ncargo.push({name: 'baz'}, function (err) {\n    console.log('finished processing baz');\n});\n```\n\n---------------------------------------\n\n<a name=\"auto\" />\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately wit
 h the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\nNote, all functions are called with a results object as a second argument, \nso it is unsafe to pass functions in the tasks object which cannot handle the\nextra argument. For example, this snippet of code:\n\n```js\nasync.auto({\n  readData: async.apply(fs.readFile, 'data.txt', 'utf-8')\n}, callback);\n```\n\nwill have the effect of calling readFile with the results object as the last\nargument, which will fail:\n\n```js\nfs.readFile('data.txt', 'utf-8', cb, {});\n```\n\nInstead, wrap the call to readFile in a function which does not forward the \nresults object:\n\n```js\nasync.auto({\n  readData: function(cb, results){\n    fs.readFile('data.txt', 'utf-8', cb);\n  }\n}, callback);\n```\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n  requirements, with the function itself the last item in the array. The key\n  used for each
  function or array is used when specifying requirements. The \n  function receives two arguments: (1) a callback(err, result) which must be \n  called when finished, passing an error (which can be null) and the result of \n  the function's execution, and (2) a results object, containing the results of\n  the previously executed functions.\n* callback(err, results) - An optional callback which is called when all the\n  tasks have been completed. The callback will receive an error as an argument\n  if any tasks pass an error to their callback. Results will always be passed\n\tbut if an error occurred, no other tasks will be performed, and the results\n\tobject will only contain partial results.\n  \n\n__Example__\n\n```js\nasync.auto({\n    get_data: function(callback){\n        // async code to get some data\n    },\n    make_folder: function(callback){\n        // async code to create a directory to store a file in\n        // this is run at the same time as getting the data\n    },
 \n    write_file: ['get_data', 'make_folder', function(callback){\n        // once there is some data and the directory exists,\n        // write the data to a file in the directory\n        callback(null, filename);\n    }],\n    email_link: ['write_file', function(callback, results){\n        // once the file is written let's email a link to it...\n        // results.write_file contains the filename returned by write_file.\n    }]\n});\n```\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n```js\nasync.parallel([\n    function(callback){\n        // async code to get some data\n    },\n    function(callback){\n        // async code to create a directory to store a file in\n        // this is run at the same time as getting the data\n    }\n],\nfunction(err, results){\n    async.series([\n        function(callback){\n            // once there is some data and the directory exists,\n            // write the da
 ta to a file in the directory\n        },\n        function(callback){\n            // once the file is written let's email a link to it...\n        }\n    ]);\n});\n```\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n<a name=\"iterator\" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. It's also possible to\n'peek' the next iterator by doing iterator.next().\n\nThis function is used internally by the async module but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* tasks - An array of functions to run.\n\n__Example__\n\n```js\nvar iterator = async.iterator([\n    function(){ sys.p('one'); },\n    function(){ sys.p('two'); },\n    function(){ sys.p('three'); }\n]);\n\nnode> var iterator
 2 = iterator();\n'one'\nnode> var iterator3 = iterator2();\n'two'\nnode> iterator3();\n'three'\nnode> var nextfn = iterator2.next();\nnode> nextfn();\n'three'\n```\n\n---------------------------------------\n\n<a name=\"apply\" />\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied, a useful\nshorthand when combined with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to automatically apply when the\n  continuation is called.\n\n__Example__\n\n```js\n// using apply\n\nasync.parallel([\n    async.apply(fs.writeFile, 'testfile1', 'test1'),\n    async.apply(fs.writeFile, 'testfile2', 'test2'),\n]);\n\n\n// the same process without using apply\n\nasync.parallel([\n    function(callback){\n        fs.writeFile('testfile
 1', 'test1', callback);\n    },\n    function(callback){\n        fs.writeFile('testfile2', 'test2', callback);\n    }\n]);\n```\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n```js\nnode> var fn = async.apply(sys.puts, 'one');\nnode> fn('two', 'three');\none\ntwo\nthree\n```\n\n---------------------------------------\n\n<a name=\"nextTick\" />\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setImmediate(callback)\nif available, otherwise setTimeout(callback, 0), which means other higher priority\nevents may precede the execution of the callback.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* callback - The function to call on a later loop around the event loop.\n\n__Example__\n\n```js\nvar call_order = [];\nasync.nextTick(function(){\n    call_order.push('two');\n    // call_order now
  equals ['one','two']\n});\ncall_order.push('one')\n```\n\n<a name=\"times\" />\n### times(n, callback)\n\nCalls the callback n times and accumulates results in the same manner\nyou would use with async.map.\n\n__Arguments__\n\n* n - The number of times to run the function.\n* callback - The function to call n times.\n\n__Example__\n\n```js\n// Pretend this is some complicated async factory\nvar createUser = function(id, callback) {\n  callback(null, {\n    id: 'user' + id\n  })\n}\n// generate 5 users\nasync.times(5, function(n, next){\n    createUser(n, function(err, user) {\n      next(err, user)\n    })\n}, function(err, users) {\n  // we should now have 5 users\n});\n```\n\n<a name=\"timesSeries\" />\n### timesSeries(n, callback)\n\nThe same as times only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n## Utils\n\n<a na
 me=\"memoize\" />\n### memoize(fn, [hasher])\n\nCaches the results of an async function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\nThe cache of results is exposed as the `memo` property of the function returned\nby `memoize`.\n\n__Arguments__\n\n* fn - the function you to proxy and cache results from.\n* hasher - an optional function for generating a custom hash for storing\n  results, it has all the arguments applied to it apart from the callback, and\n  must be synchronous.\n\n__Example__\n\n```js\nvar slow_fn = function (name, callback) {\n    // do something\n    callback(null, result);\n};\nvar fn = async.memoize(slow_fn);\n\n// fn can now be used as if it were slow_fn\nfn('some name', function () {\n    // callback\n});\n```\n\n<a name=\"unmemoize\" />\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arg
 uments__\n\n* fn - the memoized function\n\n<a name=\"log\" />\n### log(function, arguments)\n\nLogs the result of an async function to the console. Only works in node.js or\nin browsers that support console.log and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.log is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n    setTimeout(function(){\n        callback(null, 'hello ' + name);\n    }, 1000);\n};\n```\n```js\nnode> async.log(hello, 'world');\n'hello world'\n```\n\n---------------------------------------\n\n<a name=\"dir\" />\n### dir(function, arguments)\n\nLogs the result of an async function to the console using console.dir to\ndisplay the properties of the resulting object. Only works in node.js or\nin bro
 wsers that support console.dir and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.dir is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n    setTimeout(function(){\n        callback(null, {hello: name});\n    }, 1000);\n};\n```\n```js\nnode> async.dir(hello, 'world');\n{hello: 'world'}\n```\n\n---------------------------------------\n\n<a name=\"noConflict\" />\n### noConflict()\n\nChanges the value of async back to its original value, returning a reference to the\nasync object.\n",
-  "readmeFilename": "README.md",
-  "homepage": "https://github.com/caolan/async",
-  "_id": "async@0.2.10",
-  "_from": "async@~0.2.9"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/dateformat/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/dateformat/LICENSE b/web/demos/package/node_modules/dateformat/LICENSE
deleted file mode 100644
index 57d44e2..0000000
--- a/web/demos/package/node_modules/dateformat/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-(c) 2007-2009 Steven Levithan <stevenlevithan.com>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/dateformat/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/dateformat/Readme.md b/web/demos/package/node_modules/dateformat/Readme.md
deleted file mode 100644
index 12f9872..0000000
--- a/web/demos/package/node_modules/dateformat/Readme.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# dateformat
-
-A node.js package for Steven Levithan's excellent [dateFormat()][dateformat] function.
-
-## Modifications
-
-* Removed the `Date.prototype.format` method. Sorry folks, but extending native prototypes is for suckers.
-* Added a `module.exports = dateFormat;` statement at the bottom
-* Added the placeholder `N` to get the ISO 8601 numeric representation of the day of the week
-
-## Installation
-
-```bash
-$ npm install dateformat
-```
-
-## Usage
-
-As taken from Steven's post, modified to match the Modifications listed above:
-```js
-    var dateFormat = require('dateformat');
-    var now = new Date();
-
-    // Basic usage
-    dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
-    // Saturday, June 9th, 2007, 5:46:21 PM
-
-    // You can use one of several named masks
-    dateFormat(now, "isoDateTime");
-    // 2007-06-09T17:46:21
-
-    // ...Or add your own
-    dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"';
-    dateFormat(now, "hammerTime");
-    // 17:46! Can't touch this!
-
-    // When using the standalone dateFormat function,
-    // you can also provide the date as a string
-    dateFormat("Jun 9 2007", "fullDate");
-    // Saturday, June 9, 2007
-
-    // Note that if you don't include the mask argument,
-    // dateFormat.masks.default is used
-    dateFormat(now);
-    // Sat Jun 09 2007 17:46:21
-
-    // And if you don't include the date argument,
-    // the current date and time is used
-    dateFormat();
-    // Sat Jun 09 2007 17:46:22
-
-    // You can also skip the date argument (as long as your mask doesn't
-    // contain any numbers), in which case the current date/time is used
-    dateFormat("longTime");
-    // 5:46:22 PM EST
-
-    // And finally, you can convert local time to UTC time. Simply pass in
-    // true as an additional argument (no argument skipping allowed in this case):
-    dateFormat(now, "longTime", true);
-    // 10:46:21 PM UTC
-
-    // ...Or add the prefix "UTC:" or "GMT:" to your mask.
-    dateFormat(now, "UTC:h:MM:ss TT Z");
-    // 10:46:21 PM UTC
-
-    // You can also get the ISO 8601 week of the year:
-    dateFormat(now, "W");
-    // 42
-
-    // and also get the ISO 8601 numeric representation of the day of the week:
-    dateFormat(now,"N");
-    // 6
-```
-## License
-
-(c) 2007-2009 Steven Levithan [stevenlevithan.com][stevenlevithan], MIT license.
-
-[dateformat]: http://blog.stevenlevithan.com/archives/date-time-format
-[stevenlevithan]: http://stevenlevithan.com/

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/dateformat/lib/dateformat.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/dateformat/lib/dateformat.js b/web/demos/package/node_modules/dateformat/lib/dateformat.js
deleted file mode 100644
index e1c3824..0000000
--- a/web/demos/package/node_modules/dateformat/lib/dateformat.js
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Date Format 1.2.3
- * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
- * MIT license
- *
- * Includes enhancements by Scott Trenda <scott.trenda.net>
- * and Kris Kowal <cixar.com/~kris.kowal/>
- *
- * Accepts a date, a mask, or a date and a mask.
- * Returns a formatted version of the given date.
- * The date defaults to the current date/time.
- * The mask defaults to dateFormat.masks.default.
- */
-
-var dateFormat = function () {
-	var	token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,
-		timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
-		timezoneClip = /[^-+\dA-Z]/g,
-		pad = function (val, len) {
-			val = String(val);
-			len = len || 2;
-			while (val.length < len) val = "0" + val;
-			return val;
-		},
-    /**
-     * Get the ISO 8601 week number
-     * Based on comments from
-     * http://techblog.procurios.nl/k/n618/news/view/33796/14863/Calculate-ISO-8601-week-and-year-in-javascript.html
-     */
-    getWeek = function (date) {
-      // Remove time components of date
-      var targetThursday = new Date(date.getFullYear(), date.getMonth(), date.getDate());
-
-      // Change date to Thursday same week
-      targetThursday.setDate(targetThursday.getDate() - ((targetThursday.getDay() + 6) % 7) + 3);
-
-      // Take January 4th as it is always in week 1 (see ISO 8601)
-      var firstThursday = new Date(targetThursday.getFullYear(), 0, 4);
-
-      // Change date to Thursday same week
-      firstThursday.setDate(firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7) + 3);
-
-      // Check if daylight-saving-time-switch occured and correct for it
-      var ds = targetThursday.getTimezoneOffset() - firstThursday.getTimezoneOffset();
-      targetThursday.setHours(targetThursday.getHours() - ds);
-
-      // Number of weeks between target Thursday and first Thursday
-      var weekDiff = (targetThursday - firstThursday) / (86400000*7);
-      return 1 + weekDiff;
-    },
-
-    /**
-     * Get ISO-8601 numeric representation of the day of the week
-     * 1 (for Monday) through 7 (for Sunday)
-     */
-
-    getDayOfWeek = function(date){
-    	var dow = date.getDay();
-    	if(dow === 0) dow = 7;
-    	return dow;
-    };
-
-	// Regexes and supporting functions are cached through closure
-	return function (date, mask, utc, gmt) {
-		var dF = dateFormat;
-
-		// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
-		if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
-			mask = date;
-			date = undefined;
-		}
-
-		date = date || new Date;
-
-    if(!(date instanceof Date)) {
-      date = new Date(date);
-    }
-
-    if (isNaN(date)) {
-      throw TypeError("Invalid date");
-    }
-
-		mask = String(dF.masks[mask] || mask || dF.masks["default"]);
-
-		// Allow setting the utc/gmt argument via the mask
-		var maskSlice = mask.slice(0, 4);
-		if (maskSlice == "UTC:" || maskSlice == "GMT:") {
-			mask = mask.slice(4);
-			utc = true;
-			if (maskSlice == "GMT:") {
-				gmt = true;
-			}
-		}
-
-		var	_ = utc ? "getUTC" : "get",
-			d = date[_ + "Date"](),
-			D = date[_ + "Day"](),
-			m = date[_ + "Month"](),
-			y = date[_ + "FullYear"](),
-			H = date[_ + "Hours"](),
-			M = date[_ + "Minutes"](),
-			s = date[_ + "Seconds"](),
-			L = date[_ + "Milliseconds"](),
-			o = utc ? 0 : date.getTimezoneOffset(),
-			W = getWeek(date),
-			N = getDayOfWeek(date),
-			flags = {
-				d:    d,
-				dd:   pad(d),
-				ddd:  dF.i18n.dayNames[D],
-				dddd: dF.i18n.dayNames[D + 7],
-				m:    m + 1,
-				mm:   pad(m + 1),
-				mmm:  dF.i18n.monthNames[m],
-				mmmm: dF.i18n.monthNames[m + 12],
-				yy:   String(y).slice(2),
-				yyyy: y,
-				h:    H % 12 || 12,
-				hh:   pad(H % 12 || 12),
-				H:    H,
-				HH:   pad(H),
-				M:    M,
-				MM:   pad(M),
-				s:    s,
-				ss:   pad(s),
-				l:    pad(L, 3),
-				L:    pad(L > 99 ? Math.round(L / 10) : L),
-				t:    H < 12 ? "a"  : "p",
-				tt:   H < 12 ? "am" : "pm",
-				T:    H < 12 ? "A"  : "P",
-				TT:   H < 12 ? "AM" : "PM",
-				Z:    gmt ? "GMT" : utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
-				o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
-				S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10],
-				W:    W,
-				N:    N
-			};
-
-		return mask.replace(token, function ($0) {
-			return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
-		});
-	};
-}();
-
-// Some common format strings
-dateFormat.masks = {
-	"default":      "ddd mmm dd yyyy HH:MM:ss",
-	shortDate:      "m/d/yy",
-	mediumDate:     "mmm d, yyyy",
-	longDate:       "mmmm d, yyyy",
-	fullDate:       "dddd, mmmm d, yyyy",
-	shortTime:      "h:MM TT",
-	mediumTime:     "h:MM:ss TT",
-	longTime:       "h:MM:ss TT Z",
-	isoDate:        "yyyy-mm-dd",
-	isoTime:        "HH:MM:ss",
-	isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
-	isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'",
-	expiresHeaderFormat: "ddd, dd mmm yyyy HH:MM:ss Z"
-};
-
-// Internationalization strings
-dateFormat.i18n = {
-	dayNames: [
-		"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
-		"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
-	],
-	monthNames: [
-		"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
-		"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
-	]
-};
-
-/*
-// For convenience...
-Date.prototype.format = function (mask, utc) {
-	return dateFormat(this, mask, utc);
-};
-*/
-
-if (typeof exports !== "undefined") {
-  module.exports = dateFormat;
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/dateformat/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/dateformat/package.json b/web/demos/package/node_modules/dateformat/package.json
deleted file mode 100644
index 6ace1a9..0000000
--- a/web/demos/package/node_modules/dateformat/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "name": "dateformat",
-  "description": "A node.js package for Steven Levithan's excellent dateFormat() function.",
-  "maintainers": "Felix Geisendƶrfer <fe...@debuggable.com>",
-  "homepage": "https://github.com/felixge/node-dateformat",
-  "author": {
-    "name": "Steven Levithan"
-  },
-  "contributors": [
-    {
-      "name": "Steven Levithan"
-    },
-    {
-      "name": "Felix Geisendƶrfer",
-      "email": "felix@debuggable.com"
-    },
-    {
-      "name": "Christoph Tavan",
-      "email": "dev@tavan.de"
-    }
-  ],
-  "version": "1.0.7-1.2.3",
-  "main": "./lib/dateformat",
-  "dependencies": {},
-  "devDependencies": {},
-  "engines": {
-    "node": "*"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/felixge/node-dateformat.git"
-  },
-  "readme": "# dateformat\n\nA node.js package for Steven Levithan's excellent [dateFormat()][dateformat] function.\n\n## Modifications\n\n* Removed the `Date.prototype.format` method. Sorry folks, but extending native prototypes is for suckers.\n* Added a `module.exports = dateFormat;` statement at the bottom\n* Added the placeholder `N` to get the ISO 8601 numeric representation of the day of the week\n\n## Installation\n\n```bash\n$ npm install dateformat\n```\n\n## Usage\n\nAs taken from Steven's post, modified to match the Modifications listed above:\n```js\n    var dateFormat = require('dateformat');\n    var now = new Date();\n\n    // Basic usage\n    dateFormat(now, \"dddd, mmmm dS, yyyy, h:MM:ss TT\");\n    // Saturday, June 9th, 2007, 5:46:21 PM\n\n    // You can use one of several named masks\n    dateFormat(now, \"isoDateTime\");\n    // 2007-06-09T17:46:21\n\n    // ...Or add your own\n    dateFormat.masks.hammerTime = 'HH:MM! \"Can\\'t touch this!\"';\n    dateFormat(
 now, \"hammerTime\");\n    // 17:46! Can't touch this!\n\n    // When using the standalone dateFormat function,\n    // you can also provide the date as a string\n    dateFormat(\"Jun 9 2007\", \"fullDate\");\n    // Saturday, June 9, 2007\n\n    // Note that if you don't include the mask argument,\n    // dateFormat.masks.default is used\n    dateFormat(now);\n    // Sat Jun 09 2007 17:46:21\n\n    // And if you don't include the date argument,\n    // the current date and time is used\n    dateFormat();\n    // Sat Jun 09 2007 17:46:22\n\n    // You can also skip the date argument (as long as your mask doesn't\n    // contain any numbers), in which case the current date/time is used\n    dateFormat(\"longTime\");\n    // 5:46:22 PM EST\n\n    // And finally, you can convert local time to UTC time. Simply pass in\n    // true as an additional argument (no argument skipping allowed in this case):\n    dateFormat(now, \"longTime\", true);\n    // 10:46:21 PM UTC\n\n    // ...Or add t
 he prefix \"UTC:\" or \"GMT:\" to your mask.\n    dateFormat(now, \"UTC:h:MM:ss TT Z\");\n    // 10:46:21 PM UTC\n\n    // You can also get the ISO 8601 week of the year:\n    dateFormat(now, \"W\");\n    // 42\n\n    // and also get the ISO 8601 numeric representation of the day of the week:\n    dateFormat(now,\"N\");\n    // 6\n```\n## License\n\n(c) 2007-2009 Steven Levithan [stevenlevithan.com][stevenlevithan], MIT license.\n\n[dateformat]: http://blog.stevenlevithan.com/archives/date-time-format\n[stevenlevithan]: http://stevenlevithan.com/\n",
-  "readmeFilename": "Readme.md",
-  "bugs": {
-    "url": "https://github.com/felixge/node-dateformat/issues"
-  },
-  "_id": "dateformat@1.0.7-1.2.3",
-  "_from": "dateformat@~1.0.6-1.2.3"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/dateformat/test/basic.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/dateformat/test/basic.js b/web/demos/package/node_modules/dateformat/test/basic.js
deleted file mode 100644
index 9602a72..0000000
--- a/web/demos/package/node_modules/dateformat/test/basic.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var dateFormat = require('./lib/dateformat.js');
-var now = new Date();
-
-// Basic usage
-console.log(dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT"));
-// Saturday, June 9th, 2007, 5:46:21 PM
-
-// You can use one of several named masks
-console.log(dateFormat(now, "isoDateTime"));
-// 2007-06-09T17:46:21
-
-// ...Or add your own
-dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"';
-console.log(dateFormat(now, "hammerTime"));
-// 17:46! Can't touch this!
-
-// When using the standalone dateFormat function,
-// you can also provide the date as a string
-console.log(dateFormat("Jun 9 2007", "fullDate"));
-// Saturday, June 9, 2007
-
-// Note that if you don't include the mask argument,
-// dateFormat.masks.default is used
-console.log(dateFormat(now));
-// Sat Jun 09 2007 17:46:21
-
-// And if you don't include the date argument,
-// the current date and time is used
-console.log(dateFormat());
-// Sat Jun 09 2007 17:46:22
-
-// You can also skip the date argument (as long as your mask doesn't
-// contain any numbers), in which case the current date/time is used
-console.log(dateFormat("longTime"));
-// 5:46:22 PM EST
-
-// And finally, you can convert local time to UTC time. Simply pass in
-// true as an additional argument (no argument skipping allowed in this case):
-console.log(dateFormat(now, "longTime", true));
-// 10:46:21 PM UTC
-
-// ...Or add the prefix "UTC:" to your mask.
-console.log(dateFormat(now, "UTC:h:MM:ss TT Z"));
-// 10:46:21 PM UTC
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/dateformat/test/test_dayofweek.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/dateformat/test/test_dayofweek.js b/web/demos/package/node_modules/dateformat/test/test_dayofweek.js
deleted file mode 100644
index 07780fa..0000000
--- a/web/demos/package/node_modules/dateformat/test/test_dayofweek.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var dateFormat = require('./../lib/dateformat'),
-	assert = require('assert');
-
-var start = 10; // the 10 of March 2013 is a Sunday
-for(var dow = 1; dow <= 7; dow++){
-	var date = new Date('2013-03-' + (start + dow));
-	var N = dateFormat(date,'N');
-	assert.equal(N,dow);
-	console.log('The ISO-8601 numeric representation of the day "' + date.toString() + '" is ' + N);
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/dateformat/test/test_weekofyear.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/dateformat/test/test_weekofyear.js b/web/demos/package/node_modules/dateformat/test/test_weekofyear.js
deleted file mode 100644
index d1ddbe8..0000000
--- a/web/demos/package/node_modules/dateformat/test/test_weekofyear.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var dateFormat = require('../lib/dateformat.js');
-
-var val = process.argv[2] || new Date();
-console.log(dateFormat(val, 'W'));

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/dateformat/test/test_weekofyear.sh
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/dateformat/test/test_weekofyear.sh b/web/demos/package/node_modules/dateformat/test/test_weekofyear.sh
deleted file mode 100644
index 3c3e69b..0000000
--- a/web/demos/package/node_modules/dateformat/test/test_weekofyear.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-
-# this just takes php's date() function as a reference to check if week of year
-# is calculated correctly in the range from 1970 .. 2038 by brute force...
-
-SEQ="seq"
-SYSTEM=`uname`
-if [ "$SYSTEM" = "Darwin" ]; then
-	SEQ="jot"
-fi
-
-for YEAR in {1970..2038}; do
-  for MONTH in {1..12}; do
-    DAYS=$(cal $MONTH $YEAR | egrep "28|29|30|31" |tail -1 |awk '{print $NF}')
-    for DAY in $( $SEQ $DAYS ); do
-      DATE=$YEAR-$MONTH-$DAY
-      echo -n $DATE ...
-      NODEVAL=$(node test_weekofyear.js $DATE)
-      PHPVAL=$(php -r "echo intval(date('W', strtotime('$DATE')));")
-      if [ "$NODEVAL" -ne "$PHPVAL" ]; then
-        echo "MISMATCH: node: $NODEVAL vs php: $PHPVAL for date $DATE"
-      else
-        echo " OK"
-      fi
-    done
-  done
-done

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/.npmignore b/web/demos/package/node_modules/express/.npmignore
deleted file mode 100644
index caf574d..0000000
--- a/web/demos/package/node_modules/express/.npmignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.git*
-docs/
-examples/
-support/
-test/
-testing.js
-.DS_Store
-coverage.html
-lib-cov

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/.travis.yml b/web/demos/package/node_modules/express/.travis.yml
deleted file mode 100644
index cc4dba2..0000000
--- a/web/demos/package/node_modules/express/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
-  - "0.8"
-  - "0.10"


[89/98] [abbrv] incubator-apex-malhar git commit: Cleanup of web resources

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/server.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/server.js b/apps/logstream/src/main/html/server.js
new file mode 100644
index 0000000..fe364a2
--- /dev/null
+++ b/apps/logstream/src/main/html/server.js
@@ -0,0 +1,115 @@
+/*
+ * 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.
+ */
+/**
+ * Functions for drawing server load vs time chart.
+ */
+
+function RenderServerLoadTimeChart()
+{  
+  // create/delete rows 
+  if (serverLoadTable.getNumberOfRows() < serverLoadDataPoints.length)
+  {    
+    var numRows = serverLoadDataPoints.length - serverLoadTable.getNumberOfRows();
+    serverLoadTable.addRows(numRows);
+  } else {
+    for(var i=(serverLoadTable.getNumberOfRows()-1); i >= serverLoadDataPoints.length; i--)
+    {
+      serverLoadTable.removeRow(i);    
+    }
+  }
+
+  // Populate data table with time/cost data points. 
+  for(var i=0; i < serverLoadTable.getNumberOfRows(); i++)
+  {
+    serverLoadTable.setCell(i, 0, new Date(parseInt(serverLoadDataPoints[i].timestamp)));
+    serverLoadTable.setCell(i, 1, parseFloat(serverLoadDataPoints[i].view));
+  }
+
+  // get chart options
+  var serverName = document.getElementById('servername').value;  
+  var title = "All Servers (PVS/Min)";
+  if (serverName != "all") title = serverName + " (PVS/Min)";
+  var options = {pointSize: 0, lineWidth : 1, legend : { position : 'top'} };
+  options.title = title;
+
+  // Draw line chart.
+  serverLoadChart.draw(serverLoadView, options); 
+}
+
+function DrawServerLoadTime()
+{
+  // get url 
+  var url = "ServerLoad.php?from=" + Math.floor(serverLoadLookback);
+  if ( serverName && (serverName.length > 0))
+  {   
+    url += "&server=" + serverName;    
+  }
+
+  // fetch data  
+    try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        serverLoadData = connect.response;
+        var pts = JSON.parse(serverLoadData);
+        for(var i=0; i <  pts.length; i++) 
+        {
+          serverLoadDataPoints.push(pts[i]);
+          delete pts[i];
+        }
+        delete pts;
+        sortByKey(serverLoadDataPoints, "timestamp");
+        RenderServerLoadTimeChart();
+        delete serverLoadData;
+        delete serverLoadDataPoints;
+        serverLoadDataPoints = new Array();
+      }
+    }
+    connect.open('GET',  url, true);
+    connect.send(null);
+  } catch(e) {
+  }
+  serverLoadLookback = (new Date().getTime()/1000) -  (3600*serverLoadInterval) - 60;
+}
+
+function HandleServerLoadTimeSubmit()
+{
+  // reset intercval  
+  if(serverNowPlaying) clearInterval(serverNowPlaying);
+
+  // get params 
+  serverName = document.getElementById('servername').value;
+  serverLoadLookback = document.getElementById('serverloadlookback').value;
+  if ( !serverLoadLookback || (serverLoadLookback == "")) {
+    serverLoadLookback = (new Date().getTime()/1000) - 3600;
+  }  else {
+    serverLoadLookback = (new Date().getTime()/1000) - 3600 * serverLoadLookback;
+  }
+
+  // set from values  
+  document.getElementById('servername').value = serverName;
+  var lookback = document.getElementById('serverloadlookback').value;
+  document.getElementById('serverloadlookback').value = lookback;
+  serverLoadInterval = lookback;
+       
+  // darw server load/time chart  
+  DrawServerLoadTime();
+  serverNowPlaying = setInterval(DrawServerLoadTime, 60 * 1000); 
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/serverfail.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/serverfail.js b/apps/logstream/src/main/html/serverfail.js
new file mode 100644
index 0000000..76e5bf5
--- /dev/null
+++ b/apps/logstream/src/main/html/serverfail.js
@@ -0,0 +1,64 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawServer404TableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        var server404 = new google.visualization.DataTable();
+        server404.addColumn('string', 'SERVER');
+        server404.addColumn('number', '404/sec');
+        server404.addRows(10);
+        for(var i=0; ((i <  pts.length)&&(i < 10)); i++) 
+        {
+          var row = pts[i].split("##");
+          if ((row[0] == null)||(row[0] == ""))
+          {
+            server404.setCell(i, 0, "-");
+          } else {
+            server404.setCell(i, 0, row[0]);
+          }
+          if ((row[1] == null)||(row[1] == ""))
+          {
+            server404.setCell(i, 1, 0);
+          } else {
+            server404.setCell(i, 1, parseInt(row[1]));
+          }
+        }
+        //document.getElementById('risky_client_div').innerHTML = data;
+        //document.getElementById('risky_client_div').innerHTML = server404.getNumberOfRows();
+        server404TableChart.draw(server404, {showRowNumber: true});
+        delete server404;
+        delete data;
+        delete pts;
+      }
+    }
+    connect.open('GET',  "Server404.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/adsdimension/global.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/adsdimension/global.js b/contrib/src/main/html/adsdimension/global.js
deleted file mode 100644
index bb5639c..0000000
--- a/contrib/src/main/html/adsdimension/global.js
+++ /dev/null
@@ -1,379 +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.
- */
-/**
- * Declaration and initialization for global variables.
- */
-
-// url parameters   
-var params;
-
-// Data Points 
-var aggrData; 
-var aggrDataPoints;
-var contData;
-var contDataPoints;
-
-// Cost data table 
-var costTable;
-var costChart; 
-var costView;
-
-// Revenue data table 
-var revenueTable;
-var revenueChart; 
-var revenueView;  
-
-// Clicks data table 
-var clicksTable;
-var clicksChart; 
-var clicksView;  
-
-// Impressions data table 
-var impressionsTable;
-var impressionsChart; 
-var impressionsView;  
-
-// Ctr data table 
-var ctrTable;
-var ctrChart; 
-var ctrView;  
-
-// Margin data table 
-var marginTable;
-var marginChart; 
-var marginView;  
-
-// chart options
-var chartOptions;
-
-// Date formatter  
-var dateFormatter;
-
-// window look back value 
-var lookback;
-var aggrLookBack;
-var contLookBack;
-var contRefresh;
-var paramLookBack;
-
-// Get split query string
-function QueryString() {
-  var query_string = {};
-  var query = window.location.search.substring(1);
-  return query;
-}
-function SplitQuery(query)
-{  
-	var params = {};
-	var vars = query.split("&");
-	for (var i=0;i<vars.length;i++)
-	{
-		var pair = vars[i].split("=");
-		if(pair.length == 2) 
-		{
-			params[pair[0]] = pair[1];
-		}
-	}
-	return params;
-}  
-
-// Initialize global variable(s)
-function InitializeGlobal()
-{
-  // Initialize params  
-  params = SplitQuery(QueryString()); 
-       
-  // Initialize data points 
-  aggrDataPoints = new Array();
-  contDataPoints = new Array();
-    
-  // Initialize cost table 
-  costTable = new google.visualization.DataTable(); 
-  costTable.addColumn('datetime', 'Time');
-  costTable.addColumn('number', 'Cost');
-  chartOptions = { width: 600, height: 300, legend: 'none', pointSize: 0, lineWidth : 1 };
-  costChart = new google.visualization.ScatterChart(document.getElementById('chart_div'));
-  costView = new google.visualization.DataView(costTable);
-
-  // Initialize revenue table 
-  revenueTable = new google.visualization.DataTable(); 
-  revenueTable.addColumn('datetime', 'Time');
-  revenueTable.addColumn('number', 'Revenue');;
-  revenueChart = new google.visualization.ScatterChart(document.getElementById('chart1_div'));
-  revenueView = new google.visualization.DataView(revenueTable);
-
-  // Initialize clicks table 
-  clicksTable = new google.visualization.DataTable(); 
-  clicksTable.addColumn('datetime', 'Time');
-  clicksTable.addColumn('number', 'Clicks');;
-  clicksChart = new google.visualization.ScatterChart(document.getElementById('chart2_div'));
-  clicksView = new google.visualization.DataView(clicksTable);
-    
-  // Initialize impressions table 
-  impressionsTable = new google.visualization.DataTable(); 
-  impressionsTable.addColumn('datetime', 'Time');
-  impressionsTable.addColumn('number', 'Impressions');;
-  impressionsChart = new google.visualization.ScatterChart(document.getElementById('chart3_div'));
-  impressionsView = new google.visualization.DataView(impressionsTable);
-    
-  // Initialize ctr table 
-  ctrTable = new google.visualization.DataTable(); 
-  ctrTable.addColumn('datetime', 'Time');
-  ctrTable.addColumn('number', 'Ctr');;
-  ctrChart = new google.visualization.ScatterChart(document.getElementById('chart4_div'));
-  ctrView = new google.visualization.DataView(ctrTable);
-    
-  // Initialize margin table 
-  marginTable = new google.visualization.DataTable(); 
-  marginTable.addColumn('datetime', 'Time');
-  marginTable.addColumn('number', 'Margin');;
-  marginChart = new google.visualization.ScatterChart(document.getElementById('chart5_div'));
-  marginView = new google.visualization.DataView(marginTable);
-
-  // get lookback value  
-  lookback = (new Date().getTime()/1000) - 3600*6;
-  if (params['lookback'] && (params['lookback'].length > 0)) lookback = (new Date().getTime()/1000) - (3600*(parseInt(params['lookback'])));
-  aggrLookBack = lookback;
-     
-  // get continuos lookback 
-  contLookBack = lookback;
-  contRefresh = 5;
-      
-  // get param lookback  
-  paramLookBack = 6;
-  if (params['lookback'] && (params['lookback'].length > 0)) paramLookBack = parseInt(params['lookback']);
-  //if (params['refresh'] && (params['refresh'].length > 0)) contRefresh = parseInt(params['refresh']);
-}
-
-
-/**
- * Function to create fetch urls from given parameters
- */
-function DataUrl() 
-{       
-    var url = "json.php?bucket=m";
-    url += "&publisher=";
-    if (params['publisher']) 
-    {	
-      url += params['publisher'];
-    }
-    url += "&advertiser=";
-    if (params['advertiser']) 
-    {	
-      url += params['advertiser'];
-    }
-    url += "&adunit=";
-    if (params['adunit']) 
-    {	
-      url += params['adunit'];
-    }
-     url += "&from=";
-    url += Math.floor(lookback);
-    return url;   
-}
-
-/**
- * Creates data table with time stamp and cost values.
- * Draw line chart for time vs cost.
- */
-function DrawCostChart()
-{
-  // create/delete rows 
-  if (costTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - costTable.getNumberOfRows();
-    costTable.addRows(numRows);
-  } else {
-    for(var i=(costTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      costTable.removeRow(i);    
-    }
-  }
-    
-  // Populate data table with time/cost data points. 
-  for(var i=0; i < costTable.getNumberOfRows(); i++)
-  {
-    //if(parseFloat(aggrDataPoints[i].cost) < 500) continue;
-    costTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    costTable.setCell(i, 1, parseFloat(aggrDataPoints[i].cost));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'Cost Chart';
-  costChart.draw(costView, chartOptions); 
-}     
-
-/**
- * Creates data table with time stamp and revenu values.
- * Draw line chart for time vs revenue.
- */
-function DrawRevenueChart()
-{
-  // create/delete rows 
-  if (revenueTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - revenueTable.getNumberOfRows();
-    revenueTable.addRows(numRows);
-  } else {
-    for(var i=(revenueTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      revenueTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/revenue data points. 
-  for(var i=0; i < revenueTable.getNumberOfRows(); i++)
-  {
-    revenueTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    revenueTable.setCell(i, 1, parseFloat(aggrDataPoints[i].revenue));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'Revenue Chart';
-  revenueChart.draw(revenueView, chartOptions); 
-}  
-
-/**
- * Creates data table with time stamp and clicks values.
- * Draw line chart for time vs clicks.
- */
-function DrawClicksChart()
-{
-  // create/delete rows 
-  if (clicksTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - clicksTable.getNumberOfRows();
-    clicksTable.addRows(numRows);
-  } else {
-    for(var i=(clicksTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      clicksTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/clicks data points. 
-  for(var i=0; i < clicksTable.getNumberOfRows(); i++)
-  {
-    clicksTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    clicksTable.setCell(i, 1, parseInt(aggrDataPoints[i].clicks));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'Clicks Chart';
-  clicksChart.draw(clicksView, chartOptions); 
-}
-
-/**
- * Creates data table with time stamp and impressions values.
- * Draw line chart for time vs impressions.
- */
-function DrawImpressionsChart()
-{
-  // create/delete rows 
-  if (impressionsTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - impressionsTable.getNumberOfRows();
-    impressionsTable.addRows(numRows);
-  } else {
-    for(var i=(impressionsTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      impressionsTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/impressions data points. 
-  for(var i=0; i < impressionsTable.getNumberOfRows(); i++)
-  {
-    impressionsTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    impressionsTable.setCell(i, 1, parseInt(aggrDataPoints[i].impressions));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'Impressions Chart';
-  impressionsChart.draw(impressionsView, chartOptions); 
-}
-
-/**
- * Draw line chart for time vs ctr.
- */
-function DrawCtrChart()
-{
-  // create/delete rows 
-  if (ctrTable.getNumberOfRows() < contDataPoints.length)
-  {    
-    var numRows = contDataPoints.length - ctrTable.getNumberOfRows();
-    ctrTable.addRows(numRows);
-  } else {
-    for(var i=(ctrTable.getNumberOfRows()-1); i > contDataPoints.length; i--)
-    {
-      ctrTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/cost data points. 
-  for(var i=0; i < ctrTable.getNumberOfRows(); i++)
-  {
-    ctrTable.setCell(i, 0, new Date(parseInt(contDataPoints[i].timestamp)));
-    ctrTable.setCell(i, 1, (parseInt(contDataPoints[i].clicks)/parseInt(contDataPoints[i].impressions))*100);
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'Ctr Chart';
-  ctrChart.draw(ctrView, chartOptions); 
-} 
-
-/**
- * Draw line chart for time vs margin.
- */
-function DrawMarginChart()
-{
-  // create/delete rows 
-  if (marginTable.getNumberOfRows() < contDataPoints.length)
-  {    
-    var numRows = contDataPoints.length - marginTable.getNumberOfRows();
-    marginTable.addRows(numRows);
-  } else {
-    for(var i=(marginTable.getNumberOfRows()-1); i > contDataPoints.length; i--)
-    {
-      marginTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/cost data points. 
-  for(var i=0; i < marginTable.getNumberOfRows(); i++)
-  {
-    marginTable.setCell(i, 0, new Date(parseInt(contDataPoints[i].timestamp)));
-    marginTable.setCell(i, 1, (parseFloat(contDataPoints[i].cost)-parseFloat(contDataPoints[i].revenue))/parseFloat(contDataPoints[i].revenue));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'Margin Chart';
-  marginChart.draw(marginView, chartOptions); 
-}
-
-/**
- * Sort json array  
- */
-function sortByKey(array, key) {
-    return array.sort(function(a, b) {
-        var x = a[key]; var y = b[key];
-        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
-    });
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/adsdimension/index.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/adsdimension/index.php b/contrib/src/main/html/adsdimension/index.php
deleted file mode 100644
index b53d93f..0000000
--- a/contrib/src/main/html/adsdimension/index.php
+++ /dev/null
@@ -1,235 +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.
- */
-<!--
- --  Copyright (c) 2012-2013 DataTorrent, Inc.
- --  All Rights Reserved.
- -->
-    
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Data Torrent : Ads Demo </title>
-
-<link rel="stylesheet" type="text/css" href="malhar.css">
-
-<!-- Google charts include -->
-<script type="text/javascript" src="https://www.google.com/jsapi"></script>
-<script type="text/javascript">
-google.load('visualization', '1', {'packages':['corechart']});
-</script>
-
-<!-- Malhar charting utils -->
-<script type="text/javascript" src="global.js"></script>
-
-<!-- window onload -->
-<script type="text/javascript">
-
-function DrawAggrCharts()
-{
-  // get refresh url 
-  lookback = aggrLookBack; 
-  var url = DataUrl();  
-  //document.getElementById('chart_div').innerHTML = url;
-
-  // fetch data, draw charts
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        aggrData = connect.response;
-        var pts = JSON.parse(aggrData);
-        aggrDataPoints  = new Array();
-        for(var i=0; i <  pts.length; i++) aggrDataPoints.push(pts[i]);
-        DrawCostChart();
-        DrawRevenueChart();
-        DrawClicksChart();
-        DrawImpressionsChart();
-        delete aggrData;
-      }
-    }
-    connect.open('GET',  url, true);
-    connect.send(null);
-  } catch(e) {
-  }
-  aggrLookBack += 30;
-}
-
-function DrawContCharts()  
-{    
-  // get refresh url 
-  lookback = contLookBack; 
-  var url = DataUrl();    
-
-  // fetch data, draw charts
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        contData = connect.response;   
-        var newPts = JSON.parse(contData);  
-        contDataPoints  = new Array();
-        for(var i=0; i <  newPts.length; i++) contDataPoints.push(newPts[i]);
-        DrawCtrChart() ;
-        DrawMarginChart();
-        delete contData;
-        delete newPts;
-      }
-    }
-    connect.open('GET',  url, true);
-    connect.send(null);
-  } catch(e) {
-  }
-  contLookBack += contRefresh;
-}
-
-window.onload = function() {
-
-  // Initialize global 
-  InitializeGlobal();   
-
-  // Inituialize form fields  
-  if (params['publisher']) document.getElementById('publisher').value = params['publisher'];
-  if (params['advertiser']) document.getElementById('advertiser').value = params['advertiser'];
-  if (params['adunit']) document.getElementById('adunit').value = params['adunit'];
-  if (params['refresh'])
-  {
-    document.getElementById('refresh').value = params['refresh'];   
-  } else {
-    document.getElementById('refresh').value = 5;
-  }    
-  if (params['lookback'])
-  {
-    document.getElementById('lookback').value = params['lookback'];   
-  } else {
-    document.getElementById('lookback').value = 6;
-  }
-       
-
-  // draw charts 
-  DrawAggrCharts();
-  DrawContCharts();
-  setInterval(DrawAggrCharts, 30000);
-  setInterval(DrawContCharts, contRefresh * 1000);
-};
-
-</script>
-
-</head>
-<body>
-
-    <div id="header">
-        <ul class="dashboard-modes">
-            <li>
-                <a href="#" class="active">Ads Dimensions Demo</a>
-            </li>
-        </ul>
-
-        <div id="logo"><img src="main_banner.png"/></div>
-    </div>
-	
-	<div id="main">
-    <div id="pagecontent">
-        <div class="dashboardMgr">
-            <div class="inner" style="">
-                <h2 class="title">View Real Time Data Charts</h2> 
-                <form method="GET" action="index.php">
-                    
-                    <label for="publisher">Publisher ID:</label>
-                    <select name="publisher" id="publisher" style="width:200px;">
-                  		<option value="">ALL</option>
-                		<?php
-                   			for ($i = 0; $i < 50; $i++) {
-                  				print "<option value=\"$i\">Publisher $i</option>\n";
-                			}
-                		?>
-             		</select>
-             		
-            		<label for="">Advertiser ID:</label>
-            		<select name="advertiser" id="advertiser" style="width:200px;">
-              		    <option value="">ALL</option>
-                		<?php
-                			for ($i = 0; $i < 100; $i++) {
-                  				print "<option value=\"$i\">Advertiser $i</option>\n";
-                			}
-                		?>
-            		</select>
-        		
-        		    <label for="">Ad Unit:</label>
-            		<select name="adunit" id="adunit" style="width:200px;">
-              		    <option value="">ALL</option>
-        		        <?php
-                			for ($i = 0; $i < 5; $i++) {
-                  				print "<option value=\"$i\">Adunit $i</option>\n";
-                			}
-        	            ?>
-            		</select>
-            		
-            		<label for="">Refresh Interval:</label>
-            		<div class="input-append">
-                        <input type="text" name="refresh" id="refresh" class="input-small"/>
-                        <span class="add-on">Secs</span>
-                    </div>
-                    
-
-        		    <label for="">Look Back:</label>
-        		    <div class="input-append">
-                        <input type="text" name="lookback" id="lookback" class="input-small"/>
-                        <span class="add-on">Hours</span>
-                    </div>
-                    
-                    <input type="submit" value="submit" class="btn btn-primary" />
-                    
-                </form>
-            </div>
-            <div class="collapser-container">
-                <div class="collapser">
-                    <div class="collapse-dot"></div>
-                    <div class="collapse-dot"></div>
-                    <div class="collapse-dot"></div>
-                </div>
-            </div>
-        </div>
-        <div class="dashboardMain">
-            
-	<!-- <table><tbody>
-                <tr>
-        	      <td><div id="chart_div"></div></td>	
-        	      <td><div id="chart1_div" ></div></td>	
-                 </tr>
-                 <tr>
-        	     <td><div id="chart2_div" ></div></td>	
-        	     <td><div id="chart3_div" ></div></td>	
-                 </tr>
-                 <tr>
-        	   <td><div id="chart4_div" ></div></td>	
-        	    <td><div id="chart5_div" ></div></td>	
-                 </tr>
-        	 </tr></tbody></table> -->
-	<div class="chart-ctnr" id="chart_div"></div>
-        <div class="chart-ctnr" id="chart1_div" ></div>	
-        <div class="chart-ctnr" id="chart2_div" ></div>	
-        <div class="chart-ctnr" id="chart3_div" ></div>	
-        <div class="chart-ctnr" id="chart4_div" ></div>	
-        <div class="chart-ctnr" id="chart5_div" ></div>
-        </div>		
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/adsdimension/json.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/adsdimension/json.php b/contrib/src/main/html/adsdimension/json.php
deleted file mode 100644
index 8e91629..0000000
--- a/contrib/src/main/html/adsdimension/json.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('localhost');
-$from = $_GET['from'];
-$bucket = $_GET['bucket'];
-$publisher = $_GET['publisher'];
-$advertiser = $_GET['advertiser'];
-$adunit = $_GET['adunit'];
-
-switch ($bucket) {
-case 'D':
-  $format = 'Ymd';
-  $incr = 60 * 60 * 24;
-  break;
-case 'h':
-  $format = 'YmdH';
-  $incr = 60 * 60;
-  break;
-case 'm':
-  $format = 'YmdHi';
-  $incr = 60;
-  break;
-default:
-  break;
-}
-
-$arr = array();
-if ($publisher != '') {
-  $arr[] = "0:".$publisher;
-} 
-if ($advertiser != '') {
-  $arr[] = "1:".$advertiser;
-} 
-if ($adunit != '') {
-  $arr[] = "2:".$adunit;
-} 
-$subpattern = "";
-if (count($arr) != 0) {
-  $subpattern = join("|", $arr);
-}
-
-$result = array();
-
-while ($from < time()) {
-  $date = gmdate($format, $from);
-  if ($subpattern != '') {
-    $key = $bucket . '|' . $date . '|' . $subpattern;
-  } else {
-    $key = $bucket . '|' . $date ;
-  }
-  $hash = $redis->hGetAll($key);
-  if ($hash) {
-    $cost = $hash['1'];
-    $revenue = $hash['2'];
-    $impressions = $hash['3'];
-    $clicks = $hash['4'];
-    $result[] = array('timestamp'=> $from * 1000, 'cost'=>$cost, 'revenue'=>$revenue, 'clicks'=>$clicks, 'impressions'=>$impressions);
-  }
-  $from += $incr;
-}
-
-array_pop($result);
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/adsdimension/main_banner.png
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/adsdimension/main_banner.png b/contrib/src/main/html/adsdimension/main_banner.png
deleted file mode 100644
index f3f4810..0000000
Binary files a/contrib/src/main/html/adsdimension/main_banner.png and /dev/null differ


[13/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/url_parser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/url_parser.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/url_parser.js
deleted file mode 100644
index 1d32b6a..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/url_parser.js
+++ /dev/null
@@ -1,254 +0,0 @@
-var fs = require('fs'),
-  ReadPreference = require('./read_preference').ReadPreference;
-
-exports.parse = function(url, options) {
-  // Ensure we have a default options object if none set
-  options = options || {};
-  // Variables
-  var connection_part = '';
-  var auth_part = '';
-  var query_string_part = '';
-  var dbName = 'admin';
-
-  // Must start with mongodb
-  if(url.indexOf("mongodb://") != 0)
-    throw Error("URL must be in the format mongodb://user:pass@host:port/dbname");
-  // If we have a ? mark cut the query elements off
-  if(url.indexOf("?") != -1) {
-    query_string_part = url.substr(url.indexOf("?") + 1);
-    connection_part = url.substring("mongodb://".length, url.indexOf("?"))
-  } else {
-    connection_part = url.substring("mongodb://".length);
-  }
-
-  // Check if we have auth params
-  if(connection_part.indexOf("@") != -1) {
-    auth_part = connection_part.split("@")[0];
-    connection_part = connection_part.split("@")[1];
-  }
-
-  // Check if the connection string has a db
-  if(connection_part.indexOf(".sock") != -1) {
-    if(connection_part.indexOf(".sock/") != -1) {
-      dbName = connection_part.split(".sock/")[1];
-      connection_part = connection_part.split("/", connection_part.indexOf(".sock") + ".sock".length);
-    } 
-  } else if(connection_part.indexOf("/") != -1) {
-    dbName = connection_part.split("/")[1];
-    connection_part = connection_part.split("/")[0];
-  }
-
-  // Result object
-  var object = {};
-
-  // Pick apart the authentication part of the string
-  var authPart = auth_part || '';
-  var auth = authPart.split(':', 2);
-  if(options['uri_decode_auth']){
-    auth[0] = decodeURIComponent(auth[0]);
-    if(auth[1]){
-      auth[1] = decodeURIComponent(auth[1]);
-    }
-  }
-
-  // Add auth to final object if we have 2 elements
-  if(auth.length == 2) object.auth = {user: auth[0], password: auth[1]};
-
-  // Variables used for temporary storage
-  var hostPart;
-  var urlOptions;
-  var servers;
-  var serverOptions = {socketOptions: {}};
-  var dbOptions = {read_preference_tags: []};
-  var replSetServersOptions = {socketOptions: {}};
-  // Add server options to final object
-  object.server_options = serverOptions;
-  object.db_options = dbOptions;
-  object.rs_options = replSetServersOptions;
-  object.mongos_options = {};
-
-  // Let's check if we are using a domain socket
-  if(url.match(/\.sock/)) {
-    // Split out the socket part
-    var domainSocket = url.substring(
-        url.indexOf("mongodb://") + "mongodb://".length
-      , url.lastIndexOf(".sock") + ".sock".length);
-    // Clean out any auth stuff if any
-    if(domainSocket.indexOf("@") != -1) domainSocket = domainSocket.split("@")[1];
-    servers = [{domain_socket: domainSocket}];
-  } else {
-    // Split up the db
-    hostPart = connection_part;
-    // Parse all server results
-    servers = hostPart.split(',').map(function(h) {
-      var hostPort = h.split(':', 2);
-      var _host = hostPort[0] || 'localhost';
-      var _port = hostPort[1] != null ? parseInt(hostPort[1], 10) : 27017;
-      // Check for localhost?safe=true style case
-      if(_host.indexOf("?") != -1) _host = _host.split(/\?/)[0];
-
-      // Return the mapped object
-      return {host: _host, port: _port};
-    });
-  }
-
-  // Get the db name
-  object.dbName = dbName || 'admin';
-  // Split up all the options
-  urlOptions = (query_string_part || '').split(/[&;]/);    
-  // Ugh, we have to figure out which options go to which constructor manually.
-  urlOptions.forEach(function(opt) {
-    if(!opt) return;
-    var splitOpt = opt.split('='), name = splitOpt[0], value = splitOpt[1];
-    // Options implementations
-    switch(name) {
-      case 'slaveOk':
-      case 'slave_ok':
-        serverOptions.slave_ok = (value == 'true');
-        dbOptions.slaveOk = (value == 'true');
-        break;
-      case 'maxPoolSize':
-      case 'poolSize':
-        serverOptions.poolSize = parseInt(value, 10);
-        replSetServersOptions.poolSize = parseInt(value, 10);
-        break;
-      case 'autoReconnect':
-      case 'auto_reconnect':
-        serverOptions.auto_reconnect = (value == 'true');
-        break;
-      case 'minPoolSize':
-        throw new Error("minPoolSize not supported");
-      case 'maxIdleTimeMS':
-        throw new Error("maxIdleTimeMS not supported");
-      case 'waitQueueMultiple':
-        throw new Error("waitQueueMultiple not supported");
-      case 'waitQueueTimeoutMS':
-        throw new Error("waitQueueTimeoutMS not supported");
-      case 'uuidRepresentation':
-        throw new Error("uuidRepresentation not supported");
-      case 'ssl':
-        if(value == 'prefer') {
-          serverOptions.ssl = value;
-          replSetServersOptions.ssl = value;
-          break;
-        }
-        serverOptions.ssl = (value == 'true');
-        replSetServersOptions.ssl = (value == 'true');
-        break;
-      case 'replicaSet':
-      case 'rs_name':
-        replSetServersOptions.rs_name = value;
-        break;
-      case 'reconnectWait':
-        replSetServersOptions.reconnectWait = parseInt(value, 10);
-        break;
-      case 'retries':
-        replSetServersOptions.retries = parseInt(value, 10);
-        break;
-      case 'readSecondary':
-      case 'read_secondary':
-        replSetServersOptions.read_secondary = (value == 'true');
-        break;
-      case 'fsync':
-        dbOptions.fsync = (value == 'true');
-        break;
-      case 'journal':
-        dbOptions.journal = (value == 'true');
-        break;
-      case 'safe':
-        dbOptions.safe = (value == 'true');
-        break;
-      case 'nativeParser':
-      case 'native_parser':
-        dbOptions.native_parser = (value == 'true');
-        break;
-      case 'connectTimeoutMS':
-        serverOptions.socketOptions.connectTimeoutMS = parseInt(value, 10);
-        replSetServersOptions.socketOptions.connectTimeoutMS = parseInt(value, 10);
-        break;
-      case 'socketTimeoutMS':
-        serverOptions.socketOptions.socketTimeoutMS = parseInt(value, 10);
-        replSetServersOptions.socketOptions.socketTimeoutMS = parseInt(value, 10);
-        break;
-      case 'w':
-        dbOptions.w = parseInt(value, 10);
-        break;
-      case 'authSource':
-        dbOptions.authSource = value;
-        break;
-      case 'gssapiServiceName':
-        dbOptions.gssapiServiceName = value;
-        break;
-      case 'authMechanism':
-        if(value == 'GSSAPI') {
-          // If no password provided decode only the principal
-          if(object.auth == null) {
-            var urlDecodeAuthPart = decodeURIComponent(authPart);
-            if(urlDecodeAuthPart.indexOf("@") == -1) throw new Error("GSSAPI requires a provided principal");
-            object.auth = {user: urlDecodeAuthPart, password: null};
-          } else {
-            object.auth.user = decodeURIComponent(object.auth.user);
-          }
-        } else if(value == 'MONGODB-X509') {
-          object.auth = {user: decodeURIComponent(authPart)};
-        }
-        
-        // Only support GSSAPI or MONGODB-CR for now
-        if(value != 'GSSAPI' 
-          && value != 'MONGODB-X509'
-          && value != 'MONGODB-CR'
-          && value != 'PLAIN') 
-            throw new Error("only GSSAPI, PLAIN, MONGODB-X509 or MONGODB-CR is supported by authMechanism");
-        
-        // Authentication mechanism
-        dbOptions.authMechanism = value;
-        break;
-      case 'wtimeoutMS':
-        dbOptions.wtimeoutMS = parseInt(value, 10);
-        break;
-      case 'readPreference':
-        if(!ReadPreference.isValid(value)) throw new Error("readPreference must be either primary/primaryPreferred/secondary/secondaryPreferred/nearest");
-        dbOptions.read_preference = value;
-        break;
-      case 'readPreferenceTags':
-        // Contains the tag object
-        var tagObject = {};
-        if(value == null || value == '') {
-          dbOptions.read_preference_tags.push(tagObject);
-          break;
-        }
-
-        // Split up the tags
-        var tags = value.split(/\,/);
-        for(var i = 0; i < tags.length; i++) {
-          var parts = tags[i].trim().split(/\:/);
-          tagObject[parts[0]] = parts[1];
-        }
-
-        // Set the preferences tags
-        dbOptions.read_preference_tags.push(tagObject);
-        break;
-      default:
-        break;
-    }
-  });
-
-  // No tags: should be null (not [])
-  if(dbOptions.read_preference_tags.length === 0) {
-    dbOptions.read_preference_tags = null;
-  }
-
-  // Validate if there are an invalid write concern combinations
-  if((dbOptions.w == -1 || dbOptions.w == 0) && (
-      dbOptions.journal == true
-      || dbOptions.fsync == true
-      || dbOptions.safe == true)) throw new Error("w set to -1 or 0 cannot be combined with safe/w/journal/fsync")
-
-  // If no read preference set it to primary
-  if(!dbOptions.read_preference) dbOptions.read_preference = 'primary';
-
-  // Add servers to result
-  object.servers = servers;
-  // Returned parsed object
-  return object;
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/cursor.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/cursor.js b/web/demos/package/node_modules/mongodb/lib/mongodb/cursor.js
deleted file mode 100644
index d54754e..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/cursor.js
+++ /dev/null
@@ -1,1008 +0,0 @@
-var QueryCommand = require('./commands/query_command').QueryCommand,
-  GetMoreCommand = require('./commands/get_more_command').GetMoreCommand,
-  KillCursorCommand = require('./commands/kill_cursor_command').KillCursorCommand,
-  Long = require('bson').Long,
-  ReadPreference = require('./connection/read_preference').ReadPreference,
-  CursorStream = require('./cursorstream'),
-  timers = require('timers'),
-  utils = require('./utils');
-
-// Set processor, setImmediate if 0.10 otherwise nextTick
-var processor = require('./utils').processor();
-
-/**
- * Constructor for a cursor object that handles all the operations on query result
- * using find. This cursor object is unidirectional and cannot traverse backwards. Clients should not be creating a cursor directly,
- * but use find to acquire a cursor. (INTERNAL TYPE)
- *
- * Options
- *  - **skip** {Number} skip number of documents to skip.
- *  - **limit** {Number}, limit the number of results to return. -1 has a special meaning and is used by Db.eval. A value of 1 will also be treated as if it were -1.
- *  - **sort** {Array | Object}, set to sort the documents coming back from the query. Array of indexes, [['a', 1]] etc.
- *  - **hint**  {Object}, hint force the query to use a specific index.
- *  - **explain** {Boolean}, explain return the explaination of the query.
- *  - **snapshot** {Boolean}, snapshot Snapshot mode assures no duplicates are returned.
- *  - **timeout** {Boolean}, timeout allow the query to timeout.
- *  - **tailable** {Boolean}, tailable allow the cursor to be tailable.
- *  - **awaitdata** {Boolean}, awaitdata allow the cursor to wait for data, only applicable for tailable cursor.
- *  - **oplogReplay** {Boolean}, sets an internal flag, only applicable for tailable cursor.
- *  - **batchSize** {Number}, batchSize the number of the subset of results to request the database to return for every request. This should initially be greater than 1 otherwise the database will automatically close the cursor. The batch size can be set to 1 with cursorInstance.batchSize after performing the initial query to the database.
- *  - **raw** {Boolean}, raw return all query documents as raw buffers (default false).
- *  - **read** {Boolean}, read specify override of read from source (primary/secondary).
- *  - **returnKey** {Boolean}, returnKey only return the index key.
- *  - **maxScan** {Number}, maxScan limit the number of items to scan.
- *  - **min** {Number}, min set index bounds.
- *  - **max** {Number}, max set index bounds.
- *  - **maxTimeMS** {Number}, number of miliseconds to wait before aborting the query.
- *  - **showDiskLoc** {Boolean}, showDiskLoc show disk location of results.
- *  - **comment** {String}, comment you can put a $comment field on a query to make looking in the profiler logs simpler.
- *  - **numberOfRetries** {Number}, numberOfRetries if using awaidata specifies the number of times to retry on timeout.
- *  - **dbName** {String}, dbName override the default dbName.
- *  - **tailableRetryInterval** {Number}, tailableRetryInterval specify the miliseconds between getMores on tailable cursor.
- *  - **exhaust** {Boolean}, exhaust have the server send all the documents at once as getMore packets.
- *  - **partial** {Boolean}, partial have the sharded system return a partial result from mongos.
- *
- * @class Represents a Cursor.
- * @param {Db} db the database object to work with.
- * @param {Collection} collection the collection to query.
- * @param {Object} selector the query selector.
- * @param {Object} fields an object containing what fields to include or exclude from objects returned.
- * @param {Object} [options] additional options for the collection.
-*/
-function Cursor(db, collection, selector, fields, options) {
-  this.db = db;
-  this.collection = collection;
-  this.selector = selector;
-  this.fields = fields;
-  options = !options ? {} : options;
-
-  this.skipValue = options.skip == null ? 0 : options.skip;
-  this.limitValue = options.limit == null ? 0 : options.limit;
-  this.sortValue = options.sort;
-  this.hint = options.hint;
-  this.explainValue = options.explain;
-  this.snapshot = options.snapshot;
-  this.timeout = options.timeout == null ? true : options.timeout;
-  this.tailable = options.tailable;
-  this.awaitdata = options.awaitdata;
-  this.oplogReplay = options.oplogReplay;
-  this.numberOfRetries = options.numberOfRetries == null ? 5 : options.numberOfRetries;
-  this.currentNumberOfRetries = this.numberOfRetries;
-  this.batchSizeValue = options.batchSize == null ? 0 : options.batchSize;
-  this.raw = options.raw == null ? false : options.raw;
-  this.read = options.read == null ? ReadPreference.PRIMARY : options.read;
-  this.returnKey = options.returnKey;
-  this.maxScan = options.maxScan;
-  this.min = options.min;
-  this.max = options.max;
-  this.showDiskLoc = options.showDiskLoc;
-  this.comment = options.comment;
-  this.tailableRetryInterval = options.tailableRetryInterval || 100;
-  this.exhaust = options.exhaust || false;
-  this.partial = options.partial || false;
-  this.slaveOk = options.slaveOk || false;
-  this.maxTimeMSValue = options.maxTimeMS;
-
-  this.totalNumberOfRecords = 0;
-  this.items = [];
-  this.cursorId = Long.fromInt(0);
-
-  // This name
-  this.dbName = options.dbName;
-
-  // State variables for the cursor
-  this.state = Cursor.INIT;
-  // Keep track of the current query run
-  this.queryRun = false;
-  this.getMoreTimer = false;
-
-  // If we are using a specific db execute against it
-  if(this.dbName != null) {
-    this.collectionName = this.dbName + "." + this.collection.collectionName;
-  } else {
-    this.collectionName = (this.db.databaseName ? this.db.databaseName + "." : '') + this.collection.collectionName;
-  }
-};
-
-/**
- * Resets this cursor to its initial state. All settings like the query string,
- * tailable, batchSizeValue, skipValue and limits are preserved.
- *
- * @return {Cursor} returns itself with rewind applied.
- * @api public
- */
-Cursor.prototype.rewind = function() {
-  var self = this;
-
-  if (self.state != Cursor.INIT) {
-    if (self.state != Cursor.CLOSED) {
-      self.close(function() {});
-    }
-
-    self.numberOfReturned = 0;
-    self.totalNumberOfRecords = 0;
-    self.items = [];
-    self.cursorId = Long.fromInt(0);
-    self.state = Cursor.INIT;
-    self.queryRun = false;
-  }
-
-  return self;
-};
-
-
-/**
- * Returns an array of documents. The caller is responsible for making sure that there
- * is enough memory to store the results. Note that the array only contain partial
- * results when this cursor had been previouly accessed. In that case,
- * cursor.rewind() can be used to reset the cursor.
- *
- * @param {Function} callback This will be called after executing this method successfully. The first parameter will contain the Error object if an error occured, or null otherwise. The second parameter will contain an array of BSON deserialized objects as a result of the query.
- * @return {null}
- * @api public
- */
-Cursor.prototype.toArray = function(callback) {
-  var self = this;
-
-  if(!callback) {
-    throw new Error('callback is mandatory');
-  }
-
-  if(this.tailable) {
-    callback(new Error("Tailable cursor cannot be converted to array"), null);
-  } else if(this.state != Cursor.CLOSED) {
-    // return toArrayExhaust(self, callback);
-    // If we are using exhaust we can't use the quick fire method
-    if(self.exhaust) return toArrayExhaust(self, callback);
-    // Quick fire using trampoline to avoid nextTick
-    self.nextObject({noReturn: true}, function(err, result) {
-      if(err) return callback(utils.toError(err), null);
-      if(self.cursorId.toString() == "0") {
-        self.state = Cursor.CLOSED;
-        return callback(null, self.items);
-      }
-
-      // Let's issue getMores until we have no more records waiting
-      getAllByGetMore(self, function(err, done) {
-        self.state = Cursor.CLOSED;
-        if(err) return callback(utils.toError(err), null);
-        // Let's release the internal list
-        var items = self.items;        
-        self.items = null;
-        // Return all the items
-        callback(null, items);
-      });
-    })
-
-  } else {
-    callback(new Error("Cursor is closed"), null);
-  }
-}
-
-var toArrayExhaust = function(self, callback) {
-  var items = [];
-
-  self.each(function(err, item) {
-    if(err != null) {
-      return callback(utils.toError(err), null);
-    }
-
-    if(item != null && Array.isArray(items)) {
-      items.push(item);
-    } else {
-      var resultItems = items;
-      items = null;
-      self.items = [];
-      callback(null, resultItems);
-    }
-  });
-}
-
-var getAllByGetMore = function(self, callback) {
-  getMore(self, {noReturn: true}, function(err, result) {
-    if(err) return callback(utils.toError(err));
-    if(result == null) return callback(null, null);
-    if(self.cursorId.toString() == "0") return callback(null, null);
-    getAllByGetMore(self, callback);
-  })
-};
-
-/**
- * Iterates over all the documents for this cursor. As with **{cursor.toArray}**,
- * not all of the elements will be iterated if this cursor had been previouly accessed.
- * In that case, **{cursor.rewind}** can be used to reset the cursor. However, unlike
- * **{cursor.toArray}**, the cursor will only hold a maximum of batch size elements
- * at any given time if batch size is specified. Otherwise, the caller is responsible
- * for making sure that the entire result can fit the memory.
- *
- * @param {Function} callback this will be called for while iterating every document of the query result. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the document.
- * @return {null}
- * @api public
- */
-Cursor.prototype.each = function(callback) {
-  var self = this;
-  var fn;
-
-  if (!callback) {
-    throw new Error('callback is mandatory');
-  }
-
-  if(this.state != Cursor.CLOSED) {
-    // If we are using exhaust we can't use the quick fire method
-    if(self.exhaust) return eachExhaust(self, callback);
-    // Quick fire using trampoline to avoid nextTick
-    if(this.items.length > 0) {
-      // Trampoline all the entries
-      while(fn = loop(self, callback)) fn(self, callback);
-      // Call each again
-      self.each(callback);
-    } else {
-      self.nextObject(function(err, item) {
-
-        if(err) {
-          self.state = Cursor.CLOSED;
-          return callback(utils.toError(err), item);
-        }
-
-        if(item == null) return callback(null, null);
-        callback(null, item);
-        self.each(callback);
-      })
-    }
-  } else {
-    callback(new Error("Cursor is closed"), null);
-  }
-};
-
-// Special for exhaust command as we don't initiate the actual result sets
-// the server just sends them as they arrive meaning we need to get the IO event
-// loop happen so we can receive more data from the socket or we return to early
-// after the first fetch and loose all the incoming getMore's automatically issued
-// from the server.
-var eachExhaust = function(self, callback) {
-  //FIX: stack overflow (on deep callback) (cred: https://github.com/limp/node-mongodb-native/commit/27da7e4b2af02035847f262b29837a94bbbf6ce2)
-  processor(function(){
-    // Fetch the next object until there is no more objects
-    self.nextObject(function(err, item) {
-      if(err != null) return callback(err, null);
-      if(item != null) {
-        callback(null, item);
-        eachExhaust(self, callback);
-      } else {
-        // Close the cursor if done
-        self.state = Cursor.CLOSED;
-        callback(err, null);
-      }
-    });
-  });  
-}
-
-// Trampoline emptying the number of retrieved items
-// without incurring a nextTick operation
-var loop = function(self, callback) {
-  // No more items we are done
-  if(self.items.length == 0) return;
-  // Get the next document
-  var doc = self.items.shift();
-  // Callback
-  callback(null, doc);
-  // Loop
-  return loop;
-}
-
-/**
- * Determines how many result the query for this cursor will return
- *
- * @param {Boolean} applySkipLimit if set to true will apply the skip and limits set on the cursor. Defaults to false.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the number of results or null if an error occured.
- * @return {null}
- * @api public
- */
-Cursor.prototype.count = function(applySkipLimit, callback) {
-  if(typeof applySkipLimit == 'function') {
-    callback = applySkipLimit;
-    applySkipLimit = false;
-  }
-
-  var options = {};
-  if(applySkipLimit) {
-    if(typeof this.skipValue == 'number') options.skip = this.skipValue;
-    if(typeof this.limitValue == 'number') options.limit = this.limitValue;    
-  }
-
-  // If maxTimeMS set
-  if(typeof this.maxTimeMSValue == 'number') options.maxTimeMS = this.maxTimeMSValue;
-
-  // Call count command
-  this.collection.count(this.selector, options, callback);
-};
-
-/**
- * Sets the sort parameter of this cursor to the given value.
- *
- * This method has the following method signatures:
- * (keyOrList, callback)
- * (keyOrList, direction, callback)
- *
- * @param {String|Array|Object} keyOrList This can be a string or an array. If passed as a string, the string will be the field to sort. If passed an array, each element will represent a field to be sorted and should be an array that contains the format [string, direction].
- * @param {String|Number} direction this determines how the results are sorted. "asc", "ascending" or 1 for asceding order while "desc", "desceding or -1 for descending order. Note that the strings are case insensitive.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain an error object when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution.
- * @return {Cursor} an instance of this object.
- * @api public
- */
-Cursor.prototype.sort = function(keyOrList, direction, callback) {
-  callback = callback || function(){};
-  if(typeof direction === "function") { callback = direction; direction = null; }
-
-  if(this.tailable) {
-    callback(new Error("Tailable cursor doesn't support sorting"), null);
-  } else if(this.queryRun == true || this.state == Cursor.CLOSED) {
-    callback(new Error("Cursor is closed"), null);
-  } else {
-    var order = keyOrList;
-
-    if(direction != null) {
-      order = [[keyOrList, direction]];
-    }
-
-    this.sortValue = order;
-    callback(null, this);
-  }
-  return this;
-};
-
-/**
- * Sets the limit parameter of this cursor to the given value.
- *
- * @param {Number} limit the new limit.
- * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the limit given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution.
- * @return {Cursor} an instance of this object.
- * @api public
- */
-Cursor.prototype.limit = function(limit, callback) {
-  if(this.tailable) {
-    if(callback) {
-      callback(new Error("Tailable cursor doesn't support limit"), null);
-    } else {
-      throw new Error("Tailable cursor doesn't support limit");
-    }
-  } else if(this.queryRun == true || this.state == Cursor.CLOSED) {
-    if(callback) {
-      callback(new Error("Cursor is closed"), null);
-    } else {
-      throw new Error("Cursor is closed");
-    }
-  } else {
-    if(limit != null && limit.constructor != Number) {
-      if(callback) {
-        callback(new Error("limit requires an integer"), null);
-      } else {
-        throw new Error("limit requires an integer");
-      }
-    } else {
-      this.limitValue = limit;
-      if(callback) return callback(null, this);
-    }
-  }
-
-  return this;
-};
-
-/**
- * Specifies a time limit for a query operation. After the specified
- * time is exceeded, the operation will be aborted and an error will be
- * returned to the client. If maxTimeMS is null, no limit is applied.
- *
- * @param {Number} maxTimeMS the maxTimeMS for the query.
- * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the limit given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution.
- * @return {Cursor} an instance of this object.
- * @api public
- */
-Cursor.prototype.maxTimeMS = function(maxTimeMS, callback) {
-  if(typeof maxTimeMS != 'number') {
-    throw new Error("maxTimeMS must be a number");
-  }
-  
-  // Save the maxTimeMS option
-  this.maxTimeMSValue = maxTimeMS;
-  // Return the cursor for chaining
-  return this;
-};
-
-/**
- * Sets the read preference for the cursor
- *
- * @param {String} the read preference for the cursor, one of Server.READ_PRIMARY, Server.READ_SECONDARY, Server.READ_SECONDARY_ONLY
- * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the read preference given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution.
- * @return {Cursor} an instance of this object.
- * @api public
- */
-Cursor.prototype.setReadPreference = function(readPreference, tags, callback) {
-  if(typeof tags == 'function') callback = tags;
-
-  var _mode = readPreference != null && typeof readPreference == 'object' ? readPreference.mode : readPreference;
-
-  if(this.queryRun == true || this.state == Cursor.CLOSED) {
-    if(callback == null) throw new Error("Cannot change read preference on executed query or closed cursor");
-    callback(new Error("Cannot change read preference on executed query or closed cursor"));
-  } else if(_mode != null && _mode != 'primary'
-    && _mode != 'secondaryOnly' && _mode != 'secondary' 
-    && _mode != 'nearest' && _mode != 'primaryPreferred' && _mode != 'secondaryPreferred') {
-      if(callback == null) throw new Error("only readPreference of primary, secondary, secondaryPreferred, primaryPreferred or nearest supported");
-      callback(new Error("only readPreference of primary, secondary, secondaryPreferred, primaryPreferred or nearest supported"));
-  } else {
-    this.read = readPreference;
-    if(callback != null) callback(null, this);
-  }
-
-  return this;
-}
-
-/**
- * Sets the skip parameter of this cursor to the given value.
- *
- * @param {Number} skip the new skip value.
- * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the skip value given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution.
- * @return {Cursor} an instance of this object.
- * @api public
- */
-Cursor.prototype.skip = function(skip, callback) {
-  callback = callback || function(){};
-
-  if(this.tailable) {
-    callback(new Error("Tailable cursor doesn't support skip"), null);
-  } else if(this.queryRun == true || this.state == Cursor.CLOSED) {
-    callback(new Error("Cursor is closed"), null);
-  } else {
-    if(skip != null && skip.constructor != Number) {
-      callback(new Error("skip requires an integer"), null);
-    } else {
-      this.skipValue = skip;
-      callback(null, this);
-    }
-  }
-
-  return this;
-};
-
-/**
- * Sets the batch size parameter of this cursor to the given value.
- *
- * @param {Number} batchSize the new batch size.
- * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the batchSize given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution.
- * @return {Cursor} an instance of this object.
- * @api public
- */
-Cursor.prototype.batchSize = function(batchSize, callback) {
-  if(this.state == Cursor.CLOSED) {
-    if(callback != null) {
-      return callback(new Error("Cursor is closed"), null);
-    } else {
-      throw new Error("Cursor is closed");
-    }
-  } else if(batchSize != null && batchSize.constructor != Number) {
-    if(callback != null) {
-      return callback(new Error("batchSize requires an integer"), null);
-    } else {
-      throw new Error("batchSize requires an integer");
-    }
-  } else {
-    this.batchSizeValue = batchSize;
-    if(callback != null) return callback(null, this);
-  }
-
-  return this;
-};
-
-/**
- * The limit used for the getMore command
- *
- * @return {Number} The number of records to request per batch.
- * @ignore
- * @api private
- */
-var limitRequest = function(self) {
-  var requestedLimit = self.limitValue;
-  var absLimitValue = Math.abs(self.limitValue);
-  var absBatchValue = Math.abs(self.batchSizeValue);
-
-  if(absLimitValue > 0) {
-    if (absBatchValue > 0) {
-      requestedLimit = Math.min(absLimitValue, absBatchValue);
-    }
-  } else {
-    requestedLimit = self.batchSizeValue;
-  }
-
-  return requestedLimit;
-};
-
-
-/**
- * Generates a QueryCommand object using the parameters of this cursor.
- *
- * @return {QueryCommand} The command object
- * @ignore
- * @api private
- */
-var generateQueryCommand = function(self) {
-  // Unpack the options
-  var queryOptions = QueryCommand.OPTS_NONE;
-  if(!self.timeout) {
-    queryOptions |= QueryCommand.OPTS_NO_CURSOR_TIMEOUT;
-  }
-
-  if(self.tailable != null) {
-    queryOptions |= QueryCommand.OPTS_TAILABLE_CURSOR;
-    self.skipValue = self.limitValue = 0;
-
-    // if awaitdata is set
-    if(self.awaitdata != null) {
-      queryOptions |= QueryCommand.OPTS_AWAIT_DATA;
-    }
-
-    // This sets an internal undocumented flag. Clients should not depend on its
-    // behavior!
-    if(self.oplogReplay != null) {
-      queryOptions |= QueryCommand.OPTS_OPLOG_REPLAY;
-    }
-  }
-
-  if(self.exhaust) {
-    queryOptions |= QueryCommand.OPTS_EXHAUST;
-  }
-
-  // Unpack the read preference to set slave ok correctly
-  var read = self.read instanceof ReadPreference ? self.read.mode : self.read;
-
-  // if(self.read == 'secondary')
-  if(read == ReadPreference.PRIMARY_PREFERRED
-    || read == ReadPreference.SECONDARY
-    || read == ReadPreference.SECONDARY_PREFERRED
-    || read == ReadPreference.NEAREST) {
-      queryOptions |= QueryCommand.OPTS_SLAVE;
-  }
-
-  // Override slaveOk from the user
-  if(self.slaveOk) {
-    queryOptions |= QueryCommand.OPTS_SLAVE;
-  }
-
-  if(self.partial) {
-    queryOptions |= QueryCommand.OPTS_PARTIAL;
-  }
-
-  // limitValue of -1 is a special case used by Db#eval
-  var numberToReturn = self.limitValue == -1 ? -1 : limitRequest(self);
-
-  // Check if we need a special selector
-  if(self.sortValue != null || self.explainValue != null || self.hint != null || self.snapshot != null
-      || self.returnKey != null || self.maxScan != null || self.min != null || self.max != null
-      || self.showDiskLoc != null || self.comment != null || typeof self.maxTimeMSValue == 'number') {
-
-    // Build special selector
-    var specialSelector = {'$query':self.selector};
-    if(self.sortValue != null) specialSelector['orderby'] = utils.formattedOrderClause(self.sortValue);
-    if(self.hint != null && self.hint.constructor == Object) specialSelector['$hint'] = self.hint;
-    if(self.snapshot != null) specialSelector['$snapshot'] = true;
-    if(self.returnKey != null) specialSelector['$returnKey'] = self.returnKey;
-    if(self.maxScan != null) specialSelector['$maxScan'] = self.maxScan;
-    if(self.min != null) specialSelector['$min'] = self.min;
-    if(self.max != null) specialSelector['$max'] = self.max;
-    if(self.showDiskLoc != null) specialSelector['$showDiskLoc'] = self.showDiskLoc;
-    if(self.comment != null) specialSelector['$comment'] = self.comment;
-    
-    // If we are querying the $cmd collection we need to add maxTimeMS as a field
-    // otherwise for a normal query it's a "special selector" $maxTimeMS
-    if(typeof self.maxTimeMSValue == 'number' 
-      && self.collectionName.indexOf('.$cmd') != -1) {
-      specialSelector['maxTimeMS'] = self.maxTimeMSValue;
-    } else if(typeof self.maxTimeMSValue == 'number' 
-      && self.collectionName.indexOf('.$cmd') == -1) {
-      specialSelector['$maxTimeMS'] = self.maxTimeMSValue;
-    }
-    
-    // If we have explain set only return a single document with automatic cursor close
-    if(self.explainValue != null) {
-      numberToReturn = (-1)*Math.abs(numberToReturn);
-      specialSelector['$explain'] = true;
-    }
-
-    // Return the query
-    return new QueryCommand(self.db, self.collectionName, queryOptions, self.skipValue, numberToReturn, specialSelector, self.fields);
-  } else {
-    return new QueryCommand(self.db, self.collectionName, queryOptions, self.skipValue, numberToReturn, self.selector, self.fields);
-  }
-};
-
-/**
- * @return {Object} Returns an object containing the sort value of this cursor with
- *     the proper formatting that can be used internally in this cursor.
- * @ignore
- * @api private
- */
-Cursor.prototype.formattedOrderClause = function() {
-  return utils.formattedOrderClause(this.sortValue);
-};
-
-/**
- * Converts the value of the sort direction into its equivalent numerical value.
- *
- * @param sortDirection {String|number} Range of acceptable values:
- *     'ascending', 'descending', 'asc', 'desc', 1, -1
- *
- * @return {number} The equivalent numerical value
- * @throws Error if the given sortDirection is invalid
- * @ignore
- * @api private
- */
-Cursor.prototype.formatSortValue = function(sortDirection) {
-  return utils.formatSortValue(sortDirection);
-};
-
-/**
- * Gets the next document from the cursor.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain an error object on error while the second parameter will contain a document from the returned result or null if there are no more results.
- * @api public
- */
-Cursor.prototype.nextObject = function(options, callback) {
-  var self = this;
-
-  if(typeof options == 'function') {
-    callback = options;
-    options = {};
-  }
-
-  if(self.state == Cursor.INIT) {
-    var cmd;
-    try {
-      cmd = generateQueryCommand(self);
-    } catch (err) {
-      return callback(err, null);
-    }
-
-    // No need to check the keys
-    var queryOptions = {exhaust: self.exhaust
-      , raw:self.raw
-      , read:self.read
-      , connection:self.connection
-      , checkKeys: false};
-      
-    // Execute command
-    var commandHandler = function(err, result) {
-      // If on reconnect, the command got given a different connection, switch
-      // the whole cursor to it.
-      self.connection = queryOptions.connection;
-      self.state = Cursor.OPEN;
-      if(err != null && result == null) return callback(utils.toError(err), null);
-
-      if(err == null && (result == null || result.documents == null || !Array.isArray(result.documents))) {
-        return self.close(function() {callback(new Error("command failed to return results"), null);});
-      }
-
-      if(err == null && result && result.documents[0] && result.documents[0]['$err']) {
-        return self.close(function() {callback(utils.toError(result.documents[0]['$err']), null);});
-      }
-
-      if(err == null && result && result.documents[0] && result.documents[0]['errmsg']) {
-        return self.close(function() {callback(utils.toError(result.documents[0]), null);});        
-      }
-
-      self.queryRun = true;
-      self.state = Cursor.OPEN; // Adjust the state of the cursor
-      self.cursorId = result.cursorId;
-      self.totalNumberOfRecords = result.numberReturned;
-
-      // Add the new documents to the list of items, using forloop to avoid
-      // new array allocations and copying
-      for(var i = 0; i < result.documents.length; i++) {
-        self.items.push(result.documents[i]);
-      }
-
-      // If we have noReturn set just return (not modifying the internal item list)
-      // used for toArray
-      if(options.noReturn) {
-        return callback(null, true);
-      }
-
-      // Ignore callbacks until the cursor is dead for exhausted
-      if(self.exhaust && result.cursorId.toString() == "0") {
-        self.nextObject(callback);
-      } else if(self.exhaust == false || self.exhaust == null) {
-        self.nextObject(callback);
-      }
-    };
-
-    // If we have no connection set on this cursor check one out
-    if(self.connection == null) {
-      try {
-        self.connection = self.db.serverConfig.checkoutReader(this.read);
-        // Add to the query options
-        queryOptions.connection = self.connection;
-      } catch(err) {
-        return callback(utils.toError(err), null);
-      }
-    }
-
-    // Execute the command
-    self.db._executeQueryCommand(cmd, queryOptions, commandHandler);
-    // Set the command handler to null
-    commandHandler = null;
-  } else if(self.items.length) {
-    callback(null, self.items.shift());
-  } else if(self.cursorId.greaterThan(Long.fromInt(0))) {
-    getMore(self, callback);
-  } else {
-    // Force cursor to stay open
-    return self.close(function() {callback(null, null);});
-  }
-}
-
-/**
- * Gets more results from the database if any.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain an error object on error while the second parameter will contain a document from the returned result or null if there are no more results.
- * @ignore
- * @api private
- */
-var getMore = function(self, options, callback) {
-  var limit = 0;
-
-  if(typeof options == 'function') {
-    callback = options;
-    options = {};
-  }
-
-  if(self.state == Cursor.GET_MORE) return callback(null, null);
-
-  // Set get more in progress
-  self.state = Cursor.GET_MORE;
-
-  // Set options
-  if (!self.tailable && self.limitValue > 0) {
-    limit = self.limitValue - self.totalNumberOfRecords;
-    if (limit < 1) {
-      self.close(function() {callback(null, null);});
-      return;
-    }
-  }
-
-  try {
-    var getMoreCommand = new GetMoreCommand(
-        self.db
-      , self.collectionName
-      , limitRequest(self)
-      , self.cursorId
-    );
-
-    // Set up options
-    var command_options = {read: self.read, raw: self.raw, connection:self.connection };
-
-    // Execute the command
-    self.db._executeQueryCommand(getMoreCommand, command_options, function(err, result) {
-      var cbValue;
-
-      // Get more done
-      self.state = Cursor.OPEN;
-
-      if(err != null) {
-        self.state = Cursor.CLOSED;
-        return callback(utils.toError(err), null);
-      }
-
-      // Ensure we get a valid result
-      if(!result || !result.documents) {
-        self.state = Cursor.CLOSED;
-        return callback(utils.toError("command failed to return results"), null)
-      }
-
-      // If the QueryFailure flag is set
-      if((result.responseFlag & (1 << 1)) != 0) {
-        self.state = Cursor.CLOSED;
-        return callback(utils.toError("QueryFailure flag set on getmore command"), null);
-      }
-
-      try {
-        var isDead = 1 === result.responseFlag && result.cursorId.isZero();
-
-        self.cursorId = result.cursorId;
-        self.totalNumberOfRecords += result.numberReturned;
-
-        // Determine if there's more documents to fetch
-        if(result.numberReturned > 0) {
-          if (self.limitValue > 0) {
-            var excessResult = self.totalNumberOfRecords - self.limitValue;
-
-            if (excessResult > 0) {
-              result.documents.splice(-1 * excessResult, excessResult);
-            }
-          }
-
-          // Reset the tries for awaitdata if we are using it
-          self.currentNumberOfRetries = self.numberOfRetries;
-          // Get the documents
-          for(var i = 0; i < result.documents.length; i++) {
-            self.items.push(result.documents[i]);
-          }
-
-          // Don's shift a document out as we need it for toArray
-          if(options.noReturn) {
-            cbValue = true;
-          } else {
-            cbValue = self.items.shift();
-          }          
-        } else if(self.tailable && !isDead && self.awaitdata) {
-          // Excute the tailable cursor once more, will timeout after ~4 sec if awaitdata used
-          self.currentNumberOfRetries = self.currentNumberOfRetries - 1;
-          if(self.currentNumberOfRetries == 0) {
-            self.close(function() {
-              callback(new Error("tailable cursor timed out"), null);
-            });
-          } else {
-            getMore(self, callback);
-          }
-        } else if(self.tailable && !isDead) {
-          self.getMoreTimer = setTimeout(function() { getMore(self, callback); }, self.tailableRetryInterval);
-        } else {
-          self.close(function() {callback(null, null); });
-        }
-
-        result = null;
-      } catch(err) {
-        callback(utils.toError(err), null);
-      }
-      if (cbValue != null) callback(null, cbValue);
-    });
-
-    getMoreCommand = null;
-  } catch(err) {
-    // Get more done
-    self.state = Cursor.OPEN;
-
-    var handleClose = function() {
-      callback(utils.toError(err), null);
-    };
-
-    self.close(handleClose);
-    handleClose = null;
-  }
-}
-
-/**
- * Gets a detailed information about how the query is performed on this cursor and how
- * long it took the database to process it.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will always be null while the second parameter will be an object containing the details.
- * @api public
- */
-Cursor.prototype.explain = function(callback) {
-  var limit = (-1)*Math.abs(this.limitValue);
-
-  // Create a new cursor and fetch the plan
-  var cursor = new Cursor(this.db, this.collection, this.selector, this.fields, {
-      skip: this.skipValue
-    , limit:limit
-    , sort: this.sortValue
-    , hint: this.hint
-    , explain: true
-    , snapshot: this.snapshot
-    , timeout: this.timeout
-    , tailable: this.tailable
-    , batchSize: this.batchSizeValue
-    , slaveOk: this.slaveOk
-    , raw: this.raw
-    , read: this.read
-    , returnKey: this.returnKey
-    , maxScan: this.maxScan
-    , min: this.min
-    , max: this.max
-    , showDiskLoc: this.showDiskLoc
-    , comment: this.comment
-    , awaitdata: this.awaitdata
-    , oplogReplay: this.oplogReplay
-    , numberOfRetries: this.numberOfRetries
-    , dbName: this.dbName
-  });
-  
-  // Fetch the explaination document
-  cursor.nextObject(function(err, item) {
-    if(err != null) return callback(utils.toError(err), null);
-    // close the cursor
-    cursor.close(function(err, result) {
-      if(err != null) return callback(utils.toError(err), null);
-      callback(null, item);
-    });
-  });
-};
-
-/**
- * Returns a Node ReadStream interface for this cursor.
- *
- * Options
- *  - **transform** {Function} function of type function(object) { return transformed }, allows for transformation of data before emitting.
- *
- * @return {CursorStream} returns a stream object.
- * @api public
- */
-Cursor.prototype.stream = function stream(options) {
-  return new CursorStream(this, options);
-}
-
-/**
- * Close the cursor.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will always contain null while the second parameter will contain a reference to this cursor.
- * @return {null}
- * @api public
- */
-Cursor.prototype.close = function(callback) {
-  var self = this
-  this.getMoreTimer && clearTimeout(this.getMoreTimer);
-  // Close the cursor if not needed
-  if(this.cursorId instanceof Long && this.cursorId.greaterThan(Long.fromInt(0))) {
-    try {
-      var command = new KillCursorCommand(this.db, [this.cursorId]);
-      // Added an empty callback to ensure we don't throw any null exceptions
-      this.db._executeQueryCommand(command, {read:self.read, raw:self.raw, connection:self.connection});
-    } catch(err) {}
-  }
-
-  // Null out the connection
-  self.connection = null;
-  // Reset cursor id
-  this.cursorId = Long.fromInt(0);
-  // Set to closed status
-  this.state = Cursor.CLOSED;
-
-  if(callback) {
-    callback(null, self);
-    self.items = [];
-  }
-
-  return this;
-};
-
-/**
- * Check if the cursor is closed or open.
- *
- * @return {Boolean} returns the state of the cursor.
- * @api public
- */
-Cursor.prototype.isClosed = function() {
-  return this.state == Cursor.CLOSED ? true : false;
-};
-
-/**
- * Init state
- *
- * @classconstant INIT
- **/
-Cursor.INIT = 0;
-
-/**
- * Cursor open
- *
- * @classconstant OPEN
- **/
-Cursor.OPEN = 1;
-
-/**
- * Cursor closed
- *
- * @classconstant CLOSED
- **/
-Cursor.CLOSED = 2;
-
-/**
- * Cursor performing a get more
- *
- * @classconstant OPEN
- **/
-Cursor.GET_MORE = 3;
-
-/**
- * @ignore
- * @api private
- */
-exports.Cursor =  Cursor;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/cursorstream.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/cursorstream.js b/web/demos/package/node_modules/mongodb/lib/mongodb/cursorstream.js
deleted file mode 100644
index 90b425b..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/cursorstream.js
+++ /dev/null
@@ -1,164 +0,0 @@
-var timers = require('timers');
-
-// Set processor, setImmediate if 0.10 otherwise nextTick
-var processor = require('./utils').processor();
-
-/**
- * Module dependecies.
- */
-var Stream = require('stream').Stream;
-
-/**
- * CursorStream
- *
- * Returns a stream interface for the **cursor**.
- *
- * Options
- *  - **transform** {Function} function of type function(object) { return transformed }, allows for transformation of data before emitting.
- *
- * Events
- *  - **data** {function(item) {}} the data event triggers when a document is ready.
- *  - **error** {function(err) {}} the error event triggers if an error happens.
- *  - **close** {function() {}} the end event triggers when there is no more documents available.
- *
- * @class Represents a CursorStream.
- * @param {Cursor} cursor a cursor object that the stream wraps.
- * @return {Stream}
- */
-function CursorStream(cursor, options) {
-  if(!(this instanceof CursorStream)) return new CursorStream(cursor);
-  options = options ? options : {};
-
-  Stream.call(this);
-
-  this.readable = true;
-  this.paused = false;
-  this._cursor = cursor;
-  this._destroyed = null;
-  this.options = options;
-
-  // give time to hook up events
-  var self = this;
-  process.nextTick(function() {
-    self._init();      
-  });
-}
-
-/**
- * Inherit from Stream
- * @ignore
- * @api private
- */
-CursorStream.prototype.__proto__ = Stream.prototype;
-
-/**
- * Flag stating whether or not this stream is readable.
- */
-CursorStream.prototype.readable;
-
-/**
- * Flag stating whether or not this stream is paused.
- */
-CursorStream.prototype.paused;
-
-/**
- * Initialize the cursor.
- * @ignore
- * @api private
- */
-CursorStream.prototype._init = function () {
-  if (this._destroyed) return;
-  this._next();
-}
-
-/**
- * Pull the next document from the cursor.
- * @ignore
- * @api private
- */
-CursorStream.prototype._next = function () {
-  if(this.paused || this._destroyed) return;
-
-  var self = this;
-  // Get the next object
-  processor(function() {
-    if(self.paused || self._destroyed) return;
-
-    self._cursor.nextObject(function (err, doc) {
-      self._onNextObject(err, doc);
-    });    
-  });
-}
-
-/**
- * Handle each document as its returned from the cursor.
- * @ignore
- * @api private
- */
-CursorStream.prototype._onNextObject = function (err, doc) {
-  if(err) return this.destroy(err);
-
-  // when doc is null we hit the end of the cursor
-  if(!doc && (this._cursor.state == 1 || this._cursor.state == 2)) {
-    this.emit('end')
-    return this.destroy();
-  } else if(doc) {
-    var data = typeof this.options.transform == 'function' ? this.options.transform(doc) : doc;
-    this.emit('data', data);
-    this._next();
-  }
-}
-
-/**
- * Pauses the stream.
- *
- * @api public
- */
-CursorStream.prototype.pause = function () {
-  this.paused = true;
-}
-
-/**
- * Resumes the stream.
- *
- * @api public
- */
-CursorStream.prototype.resume = function () {
-  var self = this;
-
-  // Don't do anything if we are not paused
-  if(!this.paused) return;
-  if(!this._cursor.state == 3) return;
-
-  process.nextTick(function() {
-    self.paused = false;
-    // Only trigger more fetching if the cursor is open
-    self._next();
-  })
-}
-
-/**
- * Destroys the stream, closing the underlying
- * cursor. No more events will be emitted.
- *
- * @api public
- */
-CursorStream.prototype.destroy = function (err) {
-  if (this._destroyed) return;
-  this._destroyed = true;
-  this.readable = false;
-
-  this._cursor.close();
-
-  if(err) {
-    this.emit('error', err);
-  }
-
-  this.emit('close');
-}
-
-// TODO - maybe implement the raw option to pass binary?
-//CursorStream.prototype.setEncoding = function () {
-//}
-
-module.exports = exports = CursorStream;


[16/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/collection/query.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/query.js b/web/demos/package/node_modules/mongodb/lib/mongodb/collection/query.js
deleted file mode 100644
index 6f6efc7..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/query.js
+++ /dev/null
@@ -1,153 +0,0 @@
-var ObjectID = require('bson').ObjectID
-  , Scope = require('../scope').Scope
-  , shared = require('./shared')
-  , utils = require('../utils');
-
-var testForFields = {
-    limit: 1, sort: 1, fields:1, skip: 1, hint: 1, explain: 1, snapshot: 1, timeout: 1, tailable: 1, tailableRetryInterval: 1
-  , numberOfRetries: 1, awaitdata: 1, exhaust: 1, batchSize: 1, returnKey: 1, maxScan: 1, min: 1, max: 1, showDiskLoc: 1
-  , comment: 1, raw: 1, readPreference: 1, partial: 1, read: 1, dbName: 1, oplogReplay: 1
-};
-
-//
-// Find method
-//
-var find = function find () {
-  var options
-    , args = Array.prototype.slice.call(arguments, 0)
-    , has_callback = typeof args[args.length - 1] === 'function'
-    , has_weird_callback = typeof args[0] === 'function'
-    , callback = has_callback ? args.pop() : (has_weird_callback ? args.shift() : null)
-    , len = args.length
-    , selector = len >= 1 ? args[0] : {}
-    , fields = len >= 2 ? args[1] : undefined;
-
-  if(len === 1 && has_weird_callback) {
-    // backwards compat for callback?, options case
-    selector = {};
-    options = args[0];
-  }
-
-  if(len === 2 && !Array.isArray(fields)) {
-    var fieldKeys = Object.getOwnPropertyNames(fields);
-    var is_option = false;
-
-    for(var i = 0; i < fieldKeys.length; i++) {
-      if(testForFields[fieldKeys[i]] != null) {
-        is_option = true;
-        break;
-      }
-    }
-
-    if(is_option) {
-      options = fields;
-      fields = undefined;
-    } else {
-      options = {};
-    }
-  } else if(len === 2 && Array.isArray(fields) && !Array.isArray(fields[0])) {
-    var newFields = {};
-    // Rewrite the array
-    for(var i = 0; i < fields.length; i++) {
-      newFields[fields[i]] = 1;
-    }
-    // Set the fields
-    fields = newFields;
-  }
-
-  if(3 === len) {
-    options = args[2];
-  }
-
-  // Ensure selector is not null
-  selector = selector == null ? {} : selector;
-  // Validate correctness off the selector
-  var object = selector;
-  if(Buffer.isBuffer(object)) {
-    var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24;
-    if(object_size != object.length)  {
-      var error = new Error("query selector raw message size does not match message header size [" + object.length + "] != [" + object_size + "]");
-      error.name = 'MongoError';
-      throw error;
-    }
-  }
-
-  // Validate correctness of the field selector
-  var object = fields;
-  if(Buffer.isBuffer(object)) {
-    var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24;
-    if(object_size != object.length)  {
-      var error = new Error("query fields raw message size does not match message header size [" + object.length + "] != [" + object_size + "]");
-      error.name = 'MongoError';
-      throw error;
-    }
-  }
-
-  // Check special case where we are using an objectId
-  if(selector instanceof ObjectID || (selector != null && selector._bsontype == 'ObjectID')) {
-    selector = {_id:selector};
-  }
-
-  // If it's a serialized fields field we need to just let it through
-  // user be warned it better be good
-  if(options && options.fields && !(Buffer.isBuffer(options.fields))) {
-    fields = {};
-
-    if(Array.isArray(options.fields)) {
-      if(!options.fields.length) {
-        fields['_id'] = 1;
-      } else {
-        for (var i = 0, l = options.fields.length; i < l; i++) {
-          fields[options.fields[i]] = 1;
-        }
-      }
-    } else {
-      fields = options.fields;
-    }
-  }
-
-  if (!options) options = {};
-  options.skip = len > 3 ? args[2] : options.skip ? options.skip : 0;
-  options.limit = len > 3 ? args[3] : options.limit ? options.limit : 0;
-  options.raw = options.raw != null && typeof options.raw === 'boolean' ? options.raw : this.raw;
-  options.hint = options.hint != null ? shared.normalizeHintField(options.hint) : this.internalHint;
-  options.timeout = len == 5 ? args[4] : typeof options.timeout === 'undefined' ? undefined : options.timeout;
-  // If we have overridden slaveOk otherwise use the default db setting
-  options.slaveOk = options.slaveOk != null ? options.slaveOk : this.db.slaveOk;
-
-  // Set option
-  var o = options;
-  // Support read/readPreference
-  if(o["read"] != null) o["readPreference"] = o["read"];
-  // Set the read preference
-  o.read = o["readPreference"] ? o.readPreference : this.readPreference;
-  // Adjust slave ok if read preference is secondary or secondary only
-  if(o.read == "secondary" || o.read == "secondaryOnly") options.slaveOk = true;
-
-  // Set the selector
-  o.selector = selector;  
-
-  // Create precursor
-  var scope = new Scope(this, {}, fields, o);
-  // Callback for backward compatibility
-  if(callback) return callback(null, scope.find(selector));
-  // Return the pre cursor object
-  return scope.find(selector);
-};
-
-var findOne = function findOne () {
-  var self = this;
-  var args = Array.prototype.slice.call(arguments, 0);
-  var callback = args.pop();
-  var cursor = this.find.apply(this, args).limit(-1).batchSize(1);
-  
-  // Return the item
-  cursor.nextObject(function(err, item) {
-    if(err != null) return callback(utils.toError(err), null);
-    callback(null, item);
-  });
-};
-
-
-exports.find = find;
-exports.findOne = findOne;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/collection/shared.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/shared.js b/web/demos/package/node_modules/mongodb/lib/mongodb/collection/shared.js
deleted file mode 100644
index 77eae03..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/shared.js
+++ /dev/null
@@ -1,120 +0,0 @@
-// ***************************************************
-// Write concerns
-// ***************************************************
-var _hasWriteConcern = function(errorOptions) {
-  return errorOptions == true
-    || errorOptions.w > 0
-    || errorOptions.w == 'majority'
-    || errorOptions.j == true
-    || errorOptions.journal == true
-    || errorOptions.fsync == true
-}
-
-var _setWriteConcernHash = function(options) {
-  var finalOptions = {};
-  if(options.w != null) finalOptions.w = options.w;  
-  if(options.journal == true) finalOptions.j = options.journal;
-  if(options.j == true) finalOptions.j = options.j;
-  if(options.fsync == true) finalOptions.fsync = options.fsync;
-  if(options.wtimeout != null) finalOptions.wtimeout = options.wtimeout;  
-  return finalOptions;
-}
-
-var _getWriteConcern = function(self, options) {
-  // Final options
-  var finalOptions = {w:1};
-  // Local options verification
-  if(options.w != null || typeof options.j == 'boolean' || typeof options.journal == 'boolean' || typeof options.fsync == 'boolean') {
-    finalOptions = _setWriteConcernHash(options);
-  } else if(typeof options.safe == "boolean") {
-    finalOptions = {w: (options.safe ? 1 : 0)};
-  } else if(options.safe != null && typeof options.safe == 'object') {
-    finalOptions = _setWriteConcernHash(options.safe);
-  } else if(self.opts.w != null || typeof self.opts.j == 'boolean' || typeof self.opts.journal == 'boolean' || typeof self.opts.fsync == 'boolean') {
-    finalOptions = _setWriteConcernHash(self.opts);
-  } else if(typeof self.opts.safe == "boolean") {
-    finalOptions = {w: (self.opts.safe ? 1 : 0)};
-  } else if(self.db.safe.w != null || typeof self.db.safe.j == 'boolean' || typeof self.db.safe.journal == 'boolean' || typeof self.db.safe.fsync == 'boolean') {
-    finalOptions = _setWriteConcernHash(self.db.safe);
-  } else if(self.db.options.w != null || typeof self.db.options.j == 'boolean' || typeof self.db.options.journal == 'boolean' || typeof self.db.options.fsync == 'boolean') {
-    finalOptions = _setWriteConcernHash(self.db.options);
-  } else if(typeof self.db.safe == "boolean") {
-    finalOptions = {w: (self.db.safe ? 1 : 0)};
-  }
-
-  // Ensure we don't have an invalid combination of write concerns
-  if(finalOptions.w < 1 
-    && (finalOptions.journal == true || finalOptions.j == true || finalOptions.fsync == true)) throw new Error("No acknowlegement using w < 1 cannot be combined with journal:true or fsync:true");
-
-  // Return the options
-  return finalOptions;
-}
-
-var _getReadConcern = function(self, options) {
-  if(options.readPreference) return options.readPreference;
-  if(self.readPreference) return self.readPreference;
-  if(self.db.readPreference) return self.readPreference;
-  return 'primary';
-}
-
-/**
- * @ignore
- */
-var checkCollectionName = function checkCollectionName (collectionName) {
-  if('string' !== typeof collectionName) {
-    throw Error("collection name must be a String");
-  }
-
-  if(!collectionName || collectionName.indexOf('..') != -1) {
-    throw Error("collection names cannot be empty");
-  }
-
-  if(collectionName.indexOf('$') != -1 &&
-      collectionName.match(/((^\$cmd)|(oplog\.\$main))/) == null) {
-    throw Error("collection names must not contain '$'");
-  }
-
-  if(collectionName.match(/^\.|\.$/) != null) {
-    throw Error("collection names must not start or end with '.'");
-  }
-
-  // Validate that we are not passing 0x00 in the colletion name
-  if(!!~collectionName.indexOf("\x00")) {
-    throw new Error("collection names cannot contain a null character");
-  }
-};
-
-
-/**
- * Normalizes a `hint` argument.
- *
- * @param {String|Object|Array} hint
- * @return {Object}
- * @api private
- */
-var normalizeHintField = function normalizeHintField(hint) {
-  var finalHint = null;
-
-  if(typeof hint == 'string') {
-    finalHint = hint;
-  } else if(Array.isArray(hint)) {
-    finalHint = {};
-
-    hint.forEach(function(param) {
-      finalHint[param] = 1;
-    });  
-  } else if(hint != null && typeof hint == 'object') {
-    finalHint = {};
-    for (var name in hint) {
-      finalHint[name] = hint[name];
-    }    
-  }
-
-  return finalHint;
-};
-
-exports._getWriteConcern = _getWriteConcern;
-exports._hasWriteConcern = _hasWriteConcern;
-exports._getReadConcern = _getReadConcern;
-exports.checkCollectionName = checkCollectionName;
-exports.normalizeHintField = normalizeHintField;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/command_cursor.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/command_cursor.js b/web/demos/package/node_modules/mongodb/lib/mongodb/command_cursor.js
deleted file mode 100644
index e973e2c..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/command_cursor.js
+++ /dev/null
@@ -1,309 +0,0 @@
-var Long = require('bson').Long
-  , GetMoreCommand = require('./commands/get_more_command').GetMoreCommand;
-
-var CommandCursor = function(db, collection, command, options) {  
-  // Ensure empty options if no options passed
-  options = options || {};  
-  
-  // Default cursor id is 0
-  var cursorId = Long.fromInt(0);
-  var zeroCursor = Long.fromInt(0);
-  var state = 'init';
-
-  // Hardcode batch size
-  command.cursor.batchSize = 1;
-
-  // BatchSize
-  var batchSize = command.cursor.batchSize || 0;
-  var raw = options.raw || false;
-  var readPreference = options.readPreference || 'primary';
-
-  // Checkout a connection
-  var connection = db.serverConfig.checkoutReader(readPreference);
-  // MaxTimeMS
-  var maxTimeMS = options.maxTimeMS;
-
-  // Contains all the items
-  var items = null;
-
-  // Execute getmore
-  var getMore = function(callback) {
-    // Resolve more of the cursor using the getMore command
-    var getMoreCommand = new GetMoreCommand(db
-      , db.databaseName + "." + collection.collectionName
-      , batchSize
-      , cursorId
-    );
-
-    // Set up options
-    var command_options = { connection:connection };
-
-    // Execute the getMore Command
-    db._executeQueryCommand(getMoreCommand, command_options, function(err, result) {
-      if(err) {
-        items = [];
-        state = 'closed';
-        return callback(err);
-      }
-
-      // Return all the documents
-      callback(null, result);
-    });    
-  }
-
-  var exhaustGetMore = function(callback) {
-    getMore(function(err, result) {
-      if(err) {
-        items = [];
-        state = 'closed';
-        return callback(err, null);
-      }
-
-      // Add the items
-      items = items.concat(result.documents);      
-
-      // Set the cursor id
-      cursorId = result.cursorId;
-      if(typeof cursorId == 'number') cursorId = Long.fromNumber(cursorId);
-      
-      // If the cursor is done
-      if(result.cursorId.equals(zeroCursor)) {
-        return callback(null, items);
-      } 
-
-      // Check the cursor id
-      exhaustGetMore(callback);
-    });
-  }
-
-  var exhaustGetMoreEach = function(callback) {
-    getMore(function(err, result) {
-      if(err) {
-        items = [];
-        state = 'closed';
-        return callback(err, null);
-      }
-
-      // Add the items
-      items = result.documents;
-
-      // Emit all the items in the first batch
-      while(items.length > 0) {
-        callback(null, items.shift());
-      }
-      
-      // Set the cursor id
-      cursorId = result.cursorId;
-      if(typeof cursorId == 'number') cursorId = Long.fromNumber(cursorId);
-
-      // If the cursor is done
-      if(result.cursorId.equals(zeroCursor)) {
-        state = "closed";
-        return callback(null, null);
-      } 
-      
-      // Check the cursor id
-      exhaustGetMoreEach(callback);
-    });
-  }
-
-  //
-  // Get all the elements
-  //
-  this.get = function(options, callback) {
-    if(typeof options == 'function') {
-      callback = options;
-      options = {};
-    }
-
-    // Set the connection to the passed in one if it's provided
-    connection = options.connection ? options.connection : connection;
-
-    // Command options
-    var _options = {connection:connection};
-    if(typeof maxTimeMS == 'number') _options.maxTimeMS = maxTimeMS;
-
-    // Execute the internal command first
-    db.command(command, _options, function(err, result) {
-      if(err) {
-        state = 'closed';
-        return callback(err, null);
-      }
-
-      // Retrieve the cursor id
-      cursorId = result.cursor.id;
-      if(typeof cursorId == 'number') cursorId = Long.fromNumber(cursorId);
-
-      // Validate cursorId
-      if(cursorId.equals(zeroCursor)) {
-        return callback(null, result.cursor.firstBatch);
-      };
-
-      // Add to the items
-      items = result.cursor.firstBatch;
-      // Execute the getMore
-      exhaustGetMore(callback);
-    });
-  }
-
-  //
-  // Iterate over all the items
-  //
-  this.each = function(options, callback) {
-    if(typeof options == 'function') {
-      callback = options;
-      options = {};
-    }
-
-    // If it's a closed cursor return error
-    if(this.isClosed()) return callback(new Error("cursor is closed"));
-    // Set the connection to the passed in one if it's provided
-    connection = options.connection ? options.connection : connection;
-  
-    // Command options
-    var _options = {connection:connection};
-    if(typeof maxTimeMS == 'number') _options.maxTimeMS = maxTimeMS;
-
-    // Execute the internal command first
-    db.command(command, _options, function(err, result) {
-      if(err) {
-        state = 'closed';
-        return callback(err, null);
-      }
-
-      // Get all the items
-      items = result.cursor.firstBatch;
-
-      // Emit all the items in the first batch
-      while(items.length > 0) {
-        callback(null, items.shift());
-      }
-
-      // Retrieve the cursor id
-      cursorId = result.cursor.id;
-      if(typeof cursorId == 'number') cursorId = Long.fromNumber(cursorId);
-
-      // If no cursor we just finish up the current batch of items
-      if(cursorId.equals(zeroCursor)) {
-        state = 'closed';        
-        return callback(null, null);
-      }
-
-      // Emit each until no more getMore's
-      exhaustGetMoreEach(callback);
-    });
-  }
-
-  //
-  // Get the next object
-  //
-  this.next = function(options, callback) {
-    if(typeof options == 'function') {
-      callback = options;
-      options = {};
-    }
-
-    // If it's a closed cursor return error
-    if(this.isClosed()) return callback(new Error("cursor is closed"));
-
-    // Set the connection to the passed in one if it's provided
-    connection = options.connection ? options.connection : connection;
-  
-    // Command options
-    var _options = {connection:connection};
-    if(typeof maxTimeMS == 'number') _options.maxTimeMS = maxTimeMS;
-
-    // Execute the internal command first
-    if(!items) {
-      db.command(command, _options, function(err, result) {
-        if(err) {
-          state = 'closed';
-          return callback(err, null);
-        }
-
-        // Retrieve the cursor id
-        cursorId = result.cursor.id;
-        if(typeof cursorId == 'number') cursorId = Long.fromNumber(cursorId);
-        // Get the first batch results
-        items = result.cursor.firstBatch;
-        // We have items return the first one
-        if(items.length > 0) {
-          callback(null, items.shift());
-        } else {
-          state = 'closed';
-          callback(null, null);
-        }
-      });
-    } else if(items.length > 0) {
-      callback(null, items.shift());
-    } else if(items.length == 0 && cursorId.equals(zeroCursor)) {
-      state = 'closed';
-      callback(null, null);
-    } else {
-      // Execute a getMore
-      getMore(function(err, result) {
-        if(err) {
-          state = 'closed';
-          return callback(err, null);
-        }
-
-        // Set the cursor id
-        cursorId = result.cursorId;
-        if(typeof cursorId == 'number') cursorId = Long.fromNumber(cursorId);
-
-        // Add the items
-        items = items.concat(result.documents);
-        // If no more items
-        if(items.length == 0) {
-          state = 'closed';
-          return callback(null, null);
-        }
-
-        // Return the item
-        return callback(null, items.shift());
-      })
-    }
-  }
-
-  // Validate if the cursor is closed
-  this.isClosed = function() {
-    return state == 'closed';
-  }
-
-  // Allow us to set the MaxTimeMS
-  this.maxTimeMS = function(_maxTimeMS) {
-    maxTimeMS = _maxTimeMS;
-  }
-
-  // Close the cursor sending a kill cursor command if needed
-  this.close = function(options, callback) {
-    if(typeof options == 'function') {
-      callback = options;
-      options = {};
-    }
-
-    // Close the cursor if not needed
-    if(cursorId instanceof Long && cursorId.greaterThan(Long.fromInt(0))) {
-      try {
-        var command = new KillCursorCommand(this.db, [cursorId]);
-        // Added an empty callback to ensure we don't throw any null exceptions
-        db._executeQueryCommand(command, {connection:connection});
-      } catch(err) {}
-    }
-
-    // Null out the connection
-    connection = null;
-    // Reset cursor id
-    cursorId = Long.fromInt(0);
-    // Set to closed status
-    state = 'closed';
-    // Clear out all the items
-    items = null;
-
-    if(callback) {
-      callback(null, null);
-    }    
-  }  
-}
-
-exports.CommandCursor = CommandCursor;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/commands/base_command.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/base_command.js b/web/demos/package/node_modules/mongodb/lib/mongodb/commands/base_command.js
deleted file mode 100644
index 9558582..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/base_command.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
-  Base object used for common functionality
-**/
-var BaseCommand = exports.BaseCommand = function BaseCommand() {
-};
-
-var id = 1;
-BaseCommand.prototype.getRequestId = function getRequestId() {
-  if (!this.requestId) this.requestId = id++;
-  return this.requestId;
-};
-
-BaseCommand.prototype.setMongosReadPreference = function setMongosReadPreference(readPreference, tags) {}
-
-BaseCommand.prototype.updateRequestId = function() {
-  this.requestId = id++;
-  return this.requestId;
-};
-
-// OpCodes
-BaseCommand.OP_REPLY = 1;
-BaseCommand.OP_MSG = 1000;
-BaseCommand.OP_UPDATE = 2001;
-BaseCommand.OP_INSERT =	2002;
-BaseCommand.OP_GET_BY_OID = 2003;
-BaseCommand.OP_QUERY = 2004;
-BaseCommand.OP_GET_MORE = 2005;
-BaseCommand.OP_DELETE =	2006;
-BaseCommand.OP_KILL_CURSORS =	2007;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/commands/db_command.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/db_command.js b/web/demos/package/node_modules/mongodb/lib/mongodb/commands/db_command.js
deleted file mode 100644
index 1f5b065..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/db_command.js
+++ /dev/null
@@ -1,253 +0,0 @@
-var QueryCommand = require('./query_command').QueryCommand,
-  InsertCommand = require('./insert_command').InsertCommand,
-  inherits = require('util').inherits,
-  utils = require('../utils'),
-  crypto = require('crypto');
-
-/**
-  Db Command
-**/
-var DbCommand = exports.DbCommand = function(dbInstance, collectionName, queryOptions, numberToSkip, numberToReturn, query, returnFieldSelector, options) {
-  QueryCommand.call(this);
-  this.collectionName = collectionName;
-  this.queryOptions = queryOptions;
-  this.numberToSkip = numberToSkip;
-  this.numberToReturn = numberToReturn;
-  this.query = query;
-  this.returnFieldSelector = returnFieldSelector;
-  this.db = dbInstance;
-
-  // Set the slave ok bit
-  if(this.db && this.db.slaveOk) {
-    this.queryOptions |= QueryCommand.OPTS_SLAVE;
-  }
-
-  // Make sure we don't get a null exception
-  options = options == null ? {} : options;
-
-  // Allow for overriding the BSON checkKeys function
-  this.checkKeys = typeof options['checkKeys'] == 'boolean' ? options["checkKeys"] : true;
-
-  // Let us defined on a command basis if we want functions to be serialized or not
-  if(options['serializeFunctions'] != null && options['serializeFunctions']) {
-    this.serializeFunctions = true;
-  }
-};
-
-inherits(DbCommand, QueryCommand);
-
-// Constants
-DbCommand.SYSTEM_NAMESPACE_COLLECTION = "system.namespaces";
-DbCommand.SYSTEM_INDEX_COLLECTION = "system.indexes";
-DbCommand.SYSTEM_PROFILE_COLLECTION = "system.profile";
-DbCommand.SYSTEM_USER_COLLECTION = "system.users";
-DbCommand.SYSTEM_COMMAND_COLLECTION = "$cmd";
-DbCommand.SYSTEM_JS_COLLECTION = "system.js";
-
-// New commands
-DbCommand.NcreateIsMasterCommand = function(db, databaseName) {
-  return new DbCommand(db, databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'ismaster':1}, null);
-};
-
-// Provide constructors for different db commands
-DbCommand.createIsMasterCommand = function(db) {
-  return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'ismaster':1}, null);
-};
-
-DbCommand.createCollectionInfoCommand = function(db, selector) {
-  return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_NAMESPACE_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, 0, selector, null);
-};
-
-DbCommand.createGetNonceCommand = function(db, options) {
-  return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'getnonce':1}, null);
-};
-
-DbCommand.createAuthenticationCommand = function(db, username, password, nonce, authdb) {
-  // Use node md5 generator
-  var md5 = crypto.createHash('md5');
-  // Generate keys used for authentication
-  md5.update(username + ":mongo:" + password);
-  var hash_password = md5.digest('hex');
-  // Final key
-  md5 = crypto.createHash('md5');
-  md5.update(nonce + username + hash_password);
-  var key = md5.digest('hex');
-  // Creat selector
-  var selector = {'authenticate':1, 'user':username, 'nonce':nonce, 'key':key};
-  // Create db command
-  return new DbCommand(db, authdb + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NONE, 0, -1, selector, null);
-};
-
-DbCommand.createLogoutCommand = function(db) {
-  return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'logout':1}, null);
-};
-
-DbCommand.createCreateCollectionCommand = function(db, collectionName, options) {
-  var selector = {'create':collectionName};
-  // Modify the options to ensure correct behaviour
-  for(var name in options) {
-    if(options[name] != null && options[name].constructor != Function) selector[name] = options[name];
-  }
-  // Execute the command
-  return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, selector, null);
-};
-
-DbCommand.createDropCollectionCommand = function(db, collectionName) {
-  return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'drop':collectionName}, null);
-};
-
-DbCommand.createRenameCollectionCommand = function(db, fromCollectionName, toCollectionName, options) {
-  var renameCollection = db.databaseName + "." + fromCollectionName;
-  var toCollection = db.databaseName + "." + toCollectionName;
-  var dropTarget = options && options.dropTarget ? options.dropTarget : false;
-  return new DbCommand(db, "admin." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'renameCollection':renameCollection, 'to':toCollection, 'dropTarget':dropTarget}, null);
-};
-
-DbCommand.createGetLastErrorCommand = function(options, db) {
-
-  if (typeof db === 'undefined') {
-    db =  options;
-    options = {};
-  }
-  // Final command
-  var command = {'getlasterror':1};
-  // If we have an options Object let's merge in the fields (fsync/wtimeout/w)
-  if('object' === typeof options) {
-    for(var name in options) {
-      command[name] = options[name]
-    }
-  }
-
-  // Special case for w == 1, remove the w
-  if(1 == command.w) {
-    delete command.w;
-  }
-
-  // Execute command
-  return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, command, null);
-};
-
-DbCommand.createGetLastStatusCommand = DbCommand.createGetLastErrorCommand;
-
-DbCommand.createGetPreviousErrorsCommand = function(db) {
-  return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'getpreverror':1}, null);
-};
-
-DbCommand.createResetErrorHistoryCommand = function(db) {
-  return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'reseterror':1}, null);
-};
-
-DbCommand.createCreateIndexCommand = function(db, collectionName, fieldOrSpec, options) {
-  var fieldHash = {};
-  var indexes = [];
-  var keys;
-
-  // Get all the fields accordingly
-  if('string' == typeof fieldOrSpec) {
-    // 'type'
-    indexes.push(fieldOrSpec + '_' + 1);
-    fieldHash[fieldOrSpec] = 1;
-
-  } else if(utils.isArray(fieldOrSpec)) {
-
-    fieldOrSpec.forEach(function(f) {
-      if('string' == typeof f) {
-        // [{location:'2d'}, 'type']
-        indexes.push(f + '_' + 1);
-        fieldHash[f] = 1;
-      } else if(utils.isArray(f)) {
-        // [['location', '2d'],['type', 1]]
-        indexes.push(f[0] + '_' + (f[1] || 1));
-        fieldHash[f[0]] = f[1] || 1;
-      } else if(utils.isObject(f)) {
-        // [{location:'2d'}, {type:1}]
-        keys = Object.keys(f);
-        keys.forEach(function(k) {
-          indexes.push(k + '_' + f[k]);
-          fieldHash[k] = f[k];
-        });
-      } else {
-        // undefined (ignore)
-      }
-    });
-
-  } else if(utils.isObject(fieldOrSpec)) {
-    // {location:'2d', type:1}
-    keys = Object.keys(fieldOrSpec);
-    keys.forEach(function(key) {
-      indexes.push(key + '_' + fieldOrSpec[key]);
-      fieldHash[key] = fieldOrSpec[key];
-    });
-  }
-
-  // Generate the index name
-  var indexName = typeof options.name == 'string'
-    ? options.name
-    : indexes.join("_");
-
-  var selector = {
-    'ns': db.databaseName + "." + collectionName,
-    'key': fieldHash,
-    'name': indexName
-  }
-
-  // Ensure we have a correct finalUnique
-  var finalUnique = options == null || 'object' === typeof options
-    ? false
-    : options;
-
-  // Set up options
-  options = options == null || typeof options == 'boolean'
-    ? {}
-    : options;
-
-  // Add all the options
-  var keys = Object.keys(options);
-  for(var i = 0; i < keys.length; i++) {
-    selector[keys[i]] = options[keys[i]];
-  }
-
-  if(selector['unique'] == null)
-    selector['unique'] = finalUnique;
-
-  var name = db.databaseName + "." + DbCommand.SYSTEM_INDEX_COLLECTION;
-  var cmd = new InsertCommand(db, name, false);
-  return cmd.add(selector);
-};
-
-DbCommand.logoutCommand = function(db, command_hash, options) {
-  var dbName = options != null && options['authdb'] != null ? options['authdb'] : db.databaseName;
-  return new DbCommand(db, dbName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, command_hash, null);
-}
-
-DbCommand.createDropIndexCommand = function(db, collectionName, indexName) {
-  return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'deleteIndexes':collectionName, 'index':indexName}, null);
-};
-
-DbCommand.createReIndexCommand = function(db, collectionName) {
-  return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'reIndex':collectionName}, null);
-};
-
-DbCommand.createDropDatabaseCommand = function(db) {
-  return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'dropDatabase':1}, null);
-};
-
-DbCommand.createDbCommand = function(db, command_hash, options, auth_db) {
-  var db_name = (auth_db ? auth_db : db.databaseName) + "." + DbCommand.SYSTEM_COMMAND_COLLECTION;
-  options = options == null ? {checkKeys: false} : options;
-  return new DbCommand(db, db_name, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, command_hash, null, options);
-};
-
-DbCommand.createAdminDbCommand = function(db, command_hash) {
-  return new DbCommand(db, "admin." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, command_hash, null);
-};
-
-DbCommand.createAdminDbCommandSlaveOk = function(db, command_hash) {
-  return new DbCommand(db, "admin." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT | QueryCommand.OPTS_SLAVE, 0, -1, command_hash, null);
-};
-
-DbCommand.createDbSlaveOkCommand = function(db, command_hash, options) {
-  options = options == null ? {checkKeys: false} : options;
-  var dbName = options.dbName ? options.dbName : db.databaseName;
-  return new DbCommand(db, dbName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT | QueryCommand.OPTS_SLAVE, 0, -1, command_hash, null, options);
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/commands/delete_command.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/delete_command.js b/web/demos/package/node_modules/mongodb/lib/mongodb/commands/delete_command.js
deleted file mode 100644
index 61a37ed..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/delete_command.js
+++ /dev/null
@@ -1,129 +0,0 @@
-var BaseCommand = require('./base_command').BaseCommand,
-  inherits = require('util').inherits;
-
-/**
-  Insert Document Command
-**/
-var DeleteCommand = exports.DeleteCommand = function(db, collectionName, selector, flags) {
-  BaseCommand.call(this);
-
-  // Validate correctness off the selector
-  var object = selector;
-  if(Buffer.isBuffer(object)) {
-    var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24;        
-    if(object_size != object.length)  {
-      var error = new Error("delete raw message size does not match message header size [" + object.length + "] != [" + object_size + "]");
-      error.name = 'MongoError';
-      throw error;
-    }
-  }
-  
-  this.flags = flags;
-  this.collectionName = collectionName;
-  this.selector = selector;
-  this.db = db;
-};
-
-inherits(DeleteCommand, BaseCommand);
-
-DeleteCommand.OP_DELETE =	2006;
-
-/*
-struct {
-    MsgHeader header;                 // standard message header
-    int32     ZERO;                   // 0 - reserved for future use
-    cstring   fullCollectionName;     // "dbname.collectionname"
-    int32     ZERO;                   // 0 - reserved for future use
-    mongo.BSON      selector;               // query object.  See below for details.
-}
-*/
-DeleteCommand.prototype.toBinary = function(bsonSettings) {
-  // Validate that we are not passing 0x00 in the colletion name
-  if(!!~this.collectionName.indexOf("\x00")) {
-    throw new Error("namespace cannot contain a null character");
-  }
-
-  // Calculate total length of the document
-  var totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + this.db.bson.calculateObjectSize(this.selector, false, true) + (4 * 4);
-  
-  // Enforce maximum bson size
-  if(!bsonSettings.disableDriverBSONSizeCheck 
-    && totalLengthOfCommand > bsonSettings.maxBsonSize) 
-    throw new Error("Document exceeds maximum allowed bson size of " + bsonSettings.maxBsonSize + " bytes");
-
-  if(bsonSettings.disableDriverBSONSizeCheck 
-    && totalLengthOfCommand > bsonSettings.maxMessageSizeBytes) 
-    throw new Error("Command exceeds maximum message size of " + bsonSettings.maxMessageSizeBytes + " bytes");
-
-  // Let's build the single pass buffer command
-  var _index = 0;
-  var _command = new Buffer(totalLengthOfCommand);
-  // Write the header information to the buffer
-  _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff;     
-  _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff;
-  _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff;
-  _command[_index] = totalLengthOfCommand & 0xff;
-  // Adjust index
-  _index = _index + 4;
-  // Write the request ID
-  _command[_index + 3] = (this.requestId >> 24) & 0xff;     
-  _command[_index + 2] = (this.requestId >> 16) & 0xff;
-  _command[_index + 1] = (this.requestId >> 8) & 0xff;
-  _command[_index] = this.requestId & 0xff;
-  // Adjust index
-  _index = _index + 4;
-  // Write zero
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  // Write the op_code for the command
-  _command[_index + 3] = (DeleteCommand.OP_DELETE >> 24) & 0xff;     
-  _command[_index + 2] = (DeleteCommand.OP_DELETE >> 16) & 0xff;
-  _command[_index + 1] = (DeleteCommand.OP_DELETE >> 8) & 0xff;
-  _command[_index] = DeleteCommand.OP_DELETE & 0xff;
-  // Adjust index
-  _index = _index + 4;
-
-  // Write zero
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-
-  // Write the collection name to the command
-  _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1;
-  _command[_index - 1] = 0;    
-
-  // Write the flags
-  _command[_index + 3] = (this.flags >> 24) & 0xff;     
-  _command[_index + 2] = (this.flags >> 16) & 0xff;
-  _command[_index + 1] = (this.flags >> 8) & 0xff;
-  _command[_index] = this.flags & 0xff;
-  // Adjust index
-  _index = _index + 4;
-
-  // Document binary length
-  var documentLength = 0
-
-  // Serialize the selector
-  // If we are passing a raw buffer, do minimal validation
-  if(Buffer.isBuffer(this.selector)) {
-    documentLength = this.selector.length;
-    // Copy the data into the current buffer
-    this.selector.copy(_command, _index);
-  } else {
-    documentLength = this.db.bson.serializeWithBufferAndIndex(this.selector, false, _command, _index) - _index + 1;
-  }
-  
-  // Write the length to the document
-  _command[_index + 3] = (documentLength >> 24) & 0xff;     
-  _command[_index + 2] = (documentLength >> 16) & 0xff;
-  _command[_index + 1] = (documentLength >> 8) & 0xff;
-  _command[_index] = documentLength & 0xff;
-  // Update index in buffer
-  _index = _index + documentLength;
-  // Add terminating 0 for the object
-  _command[_index - 1] = 0;      
-  return _command;
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/commands/get_more_command.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/get_more_command.js b/web/demos/package/node_modules/mongodb/lib/mongodb/commands/get_more_command.js
deleted file mode 100644
index 1b6b172..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/get_more_command.js
+++ /dev/null
@@ -1,88 +0,0 @@
-var BaseCommand = require('./base_command').BaseCommand,
-  inherits = require('util').inherits,
-  binaryutils = require('../utils');
-
-/**
-  Get More Document Command
-**/
-var GetMoreCommand = exports.GetMoreCommand = function(db, collectionName, numberToReturn, cursorId) {
-  BaseCommand.call(this);
-
-  this.collectionName = collectionName;
-  this.numberToReturn = numberToReturn;
-  this.cursorId = cursorId;
-  this.db = db;
-};
-
-inherits(GetMoreCommand, BaseCommand);
-
-GetMoreCommand.OP_GET_MORE = 2005;
-
-GetMoreCommand.prototype.toBinary = function() {
-  // Validate that we are not passing 0x00 in the colletion name
-  if(!!~this.collectionName.indexOf("\x00")) {
-    throw new Error("namespace cannot contain a null character");
-  }
-
-  // Calculate total length of the document
-  var totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + 8 + (4 * 4);
-  // Let's build the single pass buffer command
-  var _index = 0;
-  var _command = new Buffer(totalLengthOfCommand);
-  // Write the header information to the buffer
-  _command[_index++] = totalLengthOfCommand & 0xff;
-  _command[_index++] = (totalLengthOfCommand >> 8) & 0xff;
-  _command[_index++] = (totalLengthOfCommand >> 16) & 0xff;
-  _command[_index++] = (totalLengthOfCommand >> 24) & 0xff;     
-
-  // Write the request ID
-  _command[_index++] = this.requestId & 0xff;
-  _command[_index++] = (this.requestId >> 8) & 0xff;
-  _command[_index++] = (this.requestId >> 16) & 0xff;
-  _command[_index++] = (this.requestId >> 24) & 0xff;     
-
-  // Write zero
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-
-  // Write the op_code for the command
-  _command[_index++] = GetMoreCommand.OP_GET_MORE & 0xff;
-  _command[_index++] = (GetMoreCommand.OP_GET_MORE >> 8) & 0xff;
-  _command[_index++] = (GetMoreCommand.OP_GET_MORE >> 16) & 0xff;
-  _command[_index++] = (GetMoreCommand.OP_GET_MORE >> 24) & 0xff;     
-
-  // Write zero
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-
-  // Write the collection name to the command
-  _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1;
-  _command[_index - 1] = 0;    
-
-  // Number of documents to return
-  _command[_index++] = this.numberToReturn & 0xff;
-  _command[_index++] = (this.numberToReturn >> 8) & 0xff;
-  _command[_index++] = (this.numberToReturn >> 16) & 0xff;
-  _command[_index++] = (this.numberToReturn >> 24) & 0xff;     
-  
-  // Encode the cursor id
-  var low_bits = this.cursorId.getLowBits();
-  // Encode low bits
-  _command[_index++] = low_bits & 0xff;
-  _command[_index++] = (low_bits >> 8) & 0xff;
-  _command[_index++] = (low_bits >> 16) & 0xff;
-  _command[_index++] = (low_bits >> 24) & 0xff;     
-  
-  var high_bits = this.cursorId.getHighBits();
-  // Encode high bits
-  _command[_index++] = high_bits & 0xff;
-  _command[_index++] = (high_bits >> 8) & 0xff;
-  _command[_index++] = (high_bits >> 16) & 0xff;
-  _command[_index++] = (high_bits >> 24) & 0xff;     
-  // Return command
-  return _command;
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/commands/insert_command.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/insert_command.js b/web/demos/package/node_modules/mongodb/lib/mongodb/commands/insert_command.js
deleted file mode 100644
index c6e51e9..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/insert_command.js
+++ /dev/null
@@ -1,161 +0,0 @@
-var BaseCommand = require('./base_command').BaseCommand,
-  inherits = require('util').inherits;
-
-/**
-  Insert Document Command
-**/
-var InsertCommand = exports.InsertCommand = function(db, collectionName, checkKeys, options) {
-  BaseCommand.call(this);
-
-  this.collectionName = collectionName;
-  this.documents = [];
-  this.checkKeys = checkKeys == null ? true : checkKeys;
-  this.db = db;
-  this.flags = 0;
-  this.serializeFunctions = false;
-
-  // Ensure valid options hash
-  options = options == null ? {} : options;
-
-  // Check if we have keepGoing set -> set flag if it's the case
-  if(options['keepGoing'] != null && options['keepGoing']) {
-    // This will finish inserting all non-index violating documents even if it returns an error
-    this.flags = 1;
-  }
-
-  // Check if we have keepGoing set -> set flag if it's the case
-  if(options['continueOnError'] != null && options['continueOnError']) {
-    // This will finish inserting all non-index violating documents even if it returns an error
-    this.flags = 1;
-  }
-
-  // Let us defined on a command basis if we want functions to be serialized or not
-  if(options['serializeFunctions'] != null && options['serializeFunctions']) {
-    this.serializeFunctions = true;
-  }
-};
-
-inherits(InsertCommand, BaseCommand);
-
-// OpCodes
-InsertCommand.OP_INSERT =	2002;
-
-InsertCommand.prototype.add = function(document) {
-  if(Buffer.isBuffer(document)) {
-    var object_size = document[0] | document[1] << 8 | document[2] << 16 | document[3] << 24;
-    if(object_size != document.length)  {
-      var error = new Error("insert raw message size does not match message header size [" + document.length + "] != [" + object_size + "]");
-      error.name = 'MongoError';
-      throw error;
-    }
-  }
-
-  this.documents.push(document);
-  return this;
-};
-
-/*
-struct {
-    MsgHeader header;             // standard message header
-    int32     ZERO;               // 0 - reserved for future use
-    cstring   fullCollectionName; // "dbname.collectionname"
-    BSON[]    documents;          // one or more documents to insert into the collection
-}
-*/
-InsertCommand.prototype.toBinary = function(bsonSettings) {
-  // Validate that we are not passing 0x00 in the colletion name
-  if(!!~this.collectionName.indexOf("\x00")) {
-    throw new Error("namespace cannot contain a null character");
-  }
-
-  // Calculate total length of the document
-  var totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + (4 * 4);
-  // var docLength = 0
-  for(var i = 0; i < this.documents.length; i++) {
-    if(Buffer.isBuffer(this.documents[i])) {
-      totalLengthOfCommand += this.documents[i].length;
-    } else {
-      // Calculate size of document
-      totalLengthOfCommand += this.db.bson.calculateObjectSize(this.documents[i], this.serializeFunctions, true);
-    }
-  }
-
-  // Enforce maximum bson size
-  if(!bsonSettings.disableDriverBSONSizeCheck 
-    && totalLengthOfCommand > bsonSettings.maxBsonSize) 
-    throw new Error("Document exceeds maximum allowed bson size of " + bsonSettings.maxBsonSize + " bytes");
-
-  if(bsonSettings.disableDriverBSONSizeCheck 
-    && totalLengthOfCommand > bsonSettings.maxMessageSizeBytes) 
-    throw new Error("Command exceeds maximum message size of " + bsonSettings.maxMessageSizeBytes + " bytes");
-
-  // Let's build the single pass buffer command
-  var _index = 0;
-  var _command = new Buffer(totalLengthOfCommand);
-  // Write the header information to the buffer
-  _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff;
-  _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff;
-  _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff;
-  _command[_index] = totalLengthOfCommand & 0xff;
-  // Adjust index
-  _index = _index + 4;
-  // Write the request ID
-  _command[_index + 3] = (this.requestId >> 24) & 0xff;
-  _command[_index + 2] = (this.requestId >> 16) & 0xff;
-  _command[_index + 1] = (this.requestId >> 8) & 0xff;
-  _command[_index] = this.requestId & 0xff;
-  // Adjust index
-  _index = _index + 4;
-  // Write zero
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  // Write the op_code for the command
-  _command[_index + 3] = (InsertCommand.OP_INSERT >> 24) & 0xff;
-  _command[_index + 2] = (InsertCommand.OP_INSERT >> 16) & 0xff;
-  _command[_index + 1] = (InsertCommand.OP_INSERT >> 8) & 0xff;
-  _command[_index] = InsertCommand.OP_INSERT & 0xff;
-  // Adjust index
-  _index = _index + 4;
-  // Write flags if any
-  _command[_index + 3] = (this.flags >> 24) & 0xff;
-  _command[_index + 2] = (this.flags >> 16) & 0xff;
-  _command[_index + 1] = (this.flags >> 8) & 0xff;
-  _command[_index] = this.flags & 0xff;
-  // Adjust index
-  _index = _index + 4;
-  // Write the collection name to the command
-  _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1;
-  _command[_index - 1] = 0;
-
-  // Write all the bson documents to the buffer at the index offset
-  for(var i = 0; i < this.documents.length; i++) {
-    // Document binary length
-    var documentLength = 0
-    var object = this.documents[i];
-
-    // Serialize the selector
-    // If we are passing a raw buffer, do minimal validation
-    if(Buffer.isBuffer(object)) {
-      documentLength = object.length;
-      // Copy the data into the current buffer
-      object.copy(_command, _index);
-    } else {
-      // Serialize the document straight to the buffer
-      documentLength = this.db.bson.serializeWithBufferAndIndex(object, this.checkKeys, _command, _index, this.serializeFunctions) - _index + 1;
-    }
-
-    // Write the length to the document
-    _command[_index + 3] = (documentLength >> 24) & 0xff;
-    _command[_index + 2] = (documentLength >> 16) & 0xff;
-    _command[_index + 1] = (documentLength >> 8) & 0xff;
-    _command[_index] = documentLength & 0xff;
-    // Update index in buffer
-    _index = _index + documentLength;
-    // Add terminating 0 for the object
-    _command[_index - 1] = 0;
-  }
-
-  return _command;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/commands/kill_cursor_command.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/kill_cursor_command.js b/web/demos/package/node_modules/mongodb/lib/mongodb/commands/kill_cursor_command.js
deleted file mode 100644
index d8ccb0c..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/kill_cursor_command.js
+++ /dev/null
@@ -1,98 +0,0 @@
-var BaseCommand = require('./base_command').BaseCommand,
-  inherits = require('util').inherits,
-  binaryutils = require('../utils');
-
-/**
-  Insert Document Command
-**/
-var KillCursorCommand = exports.KillCursorCommand = function(db, cursorIds) {
-  BaseCommand.call(this);
-
-  this.cursorIds = cursorIds;
-  this.db = db;
-};
-
-inherits(KillCursorCommand, BaseCommand);
-
-KillCursorCommand.OP_KILL_CURSORS = 2007;
-
-/*
-struct {
-    MsgHeader header;                 // standard message header
-    int32     ZERO;                   // 0 - reserved for future use
-    int32     numberOfCursorIDs;      // number of cursorIDs in message
-    int64[]   cursorIDs;                // array of cursorIDs to close
-}
-*/
-KillCursorCommand.prototype.toBinary = function() {
-  // Calculate total length of the document
-  var totalLengthOfCommand = 4 + 4 + (4 * 4) + (this.cursorIds.length * 8);
-  // Let's build the single pass buffer command
-  var _index = 0;
-  var _command = new Buffer(totalLengthOfCommand);
-  // Write the header information to the buffer
-  _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff;     
-  _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff;
-  _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff;
-  _command[_index] = totalLengthOfCommand & 0xff;
-  // Adjust index
-  _index = _index + 4;
-  // Write the request ID
-  _command[_index + 3] = (this.requestId >> 24) & 0xff;     
-  _command[_index + 2] = (this.requestId >> 16) & 0xff;
-  _command[_index + 1] = (this.requestId >> 8) & 0xff;
-  _command[_index] = this.requestId & 0xff;
-  // Adjust index
-  _index = _index + 4;
-  // Write zero
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  // Write the op_code for the command
-  _command[_index + 3] = (KillCursorCommand.OP_KILL_CURSORS >> 24) & 0xff;     
-  _command[_index + 2] = (KillCursorCommand.OP_KILL_CURSORS >> 16) & 0xff;
-  _command[_index + 1] = (KillCursorCommand.OP_KILL_CURSORS >> 8) & 0xff;
-  _command[_index] = KillCursorCommand.OP_KILL_CURSORS & 0xff;
-  // Adjust index
-  _index = _index + 4;
-
-  // Write zero
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-
-  // Number of cursors to kill
-  var numberOfCursors = this.cursorIds.length;
-  _command[_index + 3] = (numberOfCursors >> 24) & 0xff;     
-  _command[_index + 2] = (numberOfCursors >> 16) & 0xff;
-  _command[_index + 1] = (numberOfCursors >> 8) & 0xff;
-  _command[_index] = numberOfCursors & 0xff;
-  // Adjust index
-  _index = _index + 4;
-
-  // Encode all the cursors
-  for(var i = 0; i < this.cursorIds.length; i++) {
-    // Encode the cursor id
-    var low_bits = this.cursorIds[i].getLowBits();
-    // Encode low bits
-    _command[_index + 3] = (low_bits >> 24) & 0xff;     
-    _command[_index + 2] = (low_bits >> 16) & 0xff;
-    _command[_index + 1] = (low_bits >> 8) & 0xff;
-    _command[_index] = low_bits & 0xff;
-    // Adjust index
-    _index = _index + 4;
-      
-    var high_bits = this.cursorIds[i].getHighBits();
-    // Encode high bits
-    _command[_index + 3] = (high_bits >> 24) & 0xff;     
-    _command[_index + 2] = (high_bits >> 16) & 0xff;
-    _command[_index + 1] = (high_bits >> 8) & 0xff;
-    _command[_index] = high_bits & 0xff;
-    // Adjust index
-    _index = _index + 4;
-  }
-  
-  return _command;
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/commands/query_command.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/query_command.js b/web/demos/package/node_modules/mongodb/lib/mongodb/commands/query_command.js
deleted file mode 100644
index 1218206..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/query_command.js
+++ /dev/null
@@ -1,283 +0,0 @@
-var BaseCommand = require('./base_command').BaseCommand,
-  inherits = require('util').inherits;
-
-/**
-  Insert Document Command
-**/
-var QueryCommand = exports.QueryCommand = function(db, collectionName, queryOptions, numberToSkip, numberToReturn, query, returnFieldSelector, options) {
-  BaseCommand.call(this);
-
-  // Validate correctness off the selector
-  var object = query,
-    object_size;
-  if(Buffer.isBuffer(object)) {
-    object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24;
-    if(object_size != object.length) {
-      var error = new Error("query selector raw message size does not match message header size [" + object.length + "] != [" + object_size + "]");
-      error.name = 'MongoError';
-      throw error;
-    }
-  }
-
-  object = returnFieldSelector;
-  if(Buffer.isBuffer(object)) {
-    object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24;
-    if(object_size != object.length) {
-      var error = new Error("query fields raw message size does not match message header size [" + object.length + "] != [" + object_size + "]");
-      error.name = 'MongoError';
-      throw error;
-    }
-  }
-
-  // Make sure we don't get a null exception
-  options = options == null ? {} : options;
-  // Set up options
-  this.collectionName = collectionName;
-  this.queryOptions = queryOptions;
-  this.numberToSkip = numberToSkip;
-  this.numberToReturn = numberToReturn;
-
-  // Ensure we have no null query
-  query = query == null ? {} : query;
-  // Wrap query in the $query parameter so we can add read preferences for mongos
-  this.query = query;
-  this.returnFieldSelector = returnFieldSelector;
-  this.db = db;
-
-  // Force the slave ok flag to be set if we are not using primary read preference
-  if(this.db && this.db.slaveOk) {
-    this.queryOptions |= QueryCommand.OPTS_SLAVE;
-  }
-
-  // If checkKeys set
-  this.checkKeys = typeof options.checkKeys == 'boolean' ? options.checkKeys : false;
-
-  // Let us defined on a command basis if we want functions to be serialized or not
-  if(options['serializeFunctions'] != null && options['serializeFunctions']) {
-    this.serializeFunctions = true;
-  }
-};
-
-inherits(QueryCommand, BaseCommand);
-
-QueryCommand.OP_QUERY = 2004;
-
-/*
- * Adds the read prefrence to the current command
- */
-QueryCommand.prototype.setMongosReadPreference = function(readPreference, tags) {
-  // If we have readPreference set to true set to secondary prefered
-  if(readPreference == true) {
-    readPreference = 'secondaryPreferred';
-  } else if(readPreference == 'false') {
-    readPreference = 'primary';
-  }
-
-  // Force the slave ok flag to be set if we are not using primary read preference
-  if(readPreference != false && readPreference != 'primary') {
-    this.queryOptions |= QueryCommand.OPTS_SLAVE;
-  }
-
-  // Backward compatibility, ensure $query only set on read preference so 1.8.X works
-  if((readPreference != null || tags != null) && this.query['$query'] == null) {
-    this.query = {'$query': this.query};
-  }
-
-  // If we have no readPreference set and no tags, check if the slaveOk bit is set
-  if(readPreference == null && tags == null) {
-    // If we have a slaveOk bit set the read preference for MongoS
-    if(this.queryOptions & QueryCommand.OPTS_SLAVE) {
-      this.query['$readPreference'] = {mode: 'secondary'}
-    } else {
-      this.query['$readPreference'] = {mode: 'primary'}
-    }
-  }
-
-  // Build read preference object
-  if(typeof readPreference == 'object' && readPreference['_type'] == 'ReadPreference') {
-    this.query['$readPreference'] = readPreference.toObject();
-  } else if(readPreference != null) {
-    // Add the read preference
-    this.query['$readPreference'] = {mode: readPreference};
-
-    // If we have tags let's add them
-    if(tags != null) {
-      this.query['$readPreference']['tags'] = tags;
-    }
-  }
-}
-
-/*
-struct {
-    MsgHeader header;                 // standard message header
-    int32     opts;                   // query options.  See below for details.
-    cstring   fullCollectionName;     // "dbname.collectionname"
-    int32     numberToSkip;           // number of documents to skip when returning results
-    int32     numberToReturn;         // number of documents to return in the first OP_REPLY
-    BSON      query ;                 // query object.  See below for details.
-  [ BSON      returnFieldSelector; ]  // OPTIONAL : selector indicating the fields to return.  See below for details.
-}
-*/
-QueryCommand.prototype.toBinary = function(bsonSettings) {
-  // Validate that we are not passing 0x00 in the colletion name
-  if(!!~this.collectionName.indexOf("\x00")) {
-    throw new Error("namespace cannot contain a null character");
-  }
-
-  // Total length of the command
-  var totalLengthOfCommand = 0;
-  // Calculate total length of the document
-  if(Buffer.isBuffer(this.query)) {
-    totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + 4 + this.query.length + (4 * 4);
-  } else {
-    totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + 4 + this.db.bson.calculateObjectSize(this.query, this.serializeFunctions, true) + (4 * 4);
-  }
-
-  // Calculate extra fields size
-  if(this.returnFieldSelector != null && !(Buffer.isBuffer(this.returnFieldSelector)))  {
-    if(Object.keys(this.returnFieldSelector).length > 0) {
-      totalLengthOfCommand += this.db.bson.calculateObjectSize(this.returnFieldSelector, this.serializeFunctions, true);
-    }
-  } else if(Buffer.isBuffer(this.returnFieldSelector)) {
-    totalLengthOfCommand += this.returnFieldSelector.length;
-  }
-
-  // Enforce maximum bson size
-  if(!bsonSettings.disableDriverBSONSizeCheck 
-    && totalLengthOfCommand > bsonSettings.maxBsonSize) 
-    throw new Error("Document exceeds maximum allowed bson size of " + bsonSettings.maxBsonSize + " bytes");
-
-  if(bsonSettings.disableDriverBSONSizeCheck 
-    && totalLengthOfCommand > bsonSettings.maxMessageSizeBytes) 
-    throw new Error("Command exceeds maximum message size of " + bsonSettings.maxMessageSizeBytes + " bytes");
-
-  // Let's build the single pass buffer command
-  var _index = 0;
-  var _command = new Buffer(totalLengthOfCommand);
-  // Write the header information to the buffer
-  _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff;
-  _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff;
-  _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff;
-  _command[_index] = totalLengthOfCommand & 0xff;
-  // Adjust index
-  _index = _index + 4;
-  // Write the request ID
-  _command[_index + 3] = (this.requestId >> 24) & 0xff;
-  _command[_index + 2] = (this.requestId >> 16) & 0xff;
-  _command[_index + 1] = (this.requestId >> 8) & 0xff;
-  _command[_index] = this.requestId & 0xff;
-  // Adjust index
-  _index = _index + 4;
-  // Write zero
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  // Write the op_code for the command
-  _command[_index + 3] = (QueryCommand.OP_QUERY >> 24) & 0xff;
-  _command[_index + 2] = (QueryCommand.OP_QUERY >> 16) & 0xff;
-  _command[_index + 1] = (QueryCommand.OP_QUERY >> 8) & 0xff;
-  _command[_index] = QueryCommand.OP_QUERY & 0xff;
-  // Adjust index
-  _index = _index + 4;
-
-  // Write the query options
-  _command[_index + 3] = (this.queryOptions >> 24) & 0xff;
-  _command[_index + 2] = (this.queryOptions >> 16) & 0xff;
-  _command[_index + 1] = (this.queryOptions >> 8) & 0xff;
-  _command[_index] = this.queryOptions & 0xff;
-  // Adjust index
-  _index = _index + 4;
-
-  // Write the collection name to the command
-  _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1;
-  _command[_index - 1] = 0;
-
-  // Write the number of documents to skip
-  _command[_index + 3] = (this.numberToSkip >> 24) & 0xff;
-  _command[_index + 2] = (this.numberToSkip >> 16) & 0xff;
-  _command[_index + 1] = (this.numberToSkip >> 8) & 0xff;
-  _command[_index] = this.numberToSkip & 0xff;
-  // Adjust index
-  _index = _index + 4;
-
-  // Write the number of documents to return
-  _command[_index + 3] = (this.numberToReturn >> 24) & 0xff;
-  _command[_index + 2] = (this.numberToReturn >> 16) & 0xff;
-  _command[_index + 1] = (this.numberToReturn >> 8) & 0xff;
-  _command[_index] = this.numberToReturn & 0xff;
-  // Adjust index
-  _index = _index + 4;
-
-  // Document binary length
-  var documentLength = 0
-  var object = this.query;
-
-  // Serialize the selector
-  if(Buffer.isBuffer(object)) {
-    documentLength = object.length;
-    // Copy the data into the current buffer
-    object.copy(_command, _index);
-  } else {
-    // Serialize the document straight to the buffer
-    documentLength = this.db.bson.serializeWithBufferAndIndex(object, this.checkKeys, _command, _index, this.serializeFunctions) - _index + 1;
-  }
-
-  // Write the length to the document
-  _command[_index + 3] = (documentLength >> 24) & 0xff;
-  _command[_index + 2] = (documentLength >> 16) & 0xff;
-  _command[_index + 1] = (documentLength >> 8) & 0xff;
-  _command[_index] = documentLength & 0xff;
-  // Update index in buffer
-  _index = _index + documentLength;
-  // Add terminating 0 for the object
-  _command[_index - 1] = 0;
-
-  // Push field selector if available
-  if(this.returnFieldSelector != null && !(Buffer.isBuffer(this.returnFieldSelector)))  {
-    if(Object.keys(this.returnFieldSelector).length > 0) {
-      var documentLength = this.db.bson.serializeWithBufferAndIndex(this.returnFieldSelector, this.checkKeys, _command, _index, this.serializeFunctions) - _index + 1;
-      // Write the length to the document
-      _command[_index + 3] = (documentLength >> 24) & 0xff;
-      _command[_index + 2] = (documentLength >> 16) & 0xff;
-      _command[_index + 1] = (documentLength >> 8) & 0xff;
-      _command[_index] = documentLength & 0xff;
-      // Update index in buffer
-      _index = _index + documentLength;
-      // Add terminating 0 for the object
-      _command[_index - 1] = 0;
-    }
-  } if(this.returnFieldSelector != null && Buffer.isBuffer(this.returnFieldSelector))  {
-    // Document binary length
-    var documentLength = 0
-    var object = this.returnFieldSelector;
-
-    // Serialize the selector
-    documentLength = object.length;
-    // Copy the data into the current buffer
-    object.copy(_command, _index);
-
-    // Write the length to the document
-    _command[_index + 3] = (documentLength >> 24) & 0xff;
-    _command[_index + 2] = (documentLength >> 16) & 0xff;
-    _command[_index + 1] = (documentLength >> 8) & 0xff;
-    _command[_index] = documentLength & 0xff;
-    // Update index in buffer
-    _index = _index + documentLength;
-    // Add terminating 0 for the object
-    _command[_index - 1] = 0;
-  }
-
-  // Return finished command
-  return _command;
-};
-
-// Constants
-QueryCommand.OPTS_NONE = 0;
-QueryCommand.OPTS_TAILABLE_CURSOR = 2;
-QueryCommand.OPTS_SLAVE = 4;
-QueryCommand.OPTS_OPLOG_REPLAY = 8;
-QueryCommand.OPTS_NO_CURSOR_TIMEOUT = 16;
-QueryCommand.OPTS_AWAIT_DATA = 32;
-QueryCommand.OPTS_EXHAUST = 64;
-QueryCommand.OPTS_PARTIAL = 128;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/commands/update_command.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/update_command.js b/web/demos/package/node_modules/mongodb/lib/mongodb/commands/update_command.js
deleted file mode 100644
index daa3cba..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/commands/update_command.js
+++ /dev/null
@@ -1,189 +0,0 @@
-var BaseCommand = require('./base_command').BaseCommand,
-  inherits = require('util').inherits;
-
-/**
-  Update Document Command
-**/
-var UpdateCommand = exports.UpdateCommand = function(db, collectionName, spec, document, options) {
-  BaseCommand.call(this);
-
-  var object = spec;
-  if(Buffer.isBuffer(object)) {
-    var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24;    
-    if(object_size != object.length)  {
-      var error = new Error("update spec raw message size does not match message header size [" + object.length + "] != [" + object_size + "]");
-      error.name = 'MongoError';
-      throw error;
-    }
-  }
-
-  var object = document;
-  if(Buffer.isBuffer(object)) {
-    var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24;    
-    if(object_size != object.length)  {
-      var error = new Error("update document raw message size does not match message header size [" + object.length + "] != [" + object_size + "]");
-      error.name = 'MongoError';
-      throw error;
-    }
-  }
-
-  this.collectionName = collectionName;
-  this.spec = spec;
-  this.document = document;
-  this.db = db;
-  this.serializeFunctions = false;
-  this.checkKeys = typeof options.checkKeys != 'boolean' ? false : options.checkKeys;
-
-  // Generate correct flags
-  var db_upsert = 0;
-  var db_multi_update = 0;
-  db_upsert = options != null && options['upsert'] != null ? (options['upsert'] == true ? 1 : 0) : db_upsert;
-  db_multi_update = options != null && options['multi'] != null ? (options['multi'] == true ? 1 : 0) : db_multi_update;
-
-  // Flags
-  this.flags = parseInt(db_multi_update.toString() + db_upsert.toString(), 2);
-  // Let us defined on a command basis if we want functions to be serialized or not
-  if(options['serializeFunctions'] != null && options['serializeFunctions']) {
-    this.serializeFunctions = true;
-  }
-};
-
-inherits(UpdateCommand, BaseCommand);
-
-UpdateCommand.OP_UPDATE = 2001;
-
-/*
-struct {
-    MsgHeader header;             // standard message header
-    int32     ZERO;               // 0 - reserved for future use
-    cstring   fullCollectionName; // "dbname.collectionname"
-    int32     flags;              // bit vector. see below
-    BSON      spec;               // the query to select the document
-    BSON      document;           // the document data to update with or insert
-}
-*/
-UpdateCommand.prototype.toBinary = function(bsonSettings) {
-  // Validate that we are not passing 0x00 in the colletion name
-  if(!!~this.collectionName.indexOf("\x00")) {
-    throw new Error("namespace cannot contain a null character");
-  }
-
-  // Calculate total length of the document
-  var totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + this.db.bson.calculateObjectSize(this.spec, false, true) +
-      this.db.bson.calculateObjectSize(this.document, this.serializeFunctions, true) + (4 * 4);
-
-  // Enforce maximum bson size
-  if(!bsonSettings.disableDriverBSONSizeCheck 
-    && totalLengthOfCommand > bsonSettings.maxBsonSize) 
-    throw new Error("Document exceeds maximum allowed bson size of " + bsonSettings.maxBsonSize + " bytes");
-
-  if(bsonSettings.disableDriverBSONSizeCheck 
-    && totalLengthOfCommand > bsonSettings.maxMessageSizeBytes) 
-    throw new Error("Command exceeds maximum message size of " + bsonSettings.maxMessageSizeBytes + " bytes");
-
-  // Let's build the single pass buffer command
-  var _index = 0;
-  var _command = new Buffer(totalLengthOfCommand);
-  // Write the header information to the buffer
-  _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff;     
-  _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff;
-  _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff;
-  _command[_index] = totalLengthOfCommand & 0xff;
-  // Adjust index
-  _index = _index + 4;
-  // Write the request ID
-  _command[_index + 3] = (this.requestId >> 24) & 0xff;     
-  _command[_index + 2] = (this.requestId >> 16) & 0xff;
-  _command[_index + 1] = (this.requestId >> 8) & 0xff;
-  _command[_index] = this.requestId & 0xff;
-  // Adjust index
-  _index = _index + 4;
-  // Write zero
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  // Write the op_code for the command
-  _command[_index + 3] = (UpdateCommand.OP_UPDATE >> 24) & 0xff;     
-  _command[_index + 2] = (UpdateCommand.OP_UPDATE >> 16) & 0xff;
-  _command[_index + 1] = (UpdateCommand.OP_UPDATE >> 8) & 0xff;
-  _command[_index] = UpdateCommand.OP_UPDATE & 0xff;
-  // Adjust index
-  _index = _index + 4;
-
-  // Write zero
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-  _command[_index++] = 0;
-
-  // Write the collection name to the command
-  _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1;
-  _command[_index - 1] = 0;    
-
-  // Write the update flags
-  _command[_index + 3] = (this.flags >> 24) & 0xff;     
-  _command[_index + 2] = (this.flags >> 16) & 0xff;
-  _command[_index + 1] = (this.flags >> 8) & 0xff;
-  _command[_index] = this.flags & 0xff;
-  // Adjust index
-  _index = _index + 4;
-
-  // Document binary length
-  var documentLength = 0
-  var object = this.spec;
-
-  // Serialize the selector
-  // If we are passing a raw buffer, do minimal validation
-  if(Buffer.isBuffer(object)) {
-    var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24;
-    if(object_size != object.length) throw new Error("raw message size does not match message header size [" + object.length + "] != [" + object_size + "]");
-    documentLength = object.length;
-    // Copy the data into the current buffer
-    object.copy(_command, _index);
-  } else {
-    documentLength = this.db.bson.serializeWithBufferAndIndex(object, this.checkKeys, _command, _index, false) - _index + 1;
-  }
-
-  // Write the length to the document
-  _command[_index + 3] = (documentLength >> 24) & 0xff;     
-  _command[_index + 2] = (documentLength >> 16) & 0xff;
-  _command[_index + 1] = (documentLength >> 8) & 0xff;
-  _command[_index] = documentLength & 0xff;
-  // Update index in buffer
-  _index = _index + documentLength;
-  // Add terminating 0 for the object
-  _command[_index - 1] = 0;    
-
-  // Document binary length
-  var documentLength = 0
-  var object = this.document;
-
-  // Serialize the document
-  // If we are passing a raw buffer, do minimal validation
-  if(Buffer.isBuffer(object)) {
-    var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24;
-    if(object_size != object.length) throw new Error("raw message size does not match message header size [" + object.length + "] != [" + object_size + "]");
-    documentLength = object.length;
-    // Copy the data into the current buffer
-    object.copy(_command, _index);
-  } else {    
-    documentLength = this.db.bson.serializeWithBufferAndIndex(object, false, _command, _index, this.serializeFunctions) - _index + 1;
-  }
-
-  // Write the length to the document
-  _command[_index + 3] = (documentLength >> 24) & 0xff;     
-  _command[_index + 2] = (documentLength >> 16) & 0xff;
-  _command[_index + 1] = (documentLength >> 8) & 0xff;
-  _command[_index] = documentLength & 0xff;
-  // Update index in buffer
-  _index = _index + documentLength;
-  // Add terminating 0 for the object
-  _command[_index - 1] = 0;    
-
-  return _command;
-};
-
-// Constants
-UpdateCommand.DB_UPSERT = 0;
-UpdateCommand.DB_MULTI_UPDATE = 1;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/base.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/base.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/base.js
deleted file mode 100644
index 8fbeabf..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/base.js
+++ /dev/null
@@ -1,504 +0,0 @@
-var EventEmitter = require('events').EventEmitter
-  , inherits = require('util').inherits
-  , utils = require('../utils')
-  , mongodb_cr_authenticate = require('../auth/mongodb_cr.js').authenticate
-  , mongodb_gssapi_authenticate = require('../auth/mongodb_gssapi.js').authenticate
-  , mongodb_sspi_authenticate = require('../auth/mongodb_sspi.js').authenticate
-  , mongodb_plain_authenticate = require('../auth/mongodb_plain.js').authenticate
-  , mongodb_x509_authenticate = require('../auth/mongodb_x509.js').authenticate;
-
-var id = 0;
-
-/**
- * Internal class for callback storage
- * @ignore
- */
-var CallbackStore = function() {
-  // Make class an event emitter
-  EventEmitter.call(this);
-  // Add a info about call variable
-  this._notReplied = {};
-  this.id = id++;
-}
-
-/**
- * @ignore
- */
-inherits(CallbackStore, EventEmitter);
-
-CallbackStore.prototype.notRepliedToIds = function() {
-  return Object.keys(this._notReplied);
-}
-
-CallbackStore.prototype.callbackInfo = function(id) {
-  return this._notReplied[id]; 
-}
-
-/**
- * Internal class for holding non-executed commands
- * @ignore
- */
-var NonExecutedOperationStore = function(config) {  
-  var commands = {
-      read: []
-    , write_reads: []
-    , write: []
-  };
-
-  // Execute all callbacks
-  var fireCallbacksWithError = function(error, commands) {
-    while(commands.length > 0) {
-      var command = commands.shift();
-      if(typeof command.callback == 'function') {
-        command.callback(error);        
-      }
-    }
-  }
-
-  this.count = function() {
-    return commands.read.length
-      + commands.write_reads.length
-      + commands.write.length;
-  }
-
-  this.write = function(op) {
-    commands.write.push(op);
-  }  
-
-  this.read_from_writer = function(op) {  
-    commands.write_reads.push(op);
-  }
-
-  this.read = function(op) {  
-    commands.read.push(op);
-  }  
-
-  this.validateBufferLimit = function(numberToFailOn) {
-    if(numberToFailOn == -1 || numberToFailOn == null) 
-      return true;
-
-    // Error passed back
-    var error = utils.toError("No connection operations buffering limit of " + numberToFailOn + " reached");
-
-    // If we have passed the number of items to buffer we need to fail
-    if(numberToFailOn < this.count()) {
-      // Fail all of the callbacks
-      fireCallbacksWithError(error, commands.read);
-      fireCallbacksWithError(error, commands.write_reads);
-      fireCallbacksWithError(error, commands.write);
-    }
-
-    // Return false
-    return false;
-  }
-
-  this.execute_queries = function(executeInsertCommand) {
-    var connection = config.checkoutReader();
-    if(connection == null || connection instanceof Error) return;
-
-    // Write out all the queries
-    while(commands.read.length > 0) {
-      // Get the next command
-      var command = commands.read.shift();
-      command.options.connection = connection;
-      // Execute the next command
-      command.executeQueryCommand(command.db, command.db_command, command.options, command.callback);
-    }
-  }
-
-  this.execute_writes = function() {
-    var connection = config.checkoutWriter();
-    if(connection == null || connection instanceof Error) return;
-
-    // Write out all the queries to the primary
-    while(commands.write_reads.length > 0) {
-      // Get the next command
-      var command = commands.write_reads.shift();
-      command.options.connection = connection;
-      // Execute the next command
-      command.executeQueryCommand(command.db, command.db_command, command.options, command.callback);
-    }
-
-    // Execute all write operations
-    while(commands.write.length > 0) {
-      // Get the next command
-      var command = commands.write.shift();
-      // Set the connection
-      command.options.connection = connection;
-      // Execute the next command
-      command.executeInsertCommand(command.db, command.db_command, command.options, command.callback);
-    }  
-  }
-}
-
-/**
- * Internal class for authentication storage
- * @ignore
- */
-var AuthStore = function() {
-  var _auths = [];
-
-  this.add = function(authMechanism, dbName, username, password, authdbName, gssapiServiceName) {
-    // Check for duplicates
-    if(!this.contains(dbName)) {
-      // Base config
-      var config = {
-          'username':username
-        , 'password':password
-        , 'db': dbName
-        , 'authMechanism': authMechanism
-        , 'gssapiServiceName': gssapiServiceName
-      };
-
-      // Add auth source if passed in
-      if(typeof authdbName == 'string') {
-        config['authdb'] = authdbName;
-      }
-
-      // Push the config
-      _auths.push(config);
-    }
-  }  
-
-  this.contains = function(dbName) {
-    for(var i = 0; i < _auths.length; i++) {
-      if(_auths[i].db == dbName) return true;
-    }
-
-    return false;
-  }
-
-  this.remove = function(dbName) {
-    var newAuths = [];
-
-    // Filter out all the login details
-    for(var i = 0; i < _auths.length; i++) {
-      if(_auths[i].db != dbName) newAuths.push(_auths[i]);
-    }
-
-    //  Set the filtered list
-    _auths = newAuths;
-  }
-
-  this.get = function(index) {
-    return _auths[index];
-  }
-
-  this.length = function() {
-    return _auths.length;
-  }
-
-  this.toArray = function() {
-    return _auths.slice(0);
-  }
-}
-
-/**
- * Internal class for storing db references
- * @ignore
- */
-var DbStore = function() {
-  var _dbs = [];
-
-  this.add = function(db) {
-    var found = false;
-    
-    // Only add if it does not exist already
-    for(var i = 0; i < _dbs.length; i++) {
-      if(db.databaseName == _dbs[i].databaseName) found = true;
-    }
-
-    // Only add if it does not already exist
-    if(!found) {
-      _dbs.push(db);    
-    } 
-  }
-
-  this.reset = function() {
-    _dbs = [];
-  }
-
-  this.db = function() {
-    return _dbs;
-  }
-
-  this.fetch = function(databaseName) {
-    // Only add if it does not exist already
-    for(var i = 0; i < _dbs.length; i++) {
-      if(databaseName == _dbs[i].databaseName)
-        return _dbs[i];
-    }  
-
-    return null;
-  }
-
-  this.emit = function(event, message, object, reset, filterDb, rethrow_if_no_listeners) {
-    var emitted = false;
-
-    // Not emitted and we have enabled rethrow, let process.uncaughtException
-    // deal with the issue
-    if(!emitted && rethrow_if_no_listeners) {
-      return process.nextTick(function() {
-        throw message;      
-      })
-    }
-
-    // Emit the events
-    for(var i = 0; i < _dbs.length; i++) {    
-      if(_dbs[i].listeners(event).length > 0) {
-        if(filterDb == null || filterDb.databaseName !== _dbs[i].databaseName 
-          || filterDb.tag !== _dbs[i].tag) {
-          _dbs[i].emit(event, message, object == null ? _dbs[i] : object);
-          emitted = true;
-        }
-      }
-    }
-
-    // Emit error message
-    if(message 
-      && event == 'error' 
-      && !emitted
-      && rethrow_if_no_listeners 
-      && object && object.db) {
-        process.nextTick(function() {
-          object.db.emit(event, message, null);      
-        })
-    }
-  }
-}
-
-var Base = function Base() {  
-  EventEmitter.call(this);
-
-  // Callback store is part of connection specification
-  if(Base._callBackStore == null) {
-    Base._callBackStore = new CallbackStore();
-  }
-
-  // Create a new callback store  
-  this._callBackStore = new CallbackStore();
-  // All commands not being executed
-  this._commandsStore = new NonExecutedOperationStore(this);
-  // Create a new auth store
-  this.auth = new AuthStore();
-  // Contains all the dbs attached to this server config
-  this._dbStore = new DbStore();
-}
-
-/**
- * @ignore
- */
-inherits(Base, EventEmitter);
-
-/**
- * @ignore
- */
-Base.prototype._apply_auths = function(db, callback) {
-  _apply_auths_serially(this, db, this.auth.toArray(), callback);
-}
-
-var _apply_auths_serially = function(self, db, auths, callback) {
-  if(auths.length == 0) return callback(null, null);
-  // Get the first auth
-  var auth = auths.shift();
-  var connections = self.allRawConnections();
-  var connectionsLeft = connections.length;
-  var options = {};
-
-  if(auth.authMechanism == 'GSSAPI') {
-    // We have the kerberos library, execute auth process
-    if(process.platform == 'win32') {
-      mongodb_sspi_authenticate(db, auth.username, auth.password, auth.authdb, options, callback);
-    } else {
-      mongodb_gssapi_authenticate(db, auth.username, auth.password, auth.authdb, options, callback);
-    }
-  } else if(auth.authMechanism == 'MONGODB-CR') {
-    mongodb_cr_authenticate(db, auth.username, auth.password, auth.authdb, options, callback);
-  } else if(auth.authMechanism == 'PLAIN') {
-    mongodb_plain_authenticate(db, auth.username, auth.password, auth.authdb, options, callback);
-  } else if(auth.authMechanism == 'MONGODB-X509') {
-    mongodb_x509_authenticate(db, auth.username, auth.password, auth.authdb, options, callback);
-  }
-}
-
-/**
- * Fire all the errors
- * @ignore
- */
-Base.prototype.__executeAllCallbacksWithError = function(err) {
-  // Check all callbacks
-  var keys = Object.keys(this._callBackStore._notReplied);
-  // For each key check if it's a callback that needs to be returned
-  for(var j = 0; j < keys.length; j++) {
-    var info = this._callBackStore._notReplied[keys[j]];
-    // Execute callback with error
-    this._callBackStore.emit(keys[j], err, null);
-    // Remove the key
-    delete this._callBackStore._notReplied[keys[j]];
-    // Force cleanup _events, node.js seems to set it as a null value
-    if(this._callBackStore._events) {
-      delete this._callBackStore._events[keys[j]];
-    }
-  }
-}
-
-/**
- * Fire all the errors
- * @ignore
- */
-Base.prototype.__executeAllServerSpecificErrorCallbacks = function(host, port, err) {  
-  // Check all callbacks
-  var keys = Object.keys(this._callBackStore._notReplied);
-  // For each key check if it's a callback that needs to be returned
-  for(var j = 0; j < keys.length; j++) {
-    var info = this._callBackStore._notReplied[keys[j]];
-
-    if(info.connection) {
-      // Unpack the connection settings
-      var _host = info.connection.socketOptions.host;
-      var _port = info.connection.socketOptions.port;
-      // If the server matches execute the callback with the error
-      if(_port == port && _host == host) {
-        this._callBackStore.emit(keys[j], err, null);
-        // Remove the key
-        delete this._callBackStore._notReplied[keys[j]];
-        // Force cleanup _events, node.js seems to set it as a null value
-        if(this._callBackStore._events) {
-          delete this._callBackStore._events[keys[j]];
-        } 
-      }      
-    }
-  }
-}
-
-/**
- * Register a handler
- * @ignore
- * @api private
- */
-Base.prototype._registerHandler = function(db_command, raw, connection, exhaust, callback) {
-  // Check if we have exhausted
-  if(typeof exhaust == 'function') {
-    callback = exhaust;
-    exhaust = false;
-  }
-
-  // Add the callback to the list of handlers
-  this._callBackStore.once(db_command.getRequestId(), callback);
-  // Add the information about the reply
-  this._callBackStore._notReplied[db_command.getRequestId().toString()] = {start: new Date().getTime(), 'raw': raw, connection:connection, exhaust:exhaust};
-}
-
-/**
- * Re-Register a handler, on the cursor id f.ex
- * @ignore
- * @api private
- */
-Base.prototype._reRegisterHandler = function(newId, object, callback) {
-  // Add the callback to the list of handlers
-  this._callBackStore.once(newId, object.callback.listener);
-  // Add the information about the reply
-  this._callBackStore._notReplied[newId] = object.info;
-}
-
-/**
- *
- * @ignore
- * @api private
- */
-Base.prototype._flushAllCallHandlers = function(err) {
-  var keys = Object.keys(this._callBackStore._notReplied);
-
-  for(var i = 0; i < keys.length; i++) {
-    this._callHandler(keys[i], null, err);
-  }
-}
-
-/**
- *
- * @ignore
- * @api private
- */
-Base.prototype._callHandler = function(id, document, err) {
-  var self = this;
-
-  // If there is a callback peform it
-  if(this._callBackStore.listeners(id).length >= 1) {
-    // Get info object
-    var info = this._callBackStore._notReplied[id];
-    // Delete the current object
-    delete this._callBackStore._notReplied[id]; 
-    // Call the handle directly don't emit
-    var callback = this._callBackStore.listeners(id)[0].listener;
-    // Remove the listeners
-    this._callBackStore.removeAllListeners(id);
-    // Force key deletion because it nulling it not deleting in 0.10.X
-    if(this._callBackStore._events) {
-      delete this._callBackStore._events[id];
-    }
-
-    try {
-      // Execute the callback if one was provided
-      if(typeof callback == 'function') callback(err, document, info.connection);
-    } catch(err) {
-      self._emitAcrossAllDbInstances(self, null, "error", utils.toError(err), self, true, true);
-    }
-  }
-}
-
-/**
- *
- * @ignore
- * @api private
- */
-Base.prototype._hasHandler = function(id) {
-  return this._callBackStore.listeners(id).length >= 1;
-}
-
-/**
- *
- * @ignore
- * @api private
- */
-Base.prototype._removeHandler = function(id) {
-  // Remove the information
-  if(this._callBackStore._notReplied[id] != null) delete this._callBackStore._notReplied[id];
-  // Remove the callback if it's registered
-  this._callBackStore.removeAllListeners(id);
-  // Force cleanup _events, node.js seems to set it as a null value
-  if(this._callBackStore._events) {
-    delete this._callBackStore._events[id];
-  }
-}
-
-/**
- *
- * @ignore
- * @api private
- */
-Base.prototype._findHandler = function(id) {
-  var info = this._callBackStore._notReplied[id];
-  // Return the callback
-  return {info:info, callback:(this._callBackStore.listeners(id).length >= 1) ? this._callBackStore.listeners(id)[0] : null}
-}
-
-/**
- *
- * @ignore
- * @api private
- */
-Base.prototype._emitAcrossAllDbInstances = function(server, filterDb, event, message, object, resetConnection, rethrow_if_no_listeners) {
-  if(resetConnection) {
-    var dbs = this._dbStore.db();
-
-    for(var i = 0; i < dbs.length; i++) {
-      if(typeof dbs[i].openCalled != 'undefined')
-        dbs[i].openCalled = false;
-    }
-  }
-  
-  // Fire event
-  this._dbStore.emit(event, message, object, resetConnection, filterDb, rethrow_if_no_listeners);
-}
-
-exports.Base = Base;
\ No newline at end of file


[04/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.js b/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.js
deleted file mode 100644
index c3d2dc7..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.js
+++ /dev/null
@@ -1,2476 +0,0 @@
-var isCommonJS = typeof window == "undefined";
-
-/**
- * Top level namespace for Jasmine, a lightweight JavaScript BDD/spec/testing framework.
- *
- * @namespace
- */
-var jasmine = {};
-if (isCommonJS) exports.jasmine = jasmine;
-/**
- * @private
- */
-jasmine.unimplementedMethod_ = function() {
-  throw new Error("unimplemented method");
-};
-
-/**
- * Use <code>jasmine.undefined</code> instead of <code>undefined</code>, since <code>undefined</code> is just
- * a plain old variable and may be redefined by somebody else.
- *
- * @private
- */
-jasmine.undefined = jasmine.___undefined___;
-
-/**
- * Show diagnostic messages in the console if set to true
- *
- */
-jasmine.VERBOSE = false;
-
-/**
- * Default interval in milliseconds for event loop yields (e.g. to allow network activity or to refresh the screen with the HTML-based runner). Small values here may result in slow test running. Zero means no updates until all tests have completed.
- *
- */
-jasmine.DEFAULT_UPDATE_INTERVAL = 250;
-
-/**
- * Default timeout interval in milliseconds for waitsFor() blocks.
- */
-jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000;
-
-jasmine.getGlobal = function() {
-  function getGlobal() {
-    return this;
-  }
-
-  return getGlobal();
-};
-
-/**
- * Allows for bound functions to be compared.  Internal use only.
- *
- * @ignore
- * @private
- * @param base {Object} bound 'this' for the function
- * @param name {Function} function to find
- */
-jasmine.bindOriginal_ = function(base, name) {
-  var original = base[name];
-  if (original.apply) {
-    return function() {
-      return original.apply(base, arguments);
-    };
-  } else {
-    // IE support
-    return jasmine.getGlobal()[name];
-  }
-};
-
-jasmine.setTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'setTimeout');
-jasmine.clearTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearTimeout');
-jasmine.setInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'setInterval');
-jasmine.clearInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearInterval');
-
-jasmine.MessageResult = function(values) {
-  this.type = 'log';
-  this.values = values;
-  this.trace = new Error(); // todo: test better
-};
-
-jasmine.MessageResult.prototype.toString = function() {
-  var text = "";
-  for (var i = 0; i < this.values.length; i++) {
-    if (i > 0) text += " ";
-    if (jasmine.isString_(this.values[i])) {
-      text += this.values[i];
-    } else {
-      text += jasmine.pp(this.values[i]);
-    }
-  }
-  return text;
-};
-
-jasmine.ExpectationResult = function(params) {
-  this.type = 'expect';
-  this.matcherName = params.matcherName;
-  this.passed_ = params.passed;
-  this.expected = params.expected;
-  this.actual = params.actual;
-  this.message = this.passed_ ? 'Passed.' : params.message;
-
-  var trace = (params.trace || new Error(this.message));
-  this.trace = this.passed_ ? '' : trace;
-};
-
-jasmine.ExpectationResult.prototype.toString = function () {
-  return this.message;
-};
-
-jasmine.ExpectationResult.prototype.passed = function () {
-  return this.passed_;
-};
-
-/**
- * Getter for the Jasmine environment. Ensures one gets created
- */
-jasmine.getEnv = function() {
-  var env = jasmine.currentEnv_ = jasmine.currentEnv_ || new jasmine.Env();
-  return env;
-};
-
-/**
- * @ignore
- * @private
- * @param value
- * @returns {Boolean}
- */
-jasmine.isArray_ = function(value) {
-  return jasmine.isA_("Array", value);
-};
-
-/**
- * @ignore
- * @private
- * @param value
- * @returns {Boolean}
- */
-jasmine.isString_ = function(value) {
-  return jasmine.isA_("String", value);
-};
-
-/**
- * @ignore
- * @private
- * @param value
- * @returns {Boolean}
- */
-jasmine.isNumber_ = function(value) {
-  return jasmine.isA_("Number", value);
-};
-
-/**
- * @ignore
- * @private
- * @param {String} typeName
- * @param value
- * @returns {Boolean}
- */
-jasmine.isA_ = function(typeName, value) {
-  return Object.prototype.toString.apply(value) === '[object ' + typeName + ']';
-};
-
-/**
- * Pretty printer for expecations.  Takes any object and turns it into a human-readable string.
- *
- * @param value {Object} an object to be outputted
- * @returns {String}
- */
-jasmine.pp = function(value) {
-  var stringPrettyPrinter = new jasmine.StringPrettyPrinter();
-  stringPrettyPrinter.format(value);
-  return stringPrettyPrinter.string;
-};
-
-/**
- * Returns true if the object is a DOM Node.
- *
- * @param {Object} obj object to check
- * @returns {Boolean}
- */
-jasmine.isDomNode = function(obj) {
-  return obj.nodeType > 0;
-};
-
-/**
- * Returns a matchable 'generic' object of the class type.  For use in expecations of type when values don't matter.
- *
- * @example
- * // don't care about which function is passed in, as long as it's a function
- * expect(mySpy).toHaveBeenCalledWith(jasmine.any(Function));
- *
- * @param {Class} clazz
- * @returns matchable object of the type clazz
- */
-jasmine.any = function(clazz) {
-  return new jasmine.Matchers.Any(clazz);
-};
-
-/**
- * Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expecation, mocks.
- *
- * Spies should be created in test setup, before expectations.  They can then be checked, using the standard Jasmine
- * expectation syntax. Spies can be checked if they were called or not and what the calling params were.
- *
- * A Spy has the following fields: wasCalled, callCount, mostRecentCall, and argsForCall (see docs).
- *
- * Spies are torn down at the end of every spec.
- *
- * Note: Do <b>not</b> call new jasmine.Spy() directly - a spy must be created using spyOn, jasmine.createSpy or jasmine.createSpyObj.
- *
- * @example
- * // a stub
- * var myStub = jasmine.createSpy('myStub');  // can be used anywhere
- *
- * // spy example
- * var foo = {
- *   not: function(bool) { return !bool; }
- * }
- *
- * // actual foo.not will not be called, execution stops
- * spyOn(foo, 'not');
-
- // foo.not spied upon, execution will continue to implementation
- * spyOn(foo, 'not').andCallThrough();
- *
- * // fake example
- * var foo = {
- *   not: function(bool) { return !bool; }
- * }
- *
- * // foo.not(val) will return val
- * spyOn(foo, 'not').andCallFake(function(value) {return value;});
- *
- * // mock example
- * foo.not(7 == 7);
- * expect(foo.not).toHaveBeenCalled();
- * expect(foo.not).toHaveBeenCalledWith(true);
- *
- * @constructor
- * @see spyOn, jasmine.createSpy, jasmine.createSpyObj
- * @param {String} name
- */
-jasmine.Spy = function(name) {
-  /**
-   * The name of the spy, if provided.
-   */
-  this.identity = name || 'unknown';
-  /**
-   *  Is this Object a spy?
-   */
-  this.isSpy = true;
-  /**
-   * The actual function this spy stubs.
-   */
-  this.plan = function() {
-  };
-  /**
-   * Tracking of the most recent call to the spy.
-   * @example
-   * var mySpy = jasmine.createSpy('foo');
-   * mySpy(1, 2);
-   * mySpy.mostRecentCall.args = [1, 2];
-   */
-  this.mostRecentCall = {};
-
-  /**
-   * Holds arguments for each call to the spy, indexed by call count
-   * @example
-   * var mySpy = jasmine.createSpy('foo');
-   * mySpy(1, 2);
-   * mySpy(7, 8);
-   * mySpy.mostRecentCall.args = [7, 8];
-   * mySpy.argsForCall[0] = [1, 2];
-   * mySpy.argsForCall[1] = [7, 8];
-   */
-  this.argsForCall = [];
-  this.calls = [];
-};
-
-/**
- * Tells a spy to call through to the actual implemenatation.
- *
- * @example
- * var foo = {
- *   bar: function() { // do some stuff }
- * }
- *
- * // defining a spy on an existing property: foo.bar
- * spyOn(foo, 'bar').andCallThrough();
- */
-jasmine.Spy.prototype.andCallThrough = function() {
-  this.plan = this.originalValue;
-  return this;
-};
-
-/**
- * For setting the return value of a spy.
- *
- * @example
- * // defining a spy from scratch: foo() returns 'baz'
- * var foo = jasmine.createSpy('spy on foo').andReturn('baz');
- *
- * // defining a spy on an existing property: foo.bar() returns 'baz'
- * spyOn(foo, 'bar').andReturn('baz');
- *
- * @param {Object} value
- */
-jasmine.Spy.prototype.andReturn = function(value) {
-  this.plan = function() {
-    return value;
-  };
-  return this;
-};
-
-/**
- * For throwing an exception when a spy is called.
- *
- * @example
- * // defining a spy from scratch: foo() throws an exception w/ message 'ouch'
- * var foo = jasmine.createSpy('spy on foo').andThrow('baz');
- *
- * // defining a spy on an existing property: foo.bar() throws an exception w/ message 'ouch'
- * spyOn(foo, 'bar').andThrow('baz');
- *
- * @param {String} exceptionMsg
- */
-jasmine.Spy.prototype.andThrow = function(exceptionMsg) {
-  this.plan = function() {
-    throw exceptionMsg;
-  };
-  return this;
-};
-
-/**
- * Calls an alternate implementation when a spy is called.
- *
- * @example
- * var baz = function() {
- *   // do some stuff, return something
- * }
- * // defining a spy from scratch: foo() calls the function baz
- * var foo = jasmine.createSpy('spy on foo').andCall(baz);
- *
- * // defining a spy on an existing property: foo.bar() calls an anonymnous function
- * spyOn(foo, 'bar').andCall(function() { return 'baz';} );
- *
- * @param {Function} fakeFunc
- */
-jasmine.Spy.prototype.andCallFake = function(fakeFunc) {
-  this.plan = fakeFunc;
-  return this;
-};
-
-/**
- * Resets all of a spy's the tracking variables so that it can be used again.
- *
- * @example
- * spyOn(foo, 'bar');
- *
- * foo.bar();
- *
- * expect(foo.bar.callCount).toEqual(1);
- *
- * foo.bar.reset();
- *
- * expect(foo.bar.callCount).toEqual(0);
- */
-jasmine.Spy.prototype.reset = function() {
-  this.wasCalled = false;
-  this.callCount = 0;
-  this.argsForCall = [];
-  this.calls = [];
-  this.mostRecentCall = {};
-};
-
-jasmine.createSpy = function(name) {
-
-  var spyObj = function() {
-    spyObj.wasCalled = true;
-    spyObj.callCount++;
-    var args = jasmine.util.argsToArray(arguments);
-    spyObj.mostRecentCall.object = this;
-    spyObj.mostRecentCall.args = args;
-    spyObj.argsForCall.push(args);
-    spyObj.calls.push({object: this, args: args});
-    return spyObj.plan.apply(this, arguments);
-  };
-
-  var spy = new jasmine.Spy(name);
-
-  for (var prop in spy) {
-    spyObj[prop] = spy[prop];
-  }
-
-  spyObj.reset();
-
-  return spyObj;
-};
-
-/**
- * Determines whether an object is a spy.
- *
- * @param {jasmine.Spy|Object} putativeSpy
- * @returns {Boolean}
- */
-jasmine.isSpy = function(putativeSpy) {
-  return putativeSpy && putativeSpy.isSpy;
-};
-
-/**
- * Creates a more complicated spy: an Object that has every property a function that is a spy.  Used for stubbing something
- * large in one call.
- *
- * @param {String} baseName name of spy class
- * @param {Array} methodNames array of names of methods to make spies
- */
-jasmine.createSpyObj = function(baseName, methodNames) {
-  if (!jasmine.isArray_(methodNames) || methodNames.length === 0) {
-    throw new Error('createSpyObj requires a non-empty array of method names to create spies for');
-  }
-  var obj = {};
-  for (var i = 0; i < methodNames.length; i++) {
-    obj[methodNames[i]] = jasmine.createSpy(baseName + '.' + methodNames[i]);
-  }
-  return obj;
-};
-
-/**
- * All parameters are pretty-printed and concatenated together, then written to the current spec's output.
- *
- * Be careful not to leave calls to <code>jasmine.log</code> in production code.
- */
-jasmine.log = function() {
-  var spec = jasmine.getEnv().currentSpec;
-  spec.log.apply(spec, arguments);
-};
-
-/**
- * Function that installs a spy on an existing object's method name.  Used within a Spec to create a spy.
- *
- * @example
- * // spy example
- * var foo = {
- *   not: function(bool) { return !bool; }
- * }
- * spyOn(foo, 'not'); // actual foo.not will not be called, execution stops
- *
- * @see jasmine.createSpy
- * @param obj
- * @param methodName
- * @returns a Jasmine spy that can be chained with all spy methods
- */
-var spyOn = function(obj, methodName) {
-  return jasmine.getEnv().currentSpec.spyOn(obj, methodName);
-};
-if (isCommonJS) exports.spyOn = spyOn;
-
-/**
- * Creates a Jasmine spec that will be added to the current suite.
- *
- * // TODO: pending tests
- *
- * @example
- * it('should be true', function() {
- *   expect(true).toEqual(true);
- * });
- *
- * @param {String} desc description of this specification
- * @param {Function} func defines the preconditions and expectations of the spec
- */
-var it = function(desc, func) {
-  return jasmine.getEnv().it(desc, func);
-};
-if (isCommonJS) exports.it = it;
-
-/**
- * Creates a <em>disabled</em> Jasmine spec.
- *
- * A convenience method that allows existing specs to be disabled temporarily during development.
- *
- * @param {String} desc description of this specification
- * @param {Function} func defines the preconditions and expectations of the spec
- */
-var xit = function(desc, func) {
-  return jasmine.getEnv().xit(desc, func);
-};
-if (isCommonJS) exports.xit = xit;
-
-/**
- * Starts a chain for a Jasmine expectation.
- *
- * It is passed an Object that is the actual value and should chain to one of the many
- * jasmine.Matchers functions.
- *
- * @param {Object} actual Actual value to test against and expected value
- */
-var expect = function(actual) {
-  return jasmine.getEnv().currentSpec.expect(actual);
-};
-if (isCommonJS) exports.expect = expect;
-
-/**
- * Defines part of a jasmine spec.  Used in cominbination with waits or waitsFor in asynchrnous specs.
- *
- * @param {Function} func Function that defines part of a jasmine spec.
- */
-var runs = function(func) {
-  jasmine.getEnv().currentSpec.runs(func);
-};
-if (isCommonJS) exports.runs = runs;
-
-/**
- * Waits a fixed time period before moving to the next block.
- *
- * @deprecated Use waitsFor() instead
- * @param {Number} timeout milliseconds to wait
- */
-var waits = function(timeout) {
-  jasmine.getEnv().currentSpec.waits(timeout);
-};
-if (isCommonJS) exports.waits = waits;
-
-/**
- * Waits for the latchFunction to return true before proceeding to the next block.
- *
- * @param {Function} latchFunction
- * @param {String} optional_timeoutMessage
- * @param {Number} optional_timeout
- */
-var waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) {
-  jasmine.getEnv().currentSpec.waitsFor.apply(jasmine.getEnv().currentSpec, arguments);
-};
-if (isCommonJS) exports.waitsFor = waitsFor;
-
-/**
- * A function that is called before each spec in a suite.
- *
- * Used for spec setup, including validating assumptions.
- *
- * @param {Function} beforeEachFunction
- */
-var beforeEach = function(beforeEachFunction) {
-  jasmine.getEnv().beforeEach(beforeEachFunction);
-};
-if (isCommonJS) exports.beforeEach = beforeEach;
-
-/**
- * A function that is called after each spec in a suite.
- *
- * Used for restoring any state that is hijacked during spec execution.
- *
- * @param {Function} afterEachFunction
- */
-var afterEach = function(afterEachFunction) {
-  jasmine.getEnv().afterEach(afterEachFunction);
-};
-if (isCommonJS) exports.afterEach = afterEach;
-
-/**
- * Defines a suite of specifications.
- *
- * Stores the description and all defined specs in the Jasmine environment as one suite of specs. Variables declared
- * are accessible by calls to beforeEach, it, and afterEach. Describe blocks can be nested, allowing for specialization
- * of setup in some tests.
- *
- * @example
- * // TODO: a simple suite
- *
- * // TODO: a simple suite with a nested describe block
- *
- * @param {String} description A string, usually the class under test.
- * @param {Function} specDefinitions function that defines several specs.
- */
-var describe = function(description, specDefinitions) {
-  return jasmine.getEnv().describe(description, specDefinitions);
-};
-if (isCommonJS) exports.describe = describe;
-
-/**
- * Disables a suite of specifications.  Used to disable some suites in a file, or files, temporarily during development.
- *
- * @param {String} description A string, usually the class under test.
- * @param {Function} specDefinitions function that defines several specs.
- */
-var xdescribe = function(description, specDefinitions) {
-  return jasmine.getEnv().xdescribe(description, specDefinitions);
-};
-if (isCommonJS) exports.xdescribe = xdescribe;
-
-
-// Provide the XMLHttpRequest class for IE 5.x-6.x:
-jasmine.XmlHttpRequest = (typeof XMLHttpRequest == "undefined") ? function() {
-  function tryIt(f) {
-    try {
-      return f();
-    } catch(e) {
-    }
-    return null;
-  }
-
-  var xhr = tryIt(function() {
-    return new ActiveXObject("Msxml2.XMLHTTP.6.0");
-  }) ||
-    tryIt(function() {
-      return new ActiveXObject("Msxml2.XMLHTTP.3.0");
-    }) ||
-    tryIt(function() {
-      return new ActiveXObject("Msxml2.XMLHTTP");
-    }) ||
-    tryIt(function() {
-      return new ActiveXObject("Microsoft.XMLHTTP");
-    });
-
-  if (!xhr) throw new Error("This browser does not support XMLHttpRequest.");
-
-  return xhr;
-} : XMLHttpRequest;
-/**
- * @namespace
- */
-jasmine.util = {};
-
-/**
- * Declare that a child class inherit it's prototype from the parent class.
- *
- * @private
- * @param {Function} childClass
- * @param {Function} parentClass
- */
-jasmine.util.inherit = function(childClass, parentClass) {
-  /**
-   * @private
-   */
-  var subclass = function() {
-  };
-  subclass.prototype = parentClass.prototype;
-  childClass.prototype = new subclass();
-};
-
-jasmine.util.formatException = function(e) {
-  var lineNumber;
-  if (e.line) {
-    lineNumber = e.line;
-  }
-  else if (e.lineNumber) {
-    lineNumber = e.lineNumber;
-  }
-
-  var file;
-
-  if (e.sourceURL) {
-    file = e.sourceURL;
-  }
-  else if (e.fileName) {
-    file = e.fileName;
-  }
-
-  var message = (e.name && e.message) ? (e.name + ': ' + e.message) : e.toString();
-
-  if (file && lineNumber) {
-    message += ' in ' + file + ' (line ' + lineNumber + ')';
-  }
-
-  return message;
-};
-
-jasmine.util.htmlEscape = function(str) {
-  if (!str) return str;
-  return str.replace(/&/g, '&amp;')
-    .replace(/</g, '&lt;')
-    .replace(/>/g, '&gt;');
-};
-
-jasmine.util.argsToArray = function(args) {
-  var arrayOfArgs = [];
-  for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]);
-  return arrayOfArgs;
-};
-
-jasmine.util.extend = function(destination, source) {
-  for (var property in source) destination[property] = source[property];
-  return destination;
-};
-
-/**
- * Environment for Jasmine
- *
- * @constructor
- */
-jasmine.Env = function() {
-  this.currentSpec = null;
-  this.currentSuite = null;
-  this.currentRunner_ = new jasmine.Runner(this);
-
-  this.reporter = new jasmine.MultiReporter();
-
-  this.updateInterval = jasmine.DEFAULT_UPDATE_INTERVAL;
-  this.defaultTimeoutInterval = jasmine.DEFAULT_TIMEOUT_INTERVAL;
-  this.lastUpdate = 0;
-  this.specFilter = function() {
-    return true;
-  };
-
-  this.nextSpecId_ = 0;
-  this.nextSuiteId_ = 0;
-  this.equalityTesters_ = [];
-
-  // wrap matchers
-  this.matchersClass = function() {
-    jasmine.Matchers.apply(this, arguments);
-  };
-  jasmine.util.inherit(this.matchersClass, jasmine.Matchers);
-
-  jasmine.Matchers.wrapInto_(jasmine.Matchers.prototype, this.matchersClass);
-};
-
-
-jasmine.Env.prototype.setTimeout = jasmine.setTimeout;
-jasmine.Env.prototype.clearTimeout = jasmine.clearTimeout;
-jasmine.Env.prototype.setInterval = jasmine.setInterval;
-jasmine.Env.prototype.clearInterval = jasmine.clearInterval;
-
-/**
- * @returns an object containing jasmine version build info, if set.
- */
-jasmine.Env.prototype.version = function () {
-  if (jasmine.version_) {
-    return jasmine.version_;
-  } else {
-    throw new Error('Version not set');
-  }
-};
-
-/**
- * @returns string containing jasmine version build info, if set.
- */
-jasmine.Env.prototype.versionString = function() {
-  if (!jasmine.version_) {
-    return "version unknown";
-  }
-
-  var version = this.version();
-  var versionString = version.major + "." + version.minor + "." + version.build;
-  if (version.release_candidate) {
-    versionString += ".rc" + version.release_candidate;
-  }
-  versionString += " revision " + version.revision;
-  return versionString;
-};
-
-/**
- * @returns a sequential integer starting at 0
- */
-jasmine.Env.prototype.nextSpecId = function () {
-  return this.nextSpecId_++;
-};
-
-/**
- * @returns a sequential integer starting at 0
- */
-jasmine.Env.prototype.nextSuiteId = function () {
-  return this.nextSuiteId_++;
-};
-
-/**
- * Register a reporter to receive status updates from Jasmine.
- * @param {jasmine.Reporter} reporter An object which will receive status updates.
- */
-jasmine.Env.prototype.addReporter = function(reporter) {
-  this.reporter.addReporter(reporter);
-};
-
-jasmine.Env.prototype.execute = function() {
-  this.currentRunner_.execute();
-};
-
-jasmine.Env.prototype.describe = function(description, specDefinitions) {
-  var suite = new jasmine.Suite(this, description, specDefinitions, this.currentSuite);
-
-  var parentSuite = this.currentSuite;
-  if (parentSuite) {
-    parentSuite.add(suite);
-  } else {
-    this.currentRunner_.add(suite);
-  }
-
-  this.currentSuite = suite;
-
-  var declarationError = null;
-  try {
-    specDefinitions.call(suite);
-  } catch(e) {
-    declarationError = e;
-  }
-
-  if (declarationError) {
-    this.it("encountered a declaration exception", function() {
-      throw declarationError;
-    });
-  }
-
-  this.currentSuite = parentSuite;
-
-  return suite;
-};
-
-jasmine.Env.prototype.beforeEach = function(beforeEachFunction) {
-  if (this.currentSuite) {
-    this.currentSuite.beforeEach(beforeEachFunction);
-  } else {
-    this.currentRunner_.beforeEach(beforeEachFunction);
-  }
-};
-
-jasmine.Env.prototype.currentRunner = function () {
-  return this.currentRunner_;
-};
-
-jasmine.Env.prototype.afterEach = function(afterEachFunction) {
-  if (this.currentSuite) {
-    this.currentSuite.afterEach(afterEachFunction);
-  } else {
-    this.currentRunner_.afterEach(afterEachFunction);
-  }
-
-};
-
-jasmine.Env.prototype.xdescribe = function(desc, specDefinitions) {
-  return {
-    execute: function() {
-    }
-  };
-};
-
-jasmine.Env.prototype.it = function(description, func) {
-  var spec = new jasmine.Spec(this, this.currentSuite, description);
-  this.currentSuite.add(spec);
-  this.currentSpec = spec;
-
-  if (func) {
-    spec.runs(func);
-  }
-
-  return spec;
-};
-
-jasmine.Env.prototype.xit = function(desc, func) {
-  return {
-    id: this.nextSpecId(),
-    runs: function() {
-    }
-  };
-};
-
-jasmine.Env.prototype.compareObjects_ = function(a, b, mismatchKeys, mismatchValues) {
-  if (a.__Jasmine_been_here_before__ === b && b.__Jasmine_been_here_before__ === a) {
-    return true;
-  }
-
-  a.__Jasmine_been_here_before__ = b;
-  b.__Jasmine_been_here_before__ = a;
-
-  var hasKey = function(obj, keyName) {
-    return obj !== null && obj[keyName] !== jasmine.undefined;
-  };
-
-  for (var property in b) {
-    if (!hasKey(a, property) && hasKey(b, property)) {
-      mismatchKeys.push("expected has key '" + property + "', but missing from actual.");
-    }
-  }
-  for (property in a) {
-    if (!hasKey(b, property) && hasKey(a, property)) {
-      mismatchKeys.push("expected missing key '" + property + "', but present in actual.");
-    }
-  }
-  for (property in b) {
-    if (property == '__Jasmine_been_here_before__') continue;
-    if (!this.equals_(a[property], b[property], mismatchKeys, mismatchValues)) {
-      mismatchValues.push("'" + property + "' was '" + (b[property] ? jasmine.util.htmlEscape(b[property].toString()) : b[property]) + "' in expected, but was '" + (a[property] ? jasmine.util.htmlEscape(a[property].toString()) : a[property]) + "' in actual.");
-    }
-  }
-
-  if (jasmine.isArray_(a) && jasmine.isArray_(b) && a.length != b.length) {
-    mismatchValues.push("arrays were not the same length");
-  }
-
-  delete a.__Jasmine_been_here_before__;
-  delete b.__Jasmine_been_here_before__;
-  return (mismatchKeys.length === 0 && mismatchValues.length === 0);
-};
-
-jasmine.Env.prototype.equals_ = function(a, b, mismatchKeys, mismatchValues) {
-  mismatchKeys = mismatchKeys || [];
-  mismatchValues = mismatchValues || [];
-
-  for (var i = 0; i < this.equalityTesters_.length; i++) {
-    var equalityTester = this.equalityTesters_[i];
-    var result = equalityTester(a, b, this, mismatchKeys, mismatchValues);
-    if (result !== jasmine.undefined) return result;
-  }
-
-  if (a === b) return true;
-
-  if (a === jasmine.undefined || a === null || b === jasmine.undefined || b === null) {
-    return (a == jasmine.undefined && b == jasmine.undefined);
-  }
-
-  if (jasmine.isDomNode(a) && jasmine.isDomNode(b)) {
-    return a === b;
-  }
-
-  if (a instanceof Date && b instanceof Date) {
-    return a.getTime() == b.getTime();
-  }
-
-  if (a instanceof jasmine.Matchers.Any) {
-    return a.matches(b);
-  }
-
-  if (b instanceof jasmine.Matchers.Any) {
-    return b.matches(a);
-  }
-
-  if (jasmine.isString_(a) && jasmine.isString_(b)) {
-    return (a == b);
-  }
-
-  if (jasmine.isNumber_(a) && jasmine.isNumber_(b)) {
-    return (a == b);
-  }
-
-  if (typeof a === "object" && typeof b === "object") {
-    return this.compareObjects_(a, b, mismatchKeys, mismatchValues);
-  }
-
-  //Straight check
-  return (a === b);
-};
-
-jasmine.Env.prototype.contains_ = function(haystack, needle) {
-  if (jasmine.isArray_(haystack)) {
-    for (var i = 0; i < haystack.length; i++) {
-      if (this.equals_(haystack[i], needle)) return true;
-    }
-    return false;
-  }
-  return haystack.indexOf(needle) >= 0;
-};
-
-jasmine.Env.prototype.addEqualityTester = function(equalityTester) {
-  this.equalityTesters_.push(equalityTester);
-};
-/** No-op base class for Jasmine reporters.
- *
- * @constructor
- */
-jasmine.Reporter = function() {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.Reporter.prototype.reportRunnerStarting = function(runner) {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.Reporter.prototype.reportRunnerResults = function(runner) {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.Reporter.prototype.reportSuiteResults = function(suite) {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.Reporter.prototype.reportSpecStarting = function(spec) {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.Reporter.prototype.reportSpecResults = function(spec) {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.Reporter.prototype.log = function(str) {
-};
-
-/**
- * Blocks are functions with executable code that make up a spec.
- *
- * @constructor
- * @param {jasmine.Env} env
- * @param {Function} func
- * @param {jasmine.Spec} spec
- */
-jasmine.Block = function(env, func, spec) {
-  this.env = env;
-  this.func = func;
-  this.spec = spec;
-};
-
-jasmine.Block.prototype.execute = function(onComplete) {  
-  try {
-    this.func.apply(this.spec);
-  } catch (e) {
-    this.spec.fail(e);
-  }
-  onComplete();
-};
-/** JavaScript API reporter.
- *
- * @constructor
- */
-jasmine.JsApiReporter = function() {
-  this.started = false;
-  this.finished = false;
-  this.suites_ = [];
-  this.results_ = {};
-};
-
-jasmine.JsApiReporter.prototype.reportRunnerStarting = function(runner) {
-  this.started = true;
-  var suites = runner.topLevelSuites();
-  for (var i = 0; i < suites.length; i++) {
-    var suite = suites[i];
-    this.suites_.push(this.summarize_(suite));
-  }
-};
-
-jasmine.JsApiReporter.prototype.suites = function() {
-  return this.suites_;
-};
-
-jasmine.JsApiReporter.prototype.summarize_ = function(suiteOrSpec) {
-  var isSuite = suiteOrSpec instanceof jasmine.Suite;
-  var summary = {
-    id: suiteOrSpec.id,
-    name: suiteOrSpec.description,
-    type: isSuite ? 'suite' : 'spec',
-    children: []
-  };
-  
-  if (isSuite) {
-    var children = suiteOrSpec.children();
-    for (var i = 0; i < children.length; i++) {
-      summary.children.push(this.summarize_(children[i]));
-    }
-  }
-  return summary;
-};
-
-jasmine.JsApiReporter.prototype.results = function() {
-  return this.results_;
-};
-
-jasmine.JsApiReporter.prototype.resultsForSpec = function(specId) {
-  return this.results_[specId];
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.JsApiReporter.prototype.reportRunnerResults = function(runner) {
-  this.finished = true;
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.JsApiReporter.prototype.reportSuiteResults = function(suite) {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.JsApiReporter.prototype.reportSpecResults = function(spec) {
-  this.results_[spec.id] = {
-    messages: spec.results().getItems(),
-    result: spec.results().failedCount > 0 ? "failed" : "passed"
-  };
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.JsApiReporter.prototype.log = function(str) {
-};
-
-jasmine.JsApiReporter.prototype.resultsForSpecs = function(specIds){
-  var results = {};
-  for (var i = 0; i < specIds.length; i++) {
-    var specId = specIds[i];
-    results[specId] = this.summarizeResult_(this.results_[specId]);
-  }
-  return results;
-};
-
-jasmine.JsApiReporter.prototype.summarizeResult_ = function(result){
-  var summaryMessages = [];
-  var messagesLength = result.messages.length;
-  for (var messageIndex = 0; messageIndex < messagesLength; messageIndex++) {
-    var resultMessage = result.messages[messageIndex];
-    summaryMessages.push({
-      text: resultMessage.type == 'log' ? resultMessage.toString() : jasmine.undefined,
-      passed: resultMessage.passed ? resultMessage.passed() : true,
-      type: resultMessage.type,
-      message: resultMessage.message,
-      trace: {
-        stack: resultMessage.passed && !resultMessage.passed() ? resultMessage.trace.stack : jasmine.undefined
-      }
-    });
-  }
-
-  return {
-    result : result.result,
-    messages : summaryMessages
-  };
-};
-
-/**
- * @constructor
- * @param {jasmine.Env} env
- * @param actual
- * @param {jasmine.Spec} spec
- */
-jasmine.Matchers = function(env, actual, spec, opt_isNot) {
-  this.env = env;
-  this.actual = actual;
-  this.spec = spec;
-  this.isNot = opt_isNot || false;
-  this.reportWasCalled_ = false;
-};
-
-// todo: @deprecated as of Jasmine 0.11, remove soon [xw]
-jasmine.Matchers.pp = function(str) {
-  throw new Error("jasmine.Matchers.pp() is no longer supported, please use jasmine.pp() instead!");
-};
-
-// todo: @deprecated Deprecated as of Jasmine 0.10. Rewrite your custom matchers to return true or false. [xw]
-jasmine.Matchers.prototype.report = function(result, failing_message, details) {
-  throw new Error("As of jasmine 0.11, custom matchers must be implemented differently -- please see jasmine docs");
-};
-
-jasmine.Matchers.wrapInto_ = function(prototype, matchersClass) {
-  for (var methodName in prototype) {
-    if (methodName == 'report') continue;
-    var orig = prototype[methodName];
-    matchersClass.prototype[methodName] = jasmine.Matchers.matcherFn_(methodName, orig);
-  }
-};
-
-jasmine.Matchers.matcherFn_ = function(matcherName, matcherFunction) {
-  return function() {
-    var matcherArgs = jasmine.util.argsToArray(arguments);
-    var result = matcherFunction.apply(this, arguments);
-
-    if (this.isNot) {
-      result = !result;
-    }
-
-    if (this.reportWasCalled_) return result;
-
-    var message;
-    if (!result) {
-      if (this.message) {
-        message = this.message.apply(this, arguments);
-        if (jasmine.isArray_(message)) {
-          message = message[this.isNot ? 1 : 0];
-        }
-      } else {
-        var englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); });
-        message = "Expected " + jasmine.pp(this.actual) + (this.isNot ? " not " : " ") + englishyPredicate;
-        if (matcherArgs.length > 0) {
-          for (var i = 0; i < matcherArgs.length; i++) {
-            if (i > 0) message += ",";
-            message += " " + jasmine.pp(matcherArgs[i]);
-          }
-        }
-        message += ".";
-      }
-    }
-    var expectationResult = new jasmine.ExpectationResult({
-      matcherName: matcherName,
-      passed: result,
-      expected: matcherArgs.length > 1 ? matcherArgs : matcherArgs[0],
-      actual: this.actual,
-      message: message
-    });
-    this.spec.addMatcherResult(expectationResult);
-    return jasmine.undefined;
-  };
-};
-
-
-
-
-/**
- * toBe: compares the actual to the expected using ===
- * @param expected
- */
-jasmine.Matchers.prototype.toBe = function(expected) {
-  return this.actual === expected;
-};
-
-/**
- * toNotBe: compares the actual to the expected using !==
- * @param expected
- * @deprecated as of 1.0. Use not.toBe() instead.
- */
-jasmine.Matchers.prototype.toNotBe = function(expected) {
-  return this.actual !== expected;
-};
-
-/**
- * toEqual: compares the actual to the expected using common sense equality. Handles Objects, Arrays, etc.
- *
- * @param expected
- */
-jasmine.Matchers.prototype.toEqual = function(expected) {
-  return this.env.equals_(this.actual, expected);
-};
-
-/**
- * toNotEqual: compares the actual to the expected using the ! of jasmine.Matchers.toEqual
- * @param expected
- * @deprecated as of 1.0. Use not.toNotEqual() instead.
- */
-jasmine.Matchers.prototype.toNotEqual = function(expected) {
-  return !this.env.equals_(this.actual, expected);
-};
-
-/**
- * Matcher that compares the actual to the expected using a regular expression.  Constructs a RegExp, so takes
- * a pattern or a String.
- *
- * @param expected
- */
-jasmine.Matchers.prototype.toMatch = function(expected) {
-  return new RegExp(expected).test(this.actual);
-};
-
-/**
- * Matcher that compares the actual to the expected using the boolean inverse of jasmine.Matchers.toMatch
- * @param expected
- * @deprecated as of 1.0. Use not.toMatch() instead.
- */
-jasmine.Matchers.prototype.toNotMatch = function(expected) {
-  return !(new RegExp(expected).test(this.actual));
-};
-
-/**
- * Matcher that compares the actual to jasmine.undefined.
- */
-jasmine.Matchers.prototype.toBeDefined = function() {
-  return (this.actual !== jasmine.undefined);
-};
-
-/**
- * Matcher that compares the actual to jasmine.undefined.
- */
-jasmine.Matchers.prototype.toBeUndefined = function() {
-  return (this.actual === jasmine.undefined);
-};
-
-/**
- * Matcher that compares the actual to null.
- */
-jasmine.Matchers.prototype.toBeNull = function() {
-  return (this.actual === null);
-};
-
-/**
- * Matcher that boolean not-nots the actual.
- */
-jasmine.Matchers.prototype.toBeTruthy = function() {
-  return !!this.actual;
-};
-
-
-/**
- * Matcher that boolean nots the actual.
- */
-jasmine.Matchers.prototype.toBeFalsy = function() {
-  return !this.actual;
-};
-
-
-/**
- * Matcher that checks to see if the actual, a Jasmine spy, was called.
- */
-jasmine.Matchers.prototype.toHaveBeenCalled = function() {
-  if (arguments.length > 0) {
-    throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith');
-  }
-
-  if (!jasmine.isSpy(this.actual)) {
-    throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.');
-  }
-
-  this.message = function() {
-    return [
-      "Expected spy " + this.actual.identity + " to have been called.",
-      "Expected spy " + this.actual.identity + " not to have been called."
-    ];
-  };
-
-  return this.actual.wasCalled;
-};
-
-/** @deprecated Use expect(xxx).toHaveBeenCalled() instead */
-jasmine.Matchers.prototype.wasCalled = jasmine.Matchers.prototype.toHaveBeenCalled;
-
-/**
- * Matcher that checks to see if the actual, a Jasmine spy, was not called.
- *
- * @deprecated Use expect(xxx).not.toHaveBeenCalled() instead
- */
-jasmine.Matchers.prototype.wasNotCalled = function() {
-  if (arguments.length > 0) {
-    throw new Error('wasNotCalled does not take arguments');
-  }
-
-  if (!jasmine.isSpy(this.actual)) {
-    throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.');
-  }
-
-  this.message = function() {
-    return [
-      "Expected spy " + this.actual.identity + " to not have been called.",
-      "Expected spy " + this.actual.identity + " to have been called."
-    ];
-  };
-
-  return !this.actual.wasCalled;
-};
-
-/**
- * Matcher that checks to see if the actual, a Jasmine spy, was called with a set of parameters.
- *
- * @example
- *
- */
-jasmine.Matchers.prototype.toHaveBeenCalledWith = function() {
-  var expectedArgs = jasmine.util.argsToArray(arguments);
-  if (!jasmine.isSpy(this.actual)) {
-    throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.');
-  }
-  this.message = function() {
-    if (this.actual.callCount === 0) {
-      // todo: what should the failure message for .not.toHaveBeenCalledWith() be? is this right? test better. [xw]
-      return [
-        "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but it was never called.",
-        "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but it was."
-      ];
-    } else {
-      return [
-        "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall),
-        "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall)
-      ];
-    }
-  };
-
-  return this.env.contains_(this.actual.argsForCall, expectedArgs);
-};
-
-/** @deprecated Use expect(xxx).toHaveBeenCalledWith() instead */
-jasmine.Matchers.prototype.wasCalledWith = jasmine.Matchers.prototype.toHaveBeenCalledWith;
-
-/** @deprecated Use expect(xxx).not.toHaveBeenCalledWith() instead */
-jasmine.Matchers.prototype.wasNotCalledWith = function() {
-  var expectedArgs = jasmine.util.argsToArray(arguments);
-  if (!jasmine.isSpy(this.actual)) {
-    throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.');
-  }
-
-  this.message = function() {
-    return [
-      "Expected spy not to have been called with " + jasmine.pp(expectedArgs) + " but it was",
-      "Expected spy to have been called with " + jasmine.pp(expectedArgs) + " but it was"
-    ];
-  };
-
-  return !this.env.contains_(this.actual.argsForCall, expectedArgs);
-};
-
-/**
- * Matcher that checks that the expected item is an element in the actual Array.
- *
- * @param {Object} expected
- */
-jasmine.Matchers.prototype.toContain = function(expected) {
-  return this.env.contains_(this.actual, expected);
-};
-
-/**
- * Matcher that checks that the expected item is NOT an element in the actual Array.
- *
- * @param {Object} expected
- * @deprecated as of 1.0. Use not.toNotContain() instead.
- */
-jasmine.Matchers.prototype.toNotContain = function(expected) {
-  return !this.env.contains_(this.actual, expected);
-};
-
-jasmine.Matchers.prototype.toBeLessThan = function(expected) {
-  return this.actual < expected;
-};
-
-jasmine.Matchers.prototype.toBeGreaterThan = function(expected) {
-  return this.actual > expected;
-};
-
-/**
- * Matcher that checks that the expected item is equal to the actual item
- * up to a given level of decimal precision (default 2).
- *
- * @param {Number} expected
- * @param {Number} precision
- */
-jasmine.Matchers.prototype.toBeCloseTo = function(expected, precision) {
-  if (!(precision === 0)) {
-    precision = precision || 2;
-  }
-  var multiplier = Math.pow(10, precision);
-  var actual = Math.round(this.actual * multiplier);
-  expected = Math.round(expected * multiplier);
-  return expected == actual;
-};
-
-/**
- * Matcher that checks that the expected exception was thrown by the actual.
- *
- * @param {String} expected
- */
-jasmine.Matchers.prototype.toThrow = function(expected) {
-  var result = false;
-  var exception;
-  if (typeof this.actual != 'function') {
-    throw new Error('Actual is not a function');
-  }
-  try {
-    this.actual();
-  } catch (e) {
-    exception = e;
-  }
-  if (exception) {
-    result = (expected === jasmine.undefined || this.env.equals_(exception.message || exception, expected.message || expected));
-  }
-
-  var not = this.isNot ? "not " : "";
-
-  this.message = function() {
-    if (exception && (expected === jasmine.undefined || !this.env.equals_(exception.message || exception, expected.message || expected))) {
-      return ["Expected function " + not + "to throw", expected ? expected.message || expected : "an exception", ", but it threw", exception.message || exception].join(' ');
-    } else {
-      return "Expected function to throw an exception.";
-    }
-  };
-
-  return result;
-};
-
-jasmine.Matchers.Any = function(expectedClass) {
-  this.expectedClass = expectedClass;
-};
-
-jasmine.Matchers.Any.prototype.matches = function(other) {
-  if (this.expectedClass == String) {
-    return typeof other == 'string' || other instanceof String;
-  }
-
-  if (this.expectedClass == Number) {
-    return typeof other == 'number' || other instanceof Number;
-  }
-
-  if (this.expectedClass == Function) {
-    return typeof other == 'function' || other instanceof Function;
-  }
-
-  if (this.expectedClass == Object) {
-    return typeof other == 'object';
-  }
-
-  return other instanceof this.expectedClass;
-};
-
-jasmine.Matchers.Any.prototype.toString = function() {
-  return '<jasmine.any(' + this.expectedClass + ')>';
-};
-
-/**
- * @constructor
- */
-jasmine.MultiReporter = function() {
-  this.subReporters_ = [];
-};
-jasmine.util.inherit(jasmine.MultiReporter, jasmine.Reporter);
-
-jasmine.MultiReporter.prototype.addReporter = function(reporter) {
-  this.subReporters_.push(reporter);
-};
-
-(function() {
-  var functionNames = [
-    "reportRunnerStarting",
-    "reportRunnerResults",
-    "reportSuiteResults",
-    "reportSpecStarting",
-    "reportSpecResults",
-    "log"
-  ];
-  for (var i = 0; i < functionNames.length; i++) {
-    var functionName = functionNames[i];
-    jasmine.MultiReporter.prototype[functionName] = (function(functionName) {
-      return function() {
-        for (var j = 0; j < this.subReporters_.length; j++) {
-          var subReporter = this.subReporters_[j];
-          if (subReporter[functionName]) {
-            subReporter[functionName].apply(subReporter, arguments);
-          }
-        }
-      };
-    })(functionName);
-  }
-})();
-/**
- * Holds results for a set of Jasmine spec. Allows for the results array to hold another jasmine.NestedResults
- *
- * @constructor
- */
-jasmine.NestedResults = function() {
-  /**
-   * The total count of results
-   */
-  this.totalCount = 0;
-  /**
-   * Number of passed results
-   */
-  this.passedCount = 0;
-  /**
-   * Number of failed results
-   */
-  this.failedCount = 0;
-  /**
-   * Was this suite/spec skipped?
-   */
-  this.skipped = false;
-  /**
-   * @ignore
-   */
-  this.items_ = [];
-};
-
-/**
- * Roll up the result counts.
- *
- * @param result
- */
-jasmine.NestedResults.prototype.rollupCounts = function(result) {
-  this.totalCount += result.totalCount;
-  this.passedCount += result.passedCount;
-  this.failedCount += result.failedCount;
-};
-
-/**
- * Adds a log message.
- * @param values Array of message parts which will be concatenated later.
- */
-jasmine.NestedResults.prototype.log = function(values) {
-  this.items_.push(new jasmine.MessageResult(values));
-};
-
-/**
- * Getter for the results: message & results.
- */
-jasmine.NestedResults.prototype.getItems = function() {
-  return this.items_;
-};
-
-/**
- * Adds a result, tracking counts (total, passed, & failed)
- * @param {jasmine.ExpectationResult|jasmine.NestedResults} result
- */
-jasmine.NestedResults.prototype.addResult = function(result) {
-  if (result.type != 'log') {
-    if (result.items_) {
-      this.rollupCounts(result);
-    } else {
-      this.totalCount++;
-      if (result.passed()) {
-        this.passedCount++;
-      } else {
-        this.failedCount++;
-      }
-    }
-  }
-  this.items_.push(result);
-};
-
-/**
- * @returns {Boolean} True if <b>everything</b> below passed
- */
-jasmine.NestedResults.prototype.passed = function() {
-  return this.passedCount === this.totalCount;
-};
-/**
- * Base class for pretty printing for expectation results.
- */
-jasmine.PrettyPrinter = function() {
-  this.ppNestLevel_ = 0;
-};
-
-/**
- * Formats a value in a nice, human-readable string.
- *
- * @param value
- */
-jasmine.PrettyPrinter.prototype.format = function(value) {
-  if (this.ppNestLevel_ > 40) {
-    throw new Error('jasmine.PrettyPrinter: format() nested too deeply!');
-  }
-
-  this.ppNestLevel_++;
-  try {
-    if (value === jasmine.undefined) {
-      this.emitScalar('undefined');
-    } else if (value === null) {
-      this.emitScalar('null');
-    } else if (value === jasmine.getGlobal()) {
-      this.emitScalar('<global>');
-    } else if (value instanceof jasmine.Matchers.Any) {
-      this.emitScalar(value.toString());
-    } else if (typeof value === 'string') {
-      this.emitString(value);
-    } else if (jasmine.isSpy(value)) {
-      this.emitScalar("spy on " + value.identity);
-    } else if (value instanceof RegExp) {
-      this.emitScalar(value.toString());
-    } else if (typeof value === 'function') {
-      this.emitScalar('Function');
-    } else if (typeof value.nodeType === 'number') {
-      this.emitScalar('HTMLNode');
-    } else if (value instanceof Date) {
-      this.emitScalar('Date(' + value + ')');
-    } else if (value.__Jasmine_been_here_before__) {
-      this.emitScalar('<circular reference: ' + (jasmine.isArray_(value) ? 'Array' : 'Object') + '>');
-    } else if (jasmine.isArray_(value) || typeof value == 'object') {
-      value.__Jasmine_been_here_before__ = true;
-      if (jasmine.isArray_(value)) {
-        this.emitArray(value);
-      } else {
-        this.emitObject(value);
-      }
-      delete value.__Jasmine_been_here_before__;
-    } else {
-      this.emitScalar(value.toString());
-    }
-  } finally {
-    this.ppNestLevel_--;
-  }
-};
-
-jasmine.PrettyPrinter.prototype.iterateObject = function(obj, fn) {
-  for (var property in obj) {
-    if (property == '__Jasmine_been_here_before__') continue;
-    fn(property, obj.__lookupGetter__ ? (obj.__lookupGetter__(property) !== jasmine.undefined && 
-                                         obj.__lookupGetter__(property) !== null) : false);
-  }
-};
-
-jasmine.PrettyPrinter.prototype.emitArray = jasmine.unimplementedMethod_;
-jasmine.PrettyPrinter.prototype.emitObject = jasmine.unimplementedMethod_;
-jasmine.PrettyPrinter.prototype.emitScalar = jasmine.unimplementedMethod_;
-jasmine.PrettyPrinter.prototype.emitString = jasmine.unimplementedMethod_;
-
-jasmine.StringPrettyPrinter = function() {
-  jasmine.PrettyPrinter.call(this);
-
-  this.string = '';
-};
-jasmine.util.inherit(jasmine.StringPrettyPrinter, jasmine.PrettyPrinter);
-
-jasmine.StringPrettyPrinter.prototype.emitScalar = function(value) {
-  this.append(value);
-};
-
-jasmine.StringPrettyPrinter.prototype.emitString = function(value) {
-  this.append("'" + value + "'");
-};
-
-jasmine.StringPrettyPrinter.prototype.emitArray = function(array) {
-  this.append('[ ');
-  for (var i = 0; i < array.length; i++) {
-    if (i > 0) {
-      this.append(', ');
-    }
-    this.format(array[i]);
-  }
-  this.append(' ]');
-};
-
-jasmine.StringPrettyPrinter.prototype.emitObject = function(obj) {
-  var self = this;
-  this.append('{ ');
-  var first = true;
-
-  this.iterateObject(obj, function(property, isGetter) {
-    if (first) {
-      first = false;
-    } else {
-      self.append(', ');
-    }
-
-    self.append(property);
-    self.append(' : ');
-    if (isGetter) {
-      self.append('<getter>');
-    } else {
-      self.format(obj[property]);
-    }
-  });
-
-  this.append(' }');
-};
-
-jasmine.StringPrettyPrinter.prototype.append = function(value) {
-  this.string += value;
-};
-jasmine.Queue = function(env) {
-  this.env = env;
-  this.blocks = [];
-  this.running = false;
-  this.index = 0;
-  this.offset = 0;
-  this.abort = false;
-};
-
-jasmine.Queue.prototype.addBefore = function(block) {
-  this.blocks.unshift(block);
-};
-
-jasmine.Queue.prototype.add = function(block) {
-  this.blocks.push(block);
-};
-
-jasmine.Queue.prototype.insertNext = function(block) {
-  this.blocks.splice((this.index + this.offset + 1), 0, block);
-  this.offset++;
-};
-
-jasmine.Queue.prototype.start = function(onComplete) {
-  this.running = true;
-  this.onComplete = onComplete;
-  this.next_();
-};
-
-jasmine.Queue.prototype.isRunning = function() {
-  return this.running;
-};
-
-jasmine.Queue.LOOP_DONT_RECURSE = true;
-
-jasmine.Queue.prototype.next_ = function() {
-  var self = this;
-  var goAgain = true;
-
-  while (goAgain) {
-    goAgain = false;
-    
-    if (self.index < self.blocks.length && !this.abort) {
-      var calledSynchronously = true;
-      var completedSynchronously = false;
-
-      var onComplete = function () {
-        if (jasmine.Queue.LOOP_DONT_RECURSE && calledSynchronously) {
-          completedSynchronously = true;
-          return;
-        }
-
-        if (self.blocks[self.index].abort) {
-          self.abort = true;
-        }
-
-        self.offset = 0;
-        self.index++;
-
-        var now = new Date().getTime();
-        if (self.env.updateInterval && now - self.env.lastUpdate > self.env.updateInterval) {
-          self.env.lastUpdate = now;
-          self.env.setTimeout(function() {
-            self.next_();
-          }, 0);
-        } else {
-          if (jasmine.Queue.LOOP_DONT_RECURSE && completedSynchronously) {
-            goAgain = true;
-          } else {
-            self.next_();
-          }
-        }
-      };
-      self.blocks[self.index].execute(onComplete);
-
-      calledSynchronously = false;
-      if (completedSynchronously) {
-        onComplete();
-      }
-      
-    } else {
-      self.running = false;
-      if (self.onComplete) {
-        self.onComplete();
-      }
-    }
-  }
-};
-
-jasmine.Queue.prototype.results = function() {
-  var results = new jasmine.NestedResults();
-  for (var i = 0; i < this.blocks.length; i++) {
-    if (this.blocks[i].results) {
-      results.addResult(this.blocks[i].results());
-    }
-  }
-  return results;
-};
-
-
-/**
- * Runner
- *
- * @constructor
- * @param {jasmine.Env} env
- */
-jasmine.Runner = function(env) {
-  var self = this;
-  self.env = env;
-  self.queue = new jasmine.Queue(env);
-  self.before_ = [];
-  self.after_ = [];
-  self.suites_ = [];
-};
-
-jasmine.Runner.prototype.execute = function() {
-  var self = this;
-  if (self.env.reporter.reportRunnerStarting) {
-    self.env.reporter.reportRunnerStarting(this);
-  }
-  self.queue.start(function () {
-    self.finishCallback();
-  });
-};
-
-jasmine.Runner.prototype.beforeEach = function(beforeEachFunction) {
-  beforeEachFunction.typeName = 'beforeEach';
-  this.before_.splice(0,0,beforeEachFunction);
-};
-
-jasmine.Runner.prototype.afterEach = function(afterEachFunction) {
-  afterEachFunction.typeName = 'afterEach';
-  this.after_.splice(0,0,afterEachFunction);
-};
-
-
-jasmine.Runner.prototype.finishCallback = function() {
-  this.env.reporter.reportRunnerResults(this);
-};
-
-jasmine.Runner.prototype.addSuite = function(suite) {
-  this.suites_.push(suite);
-};
-
-jasmine.Runner.prototype.add = function(block) {
-  if (block instanceof jasmine.Suite) {
-    this.addSuite(block);
-  }
-  this.queue.add(block);
-};
-
-jasmine.Runner.prototype.specs = function () {
-  var suites = this.suites();
-  var specs = [];
-  for (var i = 0; i < suites.length; i++) {
-    specs = specs.concat(suites[i].specs());
-  }
-  return specs;
-};
-
-jasmine.Runner.prototype.suites = function() {
-  return this.suites_;
-};
-
-jasmine.Runner.prototype.topLevelSuites = function() {
-  var topLevelSuites = [];
-  for (var i = 0; i < this.suites_.length; i++) {
-    if (!this.suites_[i].parentSuite) {
-      topLevelSuites.push(this.suites_[i]);
-    }
-  }
-  return topLevelSuites;
-};
-
-jasmine.Runner.prototype.results = function() {
-  return this.queue.results();
-};
-/**
- * Internal representation of a Jasmine specification, or test.
- *
- * @constructor
- * @param {jasmine.Env} env
- * @param {jasmine.Suite} suite
- * @param {String} description
- */
-jasmine.Spec = function(env, suite, description) {
-  if (!env) {
-    throw new Error('jasmine.Env() required');
-  }
-  if (!suite) {
-    throw new Error('jasmine.Suite() required');
-  }
-  var spec = this;
-  spec.id = env.nextSpecId ? env.nextSpecId() : null;
-  spec.env = env;
-  spec.suite = suite;
-  spec.description = description;
-  spec.queue = new jasmine.Queue(env);
-
-  spec.afterCallbacks = [];
-  spec.spies_ = [];
-
-  spec.results_ = new jasmine.NestedResults();
-  spec.results_.description = description;
-  spec.matchersClass = null;
-};
-
-jasmine.Spec.prototype.getFullName = function() {
-  return this.suite.getFullName() + ' ' + this.description + '.';
-};
-
-
-jasmine.Spec.prototype.results = function() {
-  return this.results_;
-};
-
-/**
- * All parameters are pretty-printed and concatenated together, then written to the spec's output.
- *
- * Be careful not to leave calls to <code>jasmine.log</code> in production code.
- */
-jasmine.Spec.prototype.log = function() {
-  return this.results_.log(arguments);
-};
-
-jasmine.Spec.prototype.runs = function (func) {
-  var block = new jasmine.Block(this.env, func, this);
-  this.addToQueue(block);
-  return this;
-};
-
-jasmine.Spec.prototype.addToQueue = function (block) {
-  if (this.queue.isRunning()) {
-    this.queue.insertNext(block);
-  } else {
-    this.queue.add(block);
-  }
-};
-
-/**
- * @param {jasmine.ExpectationResult} result
- */
-jasmine.Spec.prototype.addMatcherResult = function(result) {
-  this.results_.addResult(result);
-};
-
-jasmine.Spec.prototype.expect = function(actual) {
-  var positive = new (this.getMatchersClass_())(this.env, actual, this);
-  positive.not = new (this.getMatchersClass_())(this.env, actual, this, true);
-  return positive;
-};
-
-/**
- * Waits a fixed time period before moving to the next block.
- *
- * @deprecated Use waitsFor() instead
- * @param {Number} timeout milliseconds to wait
- */
-jasmine.Spec.prototype.waits = function(timeout) {
-  var waitsFunc = new jasmine.WaitsBlock(this.env, timeout, this);
-  this.addToQueue(waitsFunc);
-  return this;
-};
-
-/**
- * Waits for the latchFunction to return true before proceeding to the next block.
- *
- * @param {Function} latchFunction
- * @param {String} optional_timeoutMessage
- * @param {Number} optional_timeout
- */
-jasmine.Spec.prototype.waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) {
-  var latchFunction_ = null;
-  var optional_timeoutMessage_ = null;
-  var optional_timeout_ = null;
-
-  for (var i = 0; i < arguments.length; i++) {
-    var arg = arguments[i];
-    switch (typeof arg) {
-      case 'function':
-        latchFunction_ = arg;
-        break;
-      case 'string':
-        optional_timeoutMessage_ = arg;
-        break;
-      case 'number':
-        optional_timeout_ = arg;
-        break;
-    }
-  }
-
-  var waitsForFunc = new jasmine.WaitsForBlock(this.env, optional_timeout_, latchFunction_, optional_timeoutMessage_, this);
-  this.addToQueue(waitsForFunc);
-  return this;
-};
-
-jasmine.Spec.prototype.fail = function (e) {
-  var expectationResult = new jasmine.ExpectationResult({
-    passed: false,
-    message: e ? jasmine.util.formatException(e) : 'Exception',
-    trace: { stack: e.stack }
-  });
-  this.results_.addResult(expectationResult);
-};
-
-jasmine.Spec.prototype.getMatchersClass_ = function() {
-  return this.matchersClass || this.env.matchersClass;
-};
-
-jasmine.Spec.prototype.addMatchers = function(matchersPrototype) {
-  var parent = this.getMatchersClass_();
-  var newMatchersClass = function() {
-    parent.apply(this, arguments);
-  };
-  jasmine.util.inherit(newMatchersClass, parent);
-  jasmine.Matchers.wrapInto_(matchersPrototype, newMatchersClass);
-  this.matchersClass = newMatchersClass;
-};
-
-jasmine.Spec.prototype.finishCallback = function() {
-  this.env.reporter.reportSpecResults(this);
-};
-
-jasmine.Spec.prototype.finish = function(onComplete) {
-  this.removeAllSpies();
-  this.finishCallback();
-  if (onComplete) {
-    onComplete();
-  }
-};
-
-jasmine.Spec.prototype.after = function(doAfter) {
-  if (this.queue.isRunning()) {
-    this.queue.add(new jasmine.Block(this.env, doAfter, this));
-  } else {
-    this.afterCallbacks.unshift(doAfter);
-  }
-};
-
-jasmine.Spec.prototype.execute = function(onComplete) {
-  var spec = this;
-  if (!spec.env.specFilter(spec)) {
-    spec.results_.skipped = true;
-    spec.finish(onComplete);
-    return;
-  }
-
-  this.env.reporter.reportSpecStarting(this);
-
-  spec.env.currentSpec = spec;
-
-  spec.addBeforesAndAftersToQueue();
-
-  spec.queue.start(function () {
-    spec.finish(onComplete);
-  });
-};
-
-jasmine.Spec.prototype.addBeforesAndAftersToQueue = function() {
-  var runner = this.env.currentRunner();
-  var i;
-
-  for (var suite = this.suite; suite; suite = suite.parentSuite) {
-    for (i = 0; i < suite.before_.length; i++) {
-      this.queue.addBefore(new jasmine.Block(this.env, suite.before_[i], this));
-    }
-  }
-  for (i = 0; i < runner.before_.length; i++) {
-    this.queue.addBefore(new jasmine.Block(this.env, runner.before_[i], this));
-  }
-  for (i = 0; i < this.afterCallbacks.length; i++) {
-    this.queue.add(new jasmine.Block(this.env, this.afterCallbacks[i], this));
-  }
-  for (suite = this.suite; suite; suite = suite.parentSuite) {
-    for (i = 0; i < suite.after_.length; i++) {
-      this.queue.add(new jasmine.Block(this.env, suite.after_[i], this));
-    }
-  }
-  for (i = 0; i < runner.after_.length; i++) {
-    this.queue.add(new jasmine.Block(this.env, runner.after_[i], this));
-  }
-};
-
-jasmine.Spec.prototype.explodes = function() {
-  throw 'explodes function should not have been called';
-};
-
-jasmine.Spec.prototype.spyOn = function(obj, methodName, ignoreMethodDoesntExist) {
-  if (obj == jasmine.undefined) {
-    throw "spyOn could not find an object to spy upon for " + methodName + "()";
-  }
-
-  if (!ignoreMethodDoesntExist && obj[methodName] === jasmine.undefined) {
-    throw methodName + '() method does not exist';
-  }
-
-  if (!ignoreMethodDoesntExist && obj[methodName] && obj[methodName].isSpy) {
-    throw new Error(methodName + ' has already been spied upon');
-  }
-
-  var spyObj = jasmine.createSpy(methodName);
-
-  this.spies_.push(spyObj);
-  spyObj.baseObj = obj;
-  spyObj.methodName = methodName;
-  spyObj.originalValue = obj[methodName];
-
-  obj[methodName] = spyObj;
-
-  return spyObj;
-};
-
-jasmine.Spec.prototype.removeAllSpies = function() {
-  for (var i = 0; i < this.spies_.length; i++) {
-    var spy = this.spies_[i];
-    spy.baseObj[spy.methodName] = spy.originalValue;
-  }
-  this.spies_ = [];
-};
-
-/**
- * Internal representation of a Jasmine suite.
- *
- * @constructor
- * @param {jasmine.Env} env
- * @param {String} description
- * @param {Function} specDefinitions
- * @param {jasmine.Suite} parentSuite
- */
-jasmine.Suite = function(env, description, specDefinitions, parentSuite) {
-  var self = this;
-  self.id = env.nextSuiteId ? env.nextSuiteId() : null;
-  self.description = description;
-  self.queue = new jasmine.Queue(env);
-  self.parentSuite = parentSuite;
-  self.env = env;
-  self.before_ = [];
-  self.after_ = [];
-  self.children_ = [];
-  self.suites_ = [];
-  self.specs_ = [];
-};
-
-jasmine.Suite.prototype.getFullName = function() {
-  var fullName = this.description;
-  for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) {
-    fullName = parentSuite.description + ' ' + fullName;
-  }
-  return fullName;
-};
-
-jasmine.Suite.prototype.finish = function(onComplete) {
-  this.env.reporter.reportSuiteResults(this);
-  this.finished = true;
-  if (typeof(onComplete) == 'function') {
-    onComplete();
-  }
-};
-
-jasmine.Suite.prototype.beforeEach = function(beforeEachFunction) {
-  beforeEachFunction.typeName = 'beforeEach';
-  this.before_.unshift(beforeEachFunction);
-};
-
-jasmine.Suite.prototype.afterEach = function(afterEachFunction) {
-  afterEachFunction.typeName = 'afterEach';
-  this.after_.unshift(afterEachFunction);
-};
-
-jasmine.Suite.prototype.results = function() {
-  return this.queue.results();
-};
-
-jasmine.Suite.prototype.add = function(suiteOrSpec) {
-  this.children_.push(suiteOrSpec);
-  if (suiteOrSpec instanceof jasmine.Suite) {
-    this.suites_.push(suiteOrSpec);
-    this.env.currentRunner().addSuite(suiteOrSpec);
-  } else {
-    this.specs_.push(suiteOrSpec);
-  }
-  this.queue.add(suiteOrSpec);
-};
-
-jasmine.Suite.prototype.specs = function() {
-  return this.specs_;
-};
-
-jasmine.Suite.prototype.suites = function() {
-  return this.suites_;
-};
-
-jasmine.Suite.prototype.children = function() {
-  return this.children_;
-};
-
-jasmine.Suite.prototype.execute = function(onComplete) {
-  var self = this;
-  this.queue.start(function () {
-    self.finish(onComplete);
-  });
-};
-jasmine.WaitsBlock = function(env, timeout, spec) {
-  this.timeout = timeout;
-  jasmine.Block.call(this, env, null, spec);
-};
-
-jasmine.util.inherit(jasmine.WaitsBlock, jasmine.Block);
-
-jasmine.WaitsBlock.prototype.execute = function (onComplete) {
-  if (jasmine.VERBOSE) {
-    this.env.reporter.log('>> Jasmine waiting for ' + this.timeout + ' ms...');
-  }
-  this.env.setTimeout(function () {
-    onComplete();
-  }, this.timeout);
-};
-/**
- * A block which waits for some condition to become true, with timeout.
- *
- * @constructor
- * @extends jasmine.Block
- * @param {jasmine.Env} env The Jasmine environment.
- * @param {Number} timeout The maximum time in milliseconds to wait for the condition to become true.
- * @param {Function} latchFunction A function which returns true when the desired condition has been met.
- * @param {String} message The message to display if the desired condition hasn't been met within the given time period.
- * @param {jasmine.Spec} spec The Jasmine spec.
- */
-jasmine.WaitsForBlock = function(env, timeout, latchFunction, message, spec) {
-  this.timeout = timeout || env.defaultTimeoutInterval;
-  this.latchFunction = latchFunction;
-  this.message = message;
-  this.totalTimeSpentWaitingForLatch = 0;
-  jasmine.Block.call(this, env, null, spec);
-};
-jasmine.util.inherit(jasmine.WaitsForBlock, jasmine.Block);
-
-jasmine.WaitsForBlock.TIMEOUT_INCREMENT = 10;
-
-jasmine.WaitsForBlock.prototype.execute = function(onComplete) {
-  if (jasmine.VERBOSE) {
-    this.env.reporter.log('>> Jasmine waiting for ' + (this.message || 'something to happen'));
-  }
-  var latchFunctionResult;
-  try {
-    latchFunctionResult = this.latchFunction.apply(this.spec);
-  } catch (e) {
-    this.spec.fail(e);
-    onComplete();
-    return;
-  }
-
-  if (latchFunctionResult) {
-    onComplete();
-  } else if (this.totalTimeSpentWaitingForLatch >= this.timeout) {
-    var message = 'timed out after ' + this.timeout + ' msec waiting for ' + (this.message || 'something to happen');
-    this.spec.fail({
-      name: 'timeout',
-      message: message
-    });
-
-    this.abort = true;
-    onComplete();
-  } else {
-    this.totalTimeSpentWaitingForLatch += jasmine.WaitsForBlock.TIMEOUT_INCREMENT;
-    var self = this;
-    this.env.setTimeout(function() {
-      self.execute(onComplete);
-    }, jasmine.WaitsForBlock.TIMEOUT_INCREMENT);
-  }
-};
-// Mock setTimeout, clearTimeout
-// Contributed by Pivotal Computer Systems, www.pivotalsf.com
-
-jasmine.FakeTimer = function() {
-  this.reset();
-
-  var self = this;
-  self.setTimeout = function(funcToCall, millis) {
-    self.timeoutsMade++;
-    self.scheduleFunction(self.timeoutsMade, funcToCall, millis, false);
-    return self.timeoutsMade;
-  };
-
-  self.setInterval = function(funcToCall, millis) {
-    self.timeoutsMade++;
-    self.scheduleFunction(self.timeoutsMade, funcToCall, millis, true);
-    return self.timeoutsMade;
-  };
-
-  self.clearTimeout = function(timeoutKey) {
-    self.scheduledFunctions[timeoutKey] = jasmine.undefined;
-  };
-
-  self.clearInterval = function(timeoutKey) {
-    self.scheduledFunctions[timeoutKey] = jasmine.undefined;
-  };
-
-};
-
-jasmine.FakeTimer.prototype.reset = function() {
-  this.timeoutsMade = 0;
-  this.scheduledFunctions = {};
-  this.nowMillis = 0;
-};
-
-jasmine.FakeTimer.prototype.tick = function(millis) {
-  var oldMillis = this.nowMillis;
-  var newMillis = oldMillis + millis;
-  this.runFunctionsWithinRange(oldMillis, newMillis);
-  this.nowMillis = newMillis;
-};
-
-jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMillis) {
-  var scheduledFunc;
-  var funcsToRun = [];
-  for (var timeoutKey in this.scheduledFunctions) {
-    scheduledFunc = this.scheduledFunctions[timeoutKey];
-    if (scheduledFunc != jasmine.undefined &&
-        scheduledFunc.runAtMillis >= oldMillis &&
-        scheduledFunc.runAtMillis <= nowMillis) {
-      funcsToRun.push(scheduledFunc);
-      this.scheduledFunctions[timeoutKey] = jasmine.undefined;
-    }
-  }
-
-  if (funcsToRun.length > 0) {
-    funcsToRun.sort(function(a, b) {
-      return a.runAtMillis - b.runAtMillis;
-    });
-    for (var i = 0; i < funcsToRun.length; ++i) {
-      try {
-        var funcToRun = funcsToRun[i];
-        this.nowMillis = funcToRun.runAtMillis;
-        funcToRun.funcToCall();
-        if (funcToRun.recurring) {
-          this.scheduleFunction(funcToRun.timeoutKey,
-              funcToRun.funcToCall,
-              funcToRun.millis,
-              true);
-        }
-      } catch(e) {
-      }
-    }
-    this.runFunctionsWithinRange(oldMillis, nowMillis);
-  }
-};
-
-jasmine.FakeTimer.prototype.scheduleFunction = function(timeoutKey, funcToCall, millis, recurring) {
-  this.scheduledFunctions[timeoutKey] = {
-    runAtMillis: this.nowMillis + millis,
-    funcToCall: funcToCall,
-    recurring: recurring,
-    timeoutKey: timeoutKey,
-    millis: millis
-  };
-};
-
-/**
- * @namespace
- */
-jasmine.Clock = {
-  defaultFakeTimer: new jasmine.FakeTimer(),
-
-  reset: function() {
-    jasmine.Clock.assertInstalled();
-    jasmine.Clock.defaultFakeTimer.reset();
-  },
-
-  tick: function(millis) {
-    jasmine.Clock.assertInstalled();
-    jasmine.Clock.defaultFakeTimer.tick(millis);
-  },
-
-  runFunctionsWithinRange: function(oldMillis, nowMillis) {
-    jasmine.Clock.defaultFakeTimer.runFunctionsWithinRange(oldMillis, nowMillis);
-  },
-
-  scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) {
-    jasmine.Clock.defaultFakeTimer.scheduleFunction(timeoutKey, funcToCall, millis, recurring);
-  },
-
-  useMock: function() {
-    if (!jasmine.Clock.isInstalled()) {
-      var spec = jasmine.getEnv().currentSpec;
-      spec.after(jasmine.Clock.uninstallMock);
-
-      jasmine.Clock.installMock();
-    }
-  },
-
-  installMock: function() {
-    jasmine.Clock.installed = jasmine.Clock.defaultFakeTimer;
-  },
-
-  uninstallMock: function() {
-    jasmine.Clock.assertInstalled();
-    jasmine.Clock.installed = jasmine.Clock.real;
-  },
-
-  real: {
-    setTimeout: jasmine.getGlobal().setTimeout,
-    clearTimeout: jasmine.getGlobal().clearTimeout,
-    setInterval: jasmine.getGlobal().setInterval,
-    clearInterval: jasmine.getGlobal().clearInterval
-  },
-
-  assertInstalled: function() {
-    if (!jasmine.Clock.isInstalled()) {
-      throw new Error("Mock clock is not installed, use jasmine.Clock.useMock()");
-    }
-  },
-
-  isInstalled: function() {
-    return jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer;
-  },
-
-  installed: null
-};
-jasmine.Clock.installed = jasmine.Clock.real;
-
-//else for IE support
-jasmine.getGlobal().setTimeout = function(funcToCall, millis) {
-  if (jasmine.Clock.installed.setTimeout.apply) {
-    return jasmine.Clock.installed.setTimeout.apply(this, arguments);
-  } else {
-    return jasmine.Clock.installed.setTimeout(funcToCall, millis);
-  }
-};
-
-jasmine.getGlobal().setInterval = function(funcToCall, millis) {
-  if (jasmine.Clock.installed.setInterval.apply) {
-    return jasmine.Clock.installed.setInterval.apply(this, arguments);
-  } else {
-    return jasmine.Clock.installed.setInterval(funcToCall, millis);
-  }
-};
-
-jasmine.getGlobal().clearTimeout = function(timeoutKey) {
-  if (jasmine.Clock.installed.clearTimeout.apply) {
-    return jasmine.Clock.installed.clearTimeout.apply(this, arguments);
-  } else {
-    return jasmine.Clock.installed.clearTimeout(timeoutKey);
-  }
-};
-
-jasmine.getGlobal().clearInterval = function(timeoutKey) {
-  if (jasmine.Clock.installed.clearTimeout.apply) {
-    return jasmine.Clock.installed.clearInterval.apply(this, arguments);
-  } else {
-    return jasmine.Clock.installed.clearInterval(timeoutKey);
-  }
-};
-
-jasmine.version_= {
-  "major": 1,
-  "minor": 1,
-  "build": 0,
-  "revision": 1315677058
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine_favicon.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine_favicon.png b/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine_favicon.png
deleted file mode 100644
index 218f3b4..0000000
Binary files a/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine_favicon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/LICENSE b/web/demos/package/node_modules/mongodb/node_modules/kerberos/LICENSE
deleted file mode 100644
index 261eeb9..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   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 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.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/README.md b/web/demos/package/node_modules/mongodb/node_modules/kerberos/README.md
deleted file mode 100644
index 7428b0d..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-kerberos
-========
-
-Kerberos library for node.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/kerberos/binding.gyp
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/kerberos/binding.gyp b/web/demos/package/node_modules/mongodb/node_modules/kerberos/binding.gyp
deleted file mode 100644
index 027a70f..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/kerberos/binding.gyp
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  'targets': [
-    {
-      'target_name': 'kerberos',      
-      'cflags!': [ '-fno-exceptions' ],
-      'cflags_cc!': [ '-fno-exceptions' ],
-      'conditions': [
-        ['OS=="mac"', {
-          'sources': [ 'lib/kerberos.cc', 'lib/worker.cc', 'lib/kerberosgss.c', 'lib/base64.c', 'lib/kerberos_context.cc' ],
-          'defines': [
-            '__MACOSX_CORE__'
-          ],
-          'xcode_settings': {
-            'GCC_ENABLE_CPP_EXCEPTIONS': 'YES'
-          },
-          "link_settings": {
-            "libraries": [
-              "-lkrb5"
-            ]
-          }
-        }],
-        ['OS=="win"',  {
-          'sources': [ 
-            'lib/win32/kerberos.cc', 
-            'lib/win32/base64.c', 
-            'lib/win32/worker.cc',
-            'lib/win32/kerberos_sspi.c',
-            'lib/win32/wrappers/security_buffer.cc',
-            'lib/win32/wrappers/security_buffer_descriptor.cc',
-            'lib/win32/wrappers/security_context.cc',
-            'lib/win32/wrappers/security_credentials.cc'
-          ],          
-          "link_settings": {
-            "libraries": [
-            ]
-          }
-        }]
-      ]
-    }
-  ]
-}
\ No newline at end of file


[23/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/whitespace.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/whitespace.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/whitespace.js
deleted file mode 100644
index 90b9075..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/whitespace.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var optimist = require('../');
-var test = require('tap').test;
-
-test('whitespace should be whitespace' , function (t) {
-    t.plan(1);
-    var x = optimist.parse([ '-x', '\t' ]).x;
-    t.equal(x, '\t');
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/.npmignore b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/.npmignore
deleted file mode 100644
index 9303c34..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules/
-npm-debug.log
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/LICENSE b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/LICENSE
deleted file mode 100644
index ed4a4e7..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010 Charlie Robbins.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/README.md b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/README.md
deleted file mode 100644
index 332704e..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/README.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# node-pkginfo
-
-An easy way to expose properties on a module from a package.json
-
-## Installation
-
-### Installing npm (node package manager)
-```
-  curl http://npmjs.org/install.sh | sh
-```
-
-### Installing pkginfo
-```
-  [sudo] npm install pkginfo
-```
-
-## Motivation
-How often when writing node.js modules have you written the following line(s) of code? 
-
-* Hard code your version string into your code
-
-``` js
-  exports.version = '0.1.0';
-```
-
-* Programmatically expose the version from the package.json
-
-``` js
-  exports.version = JSON.parse(fs.readFileSync('/path/to/package.json', 'utf8')).version;
-```
-
-In other words, how often have you wanted to expose basic information from your package.json onto your module programmatically? **WELL NOW YOU CAN!**
-
-## Usage
-
-Using `pkginfo` is idiot-proof, just require and invoke it. 
-
-``` js
-  var pkginfo = require('pkginfo')(module);
-  
-  console.dir(module.exports);
-```
-
-By invoking the `pkginfo` module all of the properties in your `package.json` file will be automatically exposed on the callee module (i.e. the parent module of `pkginfo`). 
-
-Here's a sample of the output:
-
-```
-  { name: 'simple-app',
-    description: 'A test fixture for pkginfo',
-    version: '0.1.0',
-    author: 'Charlie Robbins <ch...@gmail.com>',
-    keywords: [ 'test', 'fixture' ],
-    main: './index.js',
-    scripts: { test: 'vows test/*-test.js --spec' },
-    engines: { node: '>= 0.4.0' } }
-```
-
-### Expose specific properties
-If you don't want to expose **all** properties on from your `package.json` on your module then simple pass those properties to the `pkginfo` function:
-
-``` js
-  var pkginfo = require('pkginfo')(module, 'version', 'author');
-  
-  console.dir(module.exports);
-```
-
-```
-  { version: '0.1.0',
-    author: 'Charlie Robbins <ch...@gmail.com>' }
-```
-
-If you're looking for further usage see the [examples][0] included in this repository. 
-
-## Run Tests
-Tests are written in [vows][1] and give complete coverage of all APIs.
-
-```
-  vows test/*-test.js --spec
-```
-
-[0]: https://github.com/indexzero/node-pkginfo/tree/master/examples
-[1]: http://vowsjs.org
-
-#### Author: [Charlie Robbins](http://nodejitsu.com)
-#### License: MIT
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/docs/docco.css
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/docs/docco.css b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/docs/docco.css
deleted file mode 100644
index bd54134..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/docs/docco.css
+++ /dev/null
@@ -1,194 +0,0 @@
-/*--------------------- Layout and Typography ----------------------------*/
-body {
-  font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
-  font-size: 15px;
-  line-height: 22px;
-  color: #252519;
-  margin: 0; padding: 0;
-}
-a {
-  color: #261a3b;
-}
-  a:visited {
-    color: #261a3b;
-  }
-p {
-  margin: 0 0 15px 0;
-}
-h4, h5, h6 {
-  color: #333;
-  margin: 6px 0 6px 0;
-  font-size: 13px;
-}
-  h2, h3 {
-    margin-bottom: 0;
-    color: #000;
-  }
-    h1 {
-      margin-top: 40px;
-      margin-bottom: 15px;
-      color: #000;
-    }
-#container {
-  position: relative;
-}
-#background {
-  position: fixed;
-  top: 0; left: 525px; right: 0; bottom: 0;
-  background: #f5f5ff;
-  border-left: 1px solid #e5e5ee;
-  z-index: -1;
-}
-#jump_to, #jump_page {
-  background: white;
-  -webkit-box-shadow: 0 0 25px #777; -moz-box-shadow: 0 0 25px #777;
-  -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px;
-  font: 10px Arial;
-  text-transform: uppercase;
-  cursor: pointer;
-  text-align: right;
-}
-#jump_to, #jump_wrapper {
-  position: fixed;
-  right: 0; top: 0;
-  padding: 5px 10px;
-}
-  #jump_wrapper {
-    padding: 0;
-    display: none;
-  }
-    #jump_to:hover #jump_wrapper {
-      display: block;
-    }
-    #jump_page {
-      padding: 5px 0 3px;
-      margin: 0 0 25px 25px;
-    }
-      #jump_page .source {
-        display: block;
-        padding: 5px 10px;
-        text-decoration: none;
-        border-top: 1px solid #eee;
-      }
-        #jump_page .source:hover {
-          background: #f5f5ff;
-        }
-        #jump_page .source:first-child {
-        }
-table td {
-  border: 0;
-  outline: 0;
-}
-  td.docs, th.docs {
-    max-width: 450px;
-    min-width: 450px;
-    min-height: 5px;
-    padding: 10px 25px 1px 50px;
-    overflow-x: hidden;
-    vertical-align: top;
-    text-align: left;
-  }
-    .docs pre {
-      margin: 15px 0 15px;
-      padding-left: 15px;
-    }
-    .docs p tt, .docs p code {
-      background: #f8f8ff;
-      border: 1px solid #dedede;
-      font-size: 12px;
-      padding: 0 0.2em;
-    }
-    .pilwrap {
-      position: relative;
-    }
-      .pilcrow {
-        font: 12px Arial;
-        text-decoration: none;
-        color: #454545;
-        position: absolute;
-        top: 3px; left: -20px;
-        padding: 1px 2px;
-        opacity: 0;
-        -webkit-transition: opacity 0.2s linear;
-      }
-        td.docs:hover .pilcrow {
-          opacity: 1;
-        }
-  td.code, th.code {
-    padding: 14px 15px 16px 25px;
-    width: 100%;
-    vertical-align: top;
-    background: #f5f5ff;
-    border-left: 1px solid #e5e5ee;
-  }
-    pre, tt, code {
-      font-size: 12px; line-height: 18px;
-      font-family: Menlo, Monaco, Consolas, "Lucida Console", monospace;
-      margin: 0; padding: 0;
-    }
-
-
-/*---------------------- Syntax Highlighting -----------------------------*/
-td.linenos { background-color: #f0f0f0; padding-right: 10px; }
-span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
-body .hll { background-color: #ffffcc }
-body .c { color: #408080; font-style: italic }  /* Comment */
-body .err { border: 1px solid #FF0000 }         /* Error */
-body .k { color: #954121 }                      /* Keyword */
-body .o { color: #666666 }                      /* Operator */
-body .cm { color: #408080; font-style: italic } /* Comment.Multiline */
-body .cp { color: #BC7A00 }                     /* Comment.Preproc */
-body .c1 { color: #408080; font-style: italic } /* Comment.Single */
-body .cs { color: #408080; font-style: italic } /* Comment.Special */
-body .gd { color: #A00000 }                     /* Generic.Deleted */
-body .ge { font-style: italic }                 /* Generic.Emph */
-body .gr { color: #FF0000 }                     /* Generic.Error */
-body .gh { color: #000080; font-weight: bold }  /* Generic.Heading */
-body .gi { color: #00A000 }                     /* Generic.Inserted */
-body .go { color: #808080 }                     /* Generic.Output */
-body .gp { color: #000080; font-weight: bold }  /* Generic.Prompt */
-body .gs { font-weight: bold }                  /* Generic.Strong */
-body .gu { color: #800080; font-weight: bold }  /* Generic.Subheading */
-body .gt { color: #0040D0 }                     /* Generic.Traceback */
-body .kc { color: #954121 }                     /* Keyword.Constant */
-body .kd { color: #954121; font-weight: bold }  /* Keyword.Declaration */
-body .kn { color: #954121; font-weight: bold }  /* Keyword.Namespace */
-body .kp { color: #954121 }                     /* Keyword.Pseudo */
-body .kr { color: #954121; font-weight: bold }  /* Keyword.Reserved */
-body .kt { color: #B00040 }                     /* Keyword.Type */
-body .m { color: #666666 }                      /* Literal.Number */
-body .s { color: #219161 }                      /* Literal.String */
-body .na { color: #7D9029 }                     /* Name.Attribute */
-body .nb { color: #954121 }                     /* Name.Builtin */
-body .nc { color: #0000FF; font-weight: bold }  /* Name.Class */
-body .no { color: #880000 }                     /* Name.Constant */
-body .nd { color: #AA22FF }                     /* Name.Decorator */
-body .ni { color: #999999; font-weight: bold }  /* Name.Entity */
-body .ne { color: #D2413A; font-weight: bold }  /* Name.Exception */
-body .nf { color: #0000FF }                     /* Name.Function */
-body .nl { color: #A0A000 }                     /* Name.Label */
-body .nn { color: #0000FF; font-weight: bold }  /* Name.Namespace */
-body .nt { color: #954121; font-weight: bold }  /* Name.Tag */
-body .nv { color: #19469D }                     /* Name.Variable */
-body .ow { color: #AA22FF; font-weight: bold }  /* Operator.Word */
-body .w { color: #bbbbbb }                      /* Text.Whitespace */
-body .mf { color: #666666 }                     /* Literal.Number.Float */
-body .mh { color: #666666 }                     /* Literal.Number.Hex */
-body .mi { color: #666666 }                     /* Literal.Number.Integer */
-body .mo { color: #666666 }                     /* Literal.Number.Oct */
-body .sb { color: #219161 }                     /* Literal.String.Backtick */
-body .sc { color: #219161 }                     /* Literal.String.Char */
-body .sd { color: #219161; font-style: italic } /* Literal.String.Doc */
-body .s2 { color: #219161 }                     /* Literal.String.Double */
-body .se { color: #BB6622; font-weight: bold }  /* Literal.String.Escape */
-body .sh { color: #219161 }                     /* Literal.String.Heredoc */
-body .si { color: #BB6688; font-weight: bold }  /* Literal.String.Interpol */
-body .sx { color: #954121 }                     /* Literal.String.Other */
-body .sr { color: #BB6688 }                     /* Literal.String.Regex */
-body .s1 { color: #219161 }                     /* Literal.String.Single */
-body .ss { color: #19469D }                     /* Literal.String.Symbol */
-body .bp { color: #954121 }                     /* Name.Builtin.Pseudo */
-body .vc { color: #19469D }                     /* Name.Variable.Class */
-body .vg { color: #19469D }                     /* Name.Variable.Global */
-body .vi { color: #19469D }                     /* Name.Variable.Instance */
-body .il { color: #666666 }                     /* Literal.Number.Integer.Long */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/docs/pkginfo.html
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/docs/pkginfo.html b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/docs/pkginfo.html
deleted file mode 100644
index bf615fa..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/docs/pkginfo.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>pkginfo.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               pkginfo.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span class="cm">/*</span>
-<span class="cm"> * pkginfo.js: Top-level include for the pkginfo module</span>
-<span class="cm"> *</span>
-<span class="cm"> * (C) 2011, Charlie Robbins</span>
-<span class="cm"> *</span>
-<span class="cm"> */</span>
- 
-<span class="kd">var</span> <span class="nx">fs</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;fs&#39;</span><span class="p">),</span>
-    <span class="nx">path</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;path&#39;</span><span class="p">);</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <h3>function pkginfo ([options, 'property', 'property' ..])</h3>
-
-<h4>@pmodule {Module} Parent module to read from.</h4>
-
-<h4>@options {Object|Array|string} <strong>Optional</strong> Options used when exposing properties.</h4>
-
-<h4>@arguments {string...} <strong>Optional</strong> Specified properties to expose.</h4>
-
-<p>Exposes properties from the package.json file for the parent module on 
-it's exports. Valid usage:</p>
-
-<p><code>require('pkginfo')()</code></p>
-
-<p><code>require('pkginfo')('version', 'author');</code></p>
-
-<p><code>require('pkginfo')(['version', 'author']);</code></p>
-
-<p><code>require('pkginfo')({ include: ['version', 'author'] });</code></p>             </td>             <td class="code">               <div class="highlight"><pre><span class="kd">var</span> <span class="nx">pkginfo</span> <span class="o">=</span> <span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
-  <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="p">[].</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">,</span> <span class="mi">2</span><span class="p">).</span><span class="nx">filter</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">arg</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="k">typeof</span> <span class="nx">arg</span> <span class="o">===</span> <span class="s1">&#39;string&#39;</span><span class="p">;</span>
-  <span class="p">});</span>
-  </pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p><strong>Parse variable arguments</strong></p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="k">if</span> <span class="p">(</span><span class="nb">Array</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">options</span><span class="p">))</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>If the options passed in is an Array assume that
-it is the Array of properties to expose from the
-on the package.json file on the parent module.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">include</span><span class="o">:</span> <span class="nx">options</span> <span class="p">};</span>
-  <span class="p">}</span>
-  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">options</span> <span class="o">===</span> <span class="s1">&#39;string&#39;</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-5">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-5">&#182;</a>               </div>               <p>Otherwise if the first argument is a string, then
-assume that it is the first property to expose from
-the package.json file on the parent module.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">include</span><span class="o">:</span> <span class="p">[</span><span class="nx">options</span><span class="p">]</span> <span class="p">};</span>
-  <span class="p">}</span>
-  </pre></div>             </td>           </tr>                               <tr id="section-6">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-6">&#182;</a>               </div>               <p><strong>Setup default options</strong></p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{</span> <span class="nx">include</span><span class="o">:</span> <span class="p">[]</span> <span class="p">};</span>
-  
-  <span class="k">if</span> <span class="p">(</span><span class="nx">args</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-7">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-7">&#182;</a>               </div>               <p>If additional string arguments have been passed in
-then add them to the properties to expose on the 
-parent module. </p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">options</span><span class="p">.</span><span class="nx">include</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nx">include</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span><span class="nx">args</span><span class="p">);</span>
-  <span class="p">}</span>
-  
-  <span class="kd">var</span> <span class="nx">pkg</span> <span class="o">=</span> <span class="nx">pkginfo</span><span class="p">.</span><span class="nx">read</span><span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">options</span><span class="p">.</span><span class="nx">dir</span><span class="p">).</span><span class="kr">package</span><span class="p">;</span>
-  <span class="nb">Object</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="nx">pkg</span><span class="p">).</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">if</span> <span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">include</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="o">!~</span><span class="nx">options</span><span class="p">.</span><span class="nx">include</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">key</span><span class="p">))</span> <span class="p">{</span>
-      <span class="k">return</span><span class="p">;</span>
-    <span class="p">}</span>
-    
-    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">pmodule</span><span class="p">.</span><span class="nx">exports</span><span class="p">[</span><span class="nx">key</span><span class="p">])</span> <span class="p">{</span>
-      <span class="nx">pmodule</span><span class="p">.</span><span class="nx">exports</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">pkg</span><span class="p">[</span><span class="nx">key</span><span class="p">];</span>
-    <span class="p">}</span>
-  <span class="p">});</span>
-  
-  <span class="k">return</span> <span class="nx">pkginfo</span><span class="p">;</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-8">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-8">&#182;</a>               </div>               <h3>function find (dir)</h3>
-
-<h4>@pmodule {Module} Parent module to read from.</h4>
-
-<h4>@dir {string} <strong>Optional</strong> Directory to start search from.</h4>
-
-<p>Searches up the directory tree from <code>dir</code> until it finds a directory
-which contains a <code>package.json</code> file. </p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">pkginfo</span><span class="p">.</span><span class="nx">find</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">dir</span><span class="p">)</span> <span class="p">{</span>
-  <span class="nx">dir</span> <span class="o">=</span> <span class="nx">dir</span> <span class="o">||</span> <span class="nx">pmodule</span><span class="p">.</span><span class="nx">filename</span><span class="p">;</span>
-  <span class="nx">dir</span> <span class="o">=</span> <span class="nx">path</span><span class="p">.</span><span class="nx">dirname</span><span class="p">(</span><span class="nx">dir</span><span class="p">);</span> 
-  
-  <span class="kd">var</span> <span class="nx">files</span> <span class="o">=</span> <span class="nx">fs</span><span class="p">.</span><span class="nx">readdirSync</span><span class="p">(</span><span class="nx">dir</span><span class="p">);</span>
-  
-  <span class="k">if</span> <span class="p">(</span><span class="o">~</span><span class="nx">files</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">&#39;package.json&#39;</span><span class="p">))</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="nx">path</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="nx">dir</span><span class="p">,</span> <span class="s1">&#39;package.json&#39;</span><span class="p">);</span>
-  <span class="p">}</span>
-  
-  <span class="k">if</span> <span class="p">(</span><span class="nx">dir</span> <span class="o">===</span> <span class="s1">&#39;/&#39;</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Could not find package.json up from: &#39;</span> <span class="o">+</span> <span class="nx">dir</span><span class="p">);</span>
-  <span class="p">}</span>
-  
-  <span class="k">return</span> <span class="nx">pkginfo</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="nx">dir</span><span class="p">);</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-9">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-9">&#182;</a>               </div>               <h3>function read (pmodule, dir)</h3>
-
-<h4>@pmodule {Module} Parent module to read from.</h4>
-
-<h4>@dir {string} <strong>Optional</strong> Directory to start search from.</h4>
-
-<p>Searches up the directory tree from <code>dir</code> until it finds a directory
-which contains a <code>package.json</code> file and returns the package information.</p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">pkginfo</span><span class="p">.</span><span class="nx">read</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">dir</span><span class="p">)</span> <span class="p">{</span> 
-  <span class="nx">dir</span> <span class="o">=</span> <span class="nx">pkginfo</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">dir</span><span class="p">);</span>
-  
-  <span class="kd">var</span> <span class="nx">data</span> <span class="o">=</span> <span class="nx">fs</span><span class="p">.</span><span class="nx">readFileSync</span><span class="p">(</span><span class="nx">dir</span><span class="p">).</span><span class="nx">toString</span><span class="p">();</span>
-      
-  <span class="k">return</span> <span class="p">{</span>
-    <span class="nx">dir</span><span class="o">:</span> <span class="nx">dir</span><span class="p">,</span> 
-    <span class="kr">package</span><span class="o">:</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>
-  <span class="p">};</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-10">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-10">&#182;</a>               </div>               <p>Call <code>pkginfo</code> on this module and expose version.</p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">pkginfo</span><span class="p">(</span><span class="nx">module</span><span class="p">,</span> <span class="p">{</span>
-  <span class="nx">dir</span><span class="o">:</span> <span class="nx">__dirname</span><span class="p">,</span>
-  <span class="nx">include</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;version&#39;</span><span class="p">],</span>
-  <span class="nx">target</span><span class="o">:</span> <span class="nx">pkginfo</span>
-<span class="p">});</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/all-properties.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/all-properties.js b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/all-properties.js
deleted file mode 100644
index fd1d831..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/all-properties.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * all-properties.js: Sample of including all properties from a package.json file
- *
- * (C) 2011, Charlie Robbins
- *
- */
-
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module);
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/array-argument.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/array-argument.js b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/array-argument.js
deleted file mode 100644
index b1b6848..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/array-argument.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * array-argument.js: Sample of including specific properties from a package.json file
- *                    using Array argument syntax.
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module, ['version', 'author']);
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/multiple-properties.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/multiple-properties.js b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/multiple-properties.js
deleted file mode 100644
index b4b5fd6..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/multiple-properties.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * multiple-properties.js: Sample of including multiple properties from a package.json file
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module, 'version', 'author');
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/object-argument.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/object-argument.js b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/object-argument.js
deleted file mode 100644
index 28420c8..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/object-argument.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * object-argument.js: Sample of including specific properties from a package.json file
- *                     using Object argument syntax.
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module, {
-      include: ['version', 'author']
-    });
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/package.json b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/package.json
deleted file mode 100644
index 1f2f01c..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/package.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "name": "simple-app",
-  "description": "A test fixture for pkginfo",
-  "version": "0.1.0",
-  "author": "Charlie Robbins <ch...@gmail.com>",
-  "keywords": ["test", "fixture"],
-  "main": "./index.js",
-  "scripts": { "test": "vows test/*-test.js --spec" },
-  "engines": { "node": ">= 0.4.0" }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/single-property.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/single-property.js b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/single-property.js
deleted file mode 100644
index 4f44561..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/single-property.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * single-property.js: Sample of including a single specific properties from a package.json file
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module, 'version');
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/subdir/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/subdir/package.json b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/subdir/package.json
deleted file mode 100644
index aa85410..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/subdir/package.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "name": "simple-app-subdir",
-  "description": "A test fixture for pkginfo",
-  "version": "0.1.0",
-  "author": "Charlie Robbins <ch...@gmail.com>",
-  "keywords": ["test", "fixture"],
-  "main": "./index.js",
-  "scripts": { "test": "vows test/*-test.js --spec" },
-  "engines": { "node": ">= 0.4.0" },
-  "subdironly": "true"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/target-dir.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/target-dir.js b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/target-dir.js
deleted file mode 100644
index 88770e6..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/examples/target-dir.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * multiple-properties.js: Sample of including multiple properties from a package.json file
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    path = require('path'),
-    pkginfo = require('../lib/pkginfo')(module, { dir: path.resolve(__dirname, 'subdir' )});
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/lib/pkginfo.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/lib/pkginfo.js b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/lib/pkginfo.js
deleted file mode 100644
index c5dc020..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/lib/pkginfo.js
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * pkginfo.js: Top-level include for the pkginfo module
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var fs = require('fs'),
-    path = require('path');
-
-//
-// ### function pkginfo ([options, 'property', 'property' ..])
-// #### @pmodule {Module} Parent module to read from.
-// #### @options {Object|Array|string} **Optional** Options used when exposing properties.
-// #### @arguments {string...} **Optional** Specified properties to expose.
-// Exposes properties from the package.json file for the parent module on 
-// it's exports. Valid usage:
-//
-// `require('pkginfo')()`
-//
-// `require('pkginfo')('version', 'author');`
-//
-// `require('pkginfo')(['version', 'author']);`
-//
-// `require('pkginfo')({ include: ['version', 'author'] });`
-//
-var pkginfo = module.exports = function (pmodule, options) {
-  var args = [].slice.call(arguments, 2).filter(function (arg) {
-    return typeof arg === 'string';
-  });
-  
-  //
-  // **Parse variable arguments**
-  //
-  if (Array.isArray(options)) {
-    //
-    // If the options passed in is an Array assume that
-    // it is the Array of properties to expose from the
-    // on the package.json file on the parent module.
-    //
-    options = { include: options };
-  }
-  else if (typeof options === 'string') {
-    //
-    // Otherwise if the first argument is a string, then
-    // assume that it is the first property to expose from
-    // the package.json file on the parent module.
-    //
-    options = { include: [options] };
-  }
-  
-  //
-  // **Setup default options**
-  //
-  options = options || {};
-  
-  // ensure that includes have been defined
-  options.include = options.include || [];
-  
-  if (args.length > 0) {
-    //
-    // If additional string arguments have been passed in
-    // then add them to the properties to expose on the 
-    // parent module. 
-    //
-    options.include = options.include.concat(args);
-  }
-  
-  var pkg = pkginfo.read(pmodule, options.dir).package;
-  Object.keys(pkg).forEach(function (key) {
-    if (options.include.length > 0 && !~options.include.indexOf(key)) {
-      return;
-    }
-    
-    if (!pmodule.exports[key]) {
-      pmodule.exports[key] = pkg[key];
-    }
-  });
-  
-  return pkginfo;
-};
-
-//
-// ### function find (dir)
-// #### @pmodule {Module} Parent module to read from.
-// #### @dir {string} **Optional** Directory to start search from.
-// Searches up the directory tree from `dir` until it finds a directory
-// which contains a `package.json` file. 
-//
-pkginfo.find = function (pmodule, dir) {
-  if (! dir) {
-    dir = path.dirname(pmodule.filename);
-  }
-  
-  var files = fs.readdirSync(dir);
-  
-  if (~files.indexOf('package.json')) {
-    return path.join(dir, 'package.json');
-  }
-  
-  if (dir === '/') {
-    throw new Error('Could not find package.json up from: ' + dir);
-  }
-  else if (!dir || dir === '.') {
-    throw new Error('Cannot find package.json from unspecified directory');
-  }
-  
-  return pkginfo.find(pmodule, path.dirname(dir));
-};
-
-//
-// ### function read (pmodule, dir)
-// #### @pmodule {Module} Parent module to read from.
-// #### @dir {string} **Optional** Directory to start search from.
-// Searches up the directory tree from `dir` until it finds a directory
-// which contains a `package.json` file and returns the package information.
-//
-pkginfo.read = function (pmodule, dir) { 
-  dir = pkginfo.find(pmodule, dir);
-  
-  var data = fs.readFileSync(dir).toString();
-      
-  return {
-    dir: dir, 
-    package: JSON.parse(data)
-  };
-};
-
-//
-// Call `pkginfo` on this module and expose version.
-//
-pkginfo(module, {
-  dir: __dirname,
-  include: ['version'],
-  target: pkginfo
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/package.json b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/package.json
deleted file mode 100644
index c16292e..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-  "name": "pkginfo",
-  "version": "0.3.0",
-  "description": "An easy way to expose properties on a module from a package.json",
-  "author": {
-    "name": "Charlie Robbins",
-    "email": "charlie.robbins@gmail.com"
-  },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/indexzero/node-pkginfo.git"
-  },
-  "keywords": [
-    "info",
-    "tools",
-    "package.json"
-  ],
-  "devDependencies": {
-    "vows": "0.7.x"
-  },
-  "main": "./lib/pkginfo",
-  "scripts": {
-    "test": "vows test/*-test.js --spec"
-  },
-  "engines": {
-    "node": ">= 0.4.0"
-  },
-  "readme": "# node-pkginfo\n\nAn easy way to expose properties on a module from a package.json\n\n## Installation\n\n### Installing npm (node package manager)\n```\n  curl http://npmjs.org/install.sh | sh\n```\n\n### Installing pkginfo\n```\n  [sudo] npm install pkginfo\n```\n\n## Motivation\nHow often when writing node.js modules have you written the following line(s) of code? \n\n* Hard code your version string into your code\n\n``` js\n  exports.version = '0.1.0';\n```\n\n* Programmatically expose the version from the package.json\n\n``` js\n  exports.version = JSON.parse(fs.readFileSync('/path/to/package.json', 'utf8')).version;\n```\n\nIn other words, how often have you wanted to expose basic information from your package.json onto your module programmatically? **WELL NOW YOU CAN!**\n\n## Usage\n\nUsing `pkginfo` is idiot-proof, just require and invoke it. \n\n``` js\n  var pkginfo = require('pkginfo')(module);\n  \n  console.dir(module.exports);\n```\n\nBy invoking the `pkgin
 fo` module all of the properties in your `package.json` file will be automatically exposed on the callee module (i.e. the parent module of `pkginfo`). \n\nHere's a sample of the output:\n\n```\n  { name: 'simple-app',\n    description: 'A test fixture for pkginfo',\n    version: '0.1.0',\n    author: 'Charlie Robbins <ch...@gmail.com>',\n    keywords: [ 'test', 'fixture' ],\n    main: './index.js',\n    scripts: { test: 'vows test/*-test.js --spec' },\n    engines: { node: '>= 0.4.0' } }\n```\n\n### Expose specific properties\nIf you don't want to expose **all** properties on from your `package.json` on your module then simple pass those properties to the `pkginfo` function:\n\n``` js\n  var pkginfo = require('pkginfo')(module, 'version', 'author');\n  \n  console.dir(module.exports);\n```\n\n```\n  { version: '0.1.0',\n    author: 'Charlie Robbins <ch...@gmail.com>' }\n```\n\nIf you're looking for further usage see the [examples][0] included in this repository. 
 \n\n## Run Tests\nTests are written in [vows][1] and give complete coverage of all APIs.\n\n```\n  vows test/*-test.js --spec\n```\n\n[0]: https://github.com/indexzero/node-pkginfo/tree/master/examples\n[1]: http://vowsjs.org\n\n#### Author: [Charlie Robbins](http://nodejitsu.com)\n#### License: MIT",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/indexzero/node-pkginfo/issues"
-  },
-  "homepage": "https://github.com/indexzero/node-pkginfo",
-  "_id": "pkginfo@0.3.0",
-  "_from": "pkginfo@0.3.x"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/test/pkginfo-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/test/pkginfo-test.js b/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/test/pkginfo-test.js
deleted file mode 100644
index a59f077..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/pkginfo/test/pkginfo-test.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * pkginfo-test.js: Tests for the pkginfo module.
- *
- * (C) 2011, Charlie Robbins
- *
- */
-
-var assert = require('assert'),
-    exec = require('child_process').exec,
-    fs = require('fs'),
-    path = require('path'),
-    vows = require('vows'),
-    pkginfo = require('../lib/pkginfo');
-
-function assertProperties (source, target) {
-  assert.lengthOf(source, target.length + 1);
-  target.forEach(function (prop) {
-    assert.isTrue(!!~source.indexOf(prop));
-  });
-}
-
-function compareWithExample(targetPath) {
-  var examplePaths = ['package.json'];
-  
-  if (targetPath) {
-    examplePaths.unshift(targetPath);
-  }
-  
-  return function(exposed) {
-    var pkg = fs.readFileSync(path.join.apply(null, [__dirname, '..', 'examples'].concat(examplePaths))).toString(),
-        keys = Object.keys(JSON.parse(pkg));
-    
-    assertProperties(exposed, keys);
-  };
-}
-
-function testExposes (options) {
-  return {
-    topic: function () {
-      exec('node ' + path.join(__dirname, '..', 'examples', options.script), this.callback);
-    },
-    "should expose that property correctly": function (err, stdout, stderr) {
-      assert.isNull(err);
-      
-      var exposed = stderr.match(/'(\w+)'/ig).map(function (p) { 
-        return p.substring(1, p.length - 1);
-      });
-      
-      return !options.assert 
-        ? assertProperties(exposed, options.properties)
-        : options.assert(exposed);
-    }
-  }
-}
-
-vows.describe('pkginfo').addBatch({
-  "When using the pkginfo module": {
-    "and passed a single `string` argument": testExposes({
-      script: 'single-property.js',
-      properties: ['version']
-    }),
-    "and passed multiple `string` arguments": testExposes({
-      script: 'multiple-properties.js',
-      properties: ['version', 'author']
-    }),
-    "and passed an `object` argument": testExposes({
-      script: 'object-argument.js',
-      properties: ['version', 'author']
-    }),
-    "and passed an `array` argument": testExposes({
-      script: 'array-argument.js',
-      properties: ['version', 'author']
-    }),
-    "and read from a specified directory": testExposes({
-      script: 'target-dir.js',
-      assert: compareWithExample('subdir')
-    }),
-    "and passed no arguments": testExposes({
-      script: 'all-properties.js',
-      assert: compareWithExample()
-    })
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/.npmignore b/web/demos/package/node_modules/http-proxy/node_modules/utile/.npmignore
deleted file mode 100644
index 8d8bfd5..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-node_modules
-npm-debug.log
-*.swp
-*.swo

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/.travis.yml b/web/demos/package/node_modules/http-proxy/node_modules/utile/.travis.yml
deleted file mode 100644
index 88cf1f3..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/.travis.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-language: node_js
-node_js:
-  - 0.6
-  - 0.8
-
-notifications:
-  email:
-    - travis@nodejitsu.com
-  irc: "irc.freenode.org#nodejitsu"
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/CHANGELOG.md b/web/demos/package/node_modules/http-proxy/node_modules/utile/CHANGELOG.md
deleted file mode 100644
index b4e427a..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/CHANGELOG.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-0.1.5 / 2012-09-18
-==================
-
-  * Fixed problem with underscore values in camelToUnderscore
-
-0.1.4 / 2012-07-26
-==================
-
-  * Made use of inflect for camel to underscore conversion
-
-0.1.3 / 2012-07-25
-==================
-
-  * Added camel to underscore conversion and vice-versa
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/LICENSE b/web/demos/package/node_modules/http-proxy/node_modules/utile/LICENSE
deleted file mode 100644
index 56217ca..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010 Nodejitsu Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/README.md b/web/demos/package/node_modules/http-proxy/node_modules/utile/README.md
deleted file mode 100644
index 451b1fc..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/README.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# utile [![Build Status](https://secure.travis-ci.org/flatiron/utile.png)](http://travis-ci.org/flatiron/utile)
-
-A drop-in replacement for `util` with some additional advantageous functions
-
-## Motivation
-Javascript is definitely a "batteries not included language" when compared to languages like Ruby or Python. Node.js has a simple utility library which exposes some basic (but important) functionality:
-
-```
-$ node
-> var util = require('util');
-> util.
-(...)
-
-util.debug                 util.error                 util.exec                  util.inherits              util.inspect
-util.log                   util.p                     util.print                 util.pump                  util.puts
-```
-
-When one considers their own utility library, why ever bother requiring `util` again? That is the approach taken by this module. To compare:
-
-```
-$ node
-> var utile = require('./lib')
-> utile.
-(...)
-
-utile.async                 utile.capitalize            utile.clone                 utile.cpr                   utile.createPath            utile.debug
-utile.each                  utile.error                 utile.exec                  utile.file                  utile.filter                utile.find
-utile.inherits              utile.log                   utile.mixin                 utile.mkdirp                utile.p                     utile.path
-utile.print                 utile.pump                  utile.puts                  utile.randomString          utile.requireDir            uile.requireDirLazy
-utile.rimraf
-```
-
-As you can see all of the original methods from `util` are there, but there are several new methods specific to `utile`. A note about implementation: _no node.js native modules are modified by utile, it simply copies those methods._
-
-## Methods
-The `utile` modules exposes some simple utility methods:
-
-* `.each(obj, iterator)`: Iterate over the keys of an object.
-* `.mixin(target [source0, source1, ...])`: Copies enumerable properties from `source0 ... sourceN` onto `target` and returns the resulting object.
-* `.clone(obj)`: Shallow clones the specified object.
-* `.capitalize(str)`: Capitalizes the specified `str`.
-* `.randomString(length)`: randomString returns a pseudo-random ASCII string (subset) the return value is a string of length āŒˆbits/6āŒ‰ of characters from the base64 alphabet.
-* `.filter(obj, test)`: return an object with the properties that `test` returns true on.
-* `.args(arguments)`: Converts function arguments into actual array with special `callback`, `cb`, `array`, and `last` properties. Also supports *optional* argument contracts. See [the example](https://github.com/flatiron/utile/blob/master/examples/utile-args.js) for more details.
-* `.requireDir(directory)`: Requires all files and directories from `directory`, returning an object with keys being filenames (without trailing `.js`) and respective values being return values of `require(filename)`.
-* `.requireDirLazy(directory)`: Lazily requires all files and directories from `directory`, returning an object with keys being filenames (without trailing `.js`) and respective values (getters) being return values of `require(filename)`.
-* `.format([string] text, [array] formats, [array] replacements)`: Replace `formats` in `text` with `replacements`. This will fall back to the original `util.format` command if it is called improperly.
-
-## Packaged Dependencies
-In addition to the methods that are built-in, utile includes a number of commonly used dependencies to reduce the number of includes in your package.json. These modules _are not eagerly loaded to be respectful of startup time,_ but instead are lazy-loaded getters on the `utile` object
-
-* `.async`: [Async utilities for node and the browser][0]
-* `.inflect`: [Customizable inflections for node.js][6]
-* `.mkdirp`: [Recursively mkdir, like mkdir -p, but in node.js][1]
-* `.rimraf`: [A rm -rf util for nodejs][2]
-* `.cpr`: [Asynchronous recursive file copying with Node.js][3]
-
-## Installation
-
-### Installing npm (node package manager)
-```
-  curl http://npmjs.org/install.sh | sh
-```
-
-### Installing utile
-```
-  [sudo] npm install utile
-```
-
-## Tests
-All tests are written with [vows][4] and should be run with [npm][5]:
-
-``` bash
-  $ npm test
-```
-
-#### Author: [Nodejitsu Inc.](http://www.nodejitsu.com)
-#### Contributors: [Charlie Robbins](http://github.com/indexzero), [Dominic Tarr](http://github.com/dominictarr)
-#### License: MIT
-
-[0]: https://github.com/caolan/async
-[1]: https://github.com/substack/node-mkdirp
-[2]: https://github.com/isaacs/rimraf
-[3]: https://github.com/avianflu/ncp
-[4]: https://vowsjs.org
-[5]: https://npmjs.org
-[6]: https://github.com/pksunkara/inflect

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/args.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/args.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/args.js
deleted file mode 100644
index 34f1c11..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/args.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * args.js: function argument parsing helper utility
- *
- * (C) 2012, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var utile = require('./index');
-
-//
-// ### function args(_args)
-// #### _args {Arguments} Original function arguments
-//
-// Top-level method will accept a javascript "arguments" object (the actual keyword
-// "arguments" inside any scope), and attempt to return back an intelligent object
-// representing the functions arguments
-//
-module.exports = function (_args) {
-  var args = utile.rargs(_args),
-      _cb;
-
-  //
-  // Find and define the first argument
-  //
-  Object.defineProperty(args, 'first', { value: args[0] });
-
-  //
-  // Find and define any callback
-  //
-  _cb = args[args.length - 1] || args[args.length];
-  if (typeof _cb === "function") {
-    Object.defineProperty(args, 'callback', { value: _cb });
-    Object.defineProperty(args, 'cb', { value: _cb });
-    args.pop();
-  }
-
-  //
-  // Find and define the last argument
-  //
-  if (args.length) {
-    Object.defineProperty(args, 'last', { value: args[args.length - 1] });
-  }
-
-  return args;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/base64.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/base64.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/base64.js
deleted file mode 100644
index 1de7a76..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/base64.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * base64.js: An extremely simple implementation of base64 encoding / decoding using node.js Buffers
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var base64 = exports;
-
-//
-// ### function encode (unencoded)
-// #### @unencoded {string} The string to base64 encode
-// Encodes the specified string to base64 using node.js Buffers.
-//
-base64.encode = function (unencoded) {
-  var encoded;
-
-  try {
-    encoded = new Buffer(unencoded || '').toString('base64');
-  }
-  catch (ex) {
-    return null;
-  }
-
-  return encoded;
-};
-
-//
-// ### function decode (encoded)
-// #### @encoded {string} The string to base64 decode
-// Decodes the specified string from base64 using node.js Buffers.
-//
-base64.decode = function (encoded) {
-  var decoded;
-
-  try {
-    decoded = new Buffer(encoded || '', 'base64').toString('utf8');
-  }
-  catch (ex) {
-    return null;
-  }
-
-  return decoded;
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/file.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/file.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/file.js
deleted file mode 100644
index 4641878..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/file.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * file.js: Simple utilities for working with the file system.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var fs = require('fs');
-
-exports.readJson = exports.readJSON = function (file, callback) {
-  if (typeof callback !== 'function') {
-    throw new Error('utile.file.readJson needs a callback');
-  }
-
-  fs.readFile(file, 'utf-8', function (err, data) {
-    if (err) {
-      return callback(err);
-    }
-
-    try {
-      var json = JSON.parse(data);
-      callback(null, json);
-    }
-    catch (err) {
-      return callback(err);
-    }
-  });
-};
-
-exports.readJsonSync = exports.readJSONSync = function (file) {
-  return JSON.parse(fs.readFileSync(file, 'utf-8'));
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/format.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/format.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/format.js
deleted file mode 100644
index 3262dd5..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/format.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * format.js: `util.format` enhancement to allow custom formatting parameters.
- *
- * (C) 2012, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var util = require('util');
-
-exports = module.exports = function(str) {
-  var formats = [].slice.call(arguments, 1, 3);
-
-  if (!(formats[0] instanceof Array && formats[1] instanceof Array) || arguments.length > 3)
-    return util.format.apply(null, arguments);
-
-  var replacements = formats.pop(),
-      formats = formats.shift();
-
-  formats.forEach(function(format, id) {
-    str = str.replace(new RegExp(format), replacements[id]);
-  });
-
-  return str;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/index.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/index.js
deleted file mode 100644
index ac9f925..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/lib/index.js
+++ /dev/null
@@ -1,467 +0,0 @@
-/*
- * index.js: Top-level include for the `utile` module.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var fs = require('fs'),
-    path = require('path'),
-    util = require('util');
-
-var utile = module.exports;
-
-//
-// Extend the `utile` object with all methods from the
-// core node `util` methods.
-//
-Object.keys(util).forEach(function (key) {
-  utile[key] = util[key];
-});
-
-Object.defineProperties(utile, {
-
-  //
-  // ### function async
-  // Simple wrapper to `require('async')`.
-  //
-  'async': {
-    get: function() {
-      return utile.async = require('async');
-    }
-  },
-
-  //
-  // ### function inflect
-  // Simple wrapper to `require('i')`.
-  //
-  'inflect': {
-    get: function() {
-      return utile.inflect = require('i')();
-    }
-  },
-
-  //
-  // ### function mkdirp
-  // Simple wrapper to `require('mkdirp')`
-  //
-  'mkdirp': {
-    get: function() {
-      return utile.mkdirp = require('mkdirp');
-    }
-  },
-
-  //
-  // ### function deepEqual
-  // Simple wrapper to `require('deep-equal')`
-  // Remark: deepEqual is 4x faster then using assert.deepEqual
-  //         see: https://gist.github.com/2790507
-  //
-  'deepEqual': {
-    get: function() {
-      return utile.deepEqual = require('deep-equal');
-    }
-  },
-
-  //
-  // ### function rimraf
-  // Simple wrapper to `require('rimraf')`
-  //
-  'rimraf': {
-    get: function() {
-      return utile.rimraf = require('rimraf');
-    }
-  },
-
-  //
-  // ### function cpr
-  // Simple wrapper to `require('ncp').ncp`
-  //
-  'cpr': {
-    get: function() {
-      return utile.cpr = require('ncp').ncp;
-    }
-  },
-
-  //
-  // ### @file {Object}
-  // Lazy-loaded `file` module
-  //
-  'file': {
-    get: function() {
-      return utile.file = require('./file');
-    }
-  },
-
-  //
-  // ### @args {Object}
-  // Lazy-loaded `args` module
-  //
-  'args': {
-    get: function() {
-      return utile.args = require('./args');
-    }
-  },
-
-  //
-  // ### @base64 {Object}
-  // Lazy-loaded `base64` object
-  //
-  'base64': {
-    get: function() {
-      return utile.base64 = require('./base64');
-    }
-  },
-
-  //
-  // ### @format {Object}
-  // Lazy-loaded `format` object
-  //
-  'format': {
-    get: function() {
-      return utile.format = require('./format');
-    }
-  }
-
-});
-
-
-//
-// ### function rargs(_args)
-// #### _args {Arguments} Original function arguments
-//
-// Top-level method will accept a javascript "arguments" object
-// (the actual keyword "arguments" inside any scope) and return
-// back an Array.
-//
-utile.rargs = function (_args, slice) {
-  if (!slice) {
-    slice = 0;
-  }
-
-  var len = (_args || []).length,
-      args = new Array(len - slice),
-      i;
-
-  //
-  // Convert the raw `_args` to a proper Array.
-  //
-  for (i = slice; i < len; i++) {
-    args[i - slice] = _args[i];
-  }
-
-  return args;
-};
-
-//
-// ### function each (obj, iterator)
-// #### @obj {Object} Object to iterate over
-// #### @iterator {function} Continuation to use on each key. `function (value, key, object)`
-// Iterate over the keys of an object.
-//
-utile.each = function (obj, iterator) {
-  Object.keys(obj).forEach(function (key) {
-    iterator(obj[key], key, obj);
-  });
-};
-
-//
-// ### function find (o)
-//
-//
-utile.find = function (obj, pred) {
-  var value, key;
-
-  for (key in obj) {
-    value = obj[key];
-    if (pred(value, key)) {
-      return value;
-    }
-  }
-};
-
-//
-// ### function pad (str, len, chr)
-// ### @str {String} String to pad
-// ### @len {Number} Number of chars to pad str with
-// ### @chr {String} Optional replacement character, defaults to empty space
-// Appends chr to str until it reaches a length of len
-//
-utile.pad = function pad(str, len, chr) {
-  var s;
-  if (!chr) {
-    chr = ' ';
-  }
-  str = str || '';
-  s = str;
-  if (str.length < len) {
-    for (var i = 0; i < (len - str.length); i++) {
-      s += chr;
-    }
-  }
-  return s;
-}
-
-//
-// ### function path (obj, path, value)
-// ### @obj {Object} Object to insert value into
-// ### @path {Array} List of nested keys to insert value at
-// Retreives a value from given Object, `obj`, located at the
-// nested keys, `path`.
-//
-utile.path = function (obj, path) {
-  var key, i;
-
-  for (i in path) {
-    if (typeof obj === 'undefined') {
-      return undefined;
-    }
-
-    key = path[i];
-    obj = obj[key];
-  }
-
-  return obj;
-};
-
-//
-// ### function createPath (obj, path, value)
-// ### @obj {Object} Object to insert value into
-// ### @path {Array} List of nested keys to insert value at
-// ### @value {*} Value to insert into the object.
-// Inserts the `value` into the given Object, `obj`, creating
-// any keys in `path` along the way if necessary.
-//
-utile.createPath = function (obj, path, value) {
-  var key, i;
-
-  for (i in path) {
-    key = path[i];
-    if (!obj[key]) {
-      obj[key] = ((+i + 1 === path.length) ? value : {});
-    }
-
-    obj = obj[key];
-  }
-};
-
-//
-// ### function mixin (target [source0, source1, ...])
-// Copies enumerable properties from `source0 ... sourceN`
-// onto `target` and returns the resulting object.
-//
-utile.mixin = function (target) {
-  utile.rargs(arguments, 1).forEach(function (o) {
-    Object.getOwnPropertyNames(o).forEach(function(attr) {
-      var getter = Object.getOwnPropertyDescriptor(o, attr).get,
-          setter = Object.getOwnPropertyDescriptor(o, attr).set;
-
-      if (!getter && !setter) {
-        target[attr] = o[attr];
-      }
-      else {
-        Object.defineProperty(target, attr, {
-          get: getter,
-          set: setter
-        });
-      }
-    });
-  });
-
-  return target;
-};
-
-
-//
-// ### function capitalize (str)
-// #### @str {string} String to capitalize
-// Capitalizes the specified `str`.
-//
-utile.capitalize = utile.inflect.camelize;
-
-//
-// ### function escapeRegExp (str)
-// #### @str {string} String to be escaped
-// Escape string for use in Javascript regex
-//
-utile.escapeRegExp = function (str) {
-  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
-};
-
-//
-// ### function randomString (length)
-// #### @length {integer} The number of bits for the random base64 string returned to contain
-// randomString returns a pseude-random ASCII string (subset)
-// the return value is a string of length āŒˆbits/6āŒ‰ of characters
-// from the base64 alphabet.
-//
-utile.randomString = function (length) {
-  var chars, rand, i, ret, mod, bits;
-
-  chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-';
-  ret = '';
-  // standard 4
-  mod = 4;
-  // default is 16
-  bits = length * mod || 64;
-
-  // in v8, Math.random() yields 32 pseudo-random bits (in spidermonkey it gives 53)
-  while (bits > 0) {
-    // 32-bit integer
-    rand = Math.floor(Math.random() * 0x100000000);
-    //we use the top bits
-    for (i = 26; i > 0 && bits > 0; i -= mod, bits -= mod) {
-      ret += chars[0x3F & rand >>> i];
-    }
-  }
-
-  return ret;
-};
-
-//
-// ### function filter (object, test)
-// #### @obj {Object} Object to iterate over
-// #### @pred {function} Predicate applied to each property. `function (value, key, object)`
-// Returns an object with properties from `obj` which satisfy
-// the predicate `pred`
-//
-utile.filter = function (obj, pred) {
-  var copy;
-  if (Array.isArray(obj)) {
-    copy = [];
-    utile.each(obj, function (val, key) {
-      if (pred(val, key, obj)) {
-        copy.push(val);
-      }
-    });
-  }
-  else {
-    copy = {};
-    utile.each(obj, function (val, key) {
-      if (pred(val, key, obj)) {
-        copy[key] = val;
-      }
-    });
-  }
-  return copy;
-};
-
-//
-// ### function requireDir (directory)
-// #### @directory {string} Directory to require
-// Requires all files and directories from `directory`, returning an object
-// with keys being filenames (without trailing `.js`) and respective values
-// being return values of `require(filename)`.
-//
-utile.requireDir = function (directory) {
-  var result = {},
-      files = fs.readdirSync(directory);
-
-  files.forEach(function (file) {
-    if (file.substr(-3) === '.js') {
-      file = file.substr(0, file.length - 3);
-    }
-    result[file] = require(path.resolve(directory, file));
-  });
-  return result;
-};
-
-//
-// ### function requireDirLazy (directory)
-// #### @directory {string} Directory to require
-// Lazily requires all files and directories from `directory`, returning an
-// object with keys being filenames (without trailing `.js`) and respective
-// values (getters) being return values of `require(filename)`.
-//
-utile.requireDirLazy = function (directory) {
-  var result = {},
-      files = fs.readdirSync(directory);
-
-  files.forEach(function (file) {
-    if (file.substr(-3) === '.js') {
-      file = file.substr(0, file.length - 3);
-    }
-    Object.defineProperty(result, file, {
-      get: function() {
-        return result[file] = require(path.resolve(directory, file));
-      }
-    });
-  });
-  
-  return result;
-};
-
-//
-// ### function clone (object, filter)
-// #### @object {Object} Object to clone
-// #### @filter {Function} Filter to be used
-// Shallow clones the specified object.
-//
-utile.clone = function (object, filter) {
-  return Object.keys(object).reduce(filter ? function (obj, k) {
-    if (filter(k)) obj[k] = object[k];
-    return obj;
-  } : function (obj, k) {
-    obj[k] = object[k];
-    return obj;
-  }, {});
-};
-
-//
-// ### function camelToUnderscore (obj)
-// #### @obj {Object} Object to convert keys on.
-// Converts all keys of the type `keyName` to `key_name` on the
-// specified `obj`.
-//
-utile.camelToUnderscore = function (obj) {
-  if (typeof obj !== 'object' || obj === null) {
-    return obj;
-  }
-
-  if (Array.isArray(obj)) {
-    obj.forEach(utile.camelToUnderscore);
-    return obj;
-  }
-
-  Object.keys(obj).forEach(function (key) {
-    var k = utile.inflect.underscore(key);
-    if (k !== key) {
-      obj[k] = obj[key];
-      delete obj[key];
-      key = k;
-    }
-    utile.camelToUnderscore(obj[key]);
-  });
-
-  return obj;
-};
-
-//
-// ### function underscoreToCamel (obj)
-// #### @obj {Object} Object to convert keys on.
-// Converts all keys of the type `key_name` to `keyName` on the
-// specified `obj`.
-//
-utile.underscoreToCamel = function (obj) {
-  if (typeof obj !== 'object' || obj === null) {
-    return obj;
-  }
-
-  if (Array.isArray(obj)) {
-    obj.forEach(utile.underscoreToCamel);
-    return obj;
-  }
-
-  Object.keys(obj).forEach(function (key) {
-    var k = utile.inflect.camelize(key, false);
-    if (k !== key) {
-      obj[k] = obj[key];
-      delete obj[key];
-      key = k;
-    }
-    utile.underscoreToCamel(obj[key]);
-  });
-
-  return obj;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/.bin/ncp
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/.bin/ncp b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/.bin/ncp
deleted file mode 100755
index 388eaba..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/.bin/ncp
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env node
-
-
-
-
-var ncp = require('../lib/ncp'),
-    args = process.argv.slice(2),
-    source, dest;
-
-if (args.length < 2) {
-  console.error('Usage: ncp [source] [destination] [--filter=filter] [--limit=concurrency limit]');
-  process.exit(1);
-}
-
-// parse arguments the hard way
-function startsWith(str, prefix) {
-  return str.substr(0, prefix.length) == prefix;
-}
-
-var options = {};
-args.forEach(function (arg) {
-  if (startsWith(arg, "--limit=")) {
-    options.limit = parseInt(arg.split('=', 2)[1], 10);
-  }
-  if (startsWith(arg, "--filter=")) {
-    options.filter = new RegExp(arg.split('=', 2)[1]);
-  }
-  if (startsWith(arg, "--stoponerr")) {
-    options.stopOnErr = true;
-  }
-});
-
-ncp.ncp(args[0], args[1], options, function (err) {
-  if (Array.isArray(err)) {
-    console.error('There were errors during the copy.');
-    err.forEach(function (err) {
-      console.error(err.stack || err.message);
-    });
-    process.exit(1);
-  }
-  else if (err) {
-    console.error('An error has occurred.');
-    console.error(err.stack || err.message);
-    process.exit(1);
-  }
-});
-
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/.bin/rimraf
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/.bin/rimraf b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/.bin/rimraf
deleted file mode 100755
index 29bfa8a..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/.bin/rimraf
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env node
-
-var rimraf = require('./')
-
-var help = false
-var dashdash = false
-var args = process.argv.slice(2).filter(function(arg) {
-  if (dashdash)
-    return !!arg
-  else if (arg === '--')
-    dashdash = true
-  else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/))
-    help = true
-  else
-    return !!arg
-});
-
-if (help || args.length === 0) {
-  // If they didn't ask for help, then this is not a "success"
-  var log = help ? console.log : console.error
-  log('Usage: rimraf <path>')
-  log('')
-  log('  Deletes all files and folders at "path" recursively.')
-  log('')
-  log('Options:')
-  log('')
-  log('  -h, --help    Display this usage info')
-  process.exit(help ? 0 : 1)
-} else {
-  args.forEach(function(arg) {
-    rimraf.sync(arg)
-  })
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/.travis.yml b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/.travis.yml
deleted file mode 100644
index f1d0f13..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
-  - 0.4
-  - 0.6

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/LICENSE b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/LICENSE
deleted file mode 100644
index ee27ba4..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-This software is released under the MIT license:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/example/cmp.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/example/cmp.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/example/cmp.js
deleted file mode 100644
index 67014b8..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/example/cmp.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var equal = require('../');
-console.dir([
-    equal(
-        { a : [ 2, 3 ], b : [ 4 ] },
-        { a : [ 2, 3 ], b : [ 4 ] }
-    ),
-    equal(
-        { x : 5, y : [6] },
-        { x : 5, y : 6 }
-    )
-]);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/index.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/index.js
deleted file mode 100644
index fd2c4f3..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/index.js
+++ /dev/null
@@ -1,94 +0,0 @@
-var pSlice = Array.prototype.slice;
-var objectKeys = require('./lib/keys.js');
-var isArguments = require('./lib/is_arguments.js');
-
-var deepEqual = module.exports = function (actual, expected, opts) {
-  if (!opts) opts = {};
-  // 7.1. All identical values are equivalent, as determined by ===.
-  if (actual === expected) {
-    return true;
-
-  } else if (actual instanceof Date && expected instanceof Date) {
-    return actual.getTime() === expected.getTime();
-
-  // 7.3. Other pairs that do not both pass typeof value == 'object',
-  // equivalence is determined by ==.
-  } else if (typeof actual != 'object' && typeof expected != 'object') {
-    return opts.strict ? actual === expected : actual == expected;
-
-  // 7.4. For all other Object pairs, including Array objects, equivalence is
-  // determined by having the same number of owned properties (as verified
-  // with Object.prototype.hasOwnProperty.call), the same set of keys
-  // (although not necessarily the same order), equivalent values for every
-  // corresponding key, and an identical 'prototype' property. Note: this
-  // accounts for both named and indexed properties on Arrays.
-  } else {
-    return objEquiv(actual, expected, opts);
-  }
-}
-
-function isUndefinedOrNull(value) {
-  return value === null || value === undefined;
-}
-
-function isBuffer (x) {
-  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;
-  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {
-    return false;
-  }
-  if (x.length > 0 && typeof x[0] !== 'number') return false;
-  return true;
-}
-
-function objEquiv(a, b, opts) {
-  var i, key;
-  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
-    return false;
-  // an identical 'prototype' property.
-  if (a.prototype !== b.prototype) return false;
-  //~~~I've managed to break Object.keys through screwy arguments passing.
-  //   Converting to array solves the problem.
-  if (isArguments(a)) {
-    if (!isArguments(b)) {
-      return false;
-    }
-    a = pSlice.call(a);
-    b = pSlice.call(b);
-    return deepEqual(a, b, opts);
-  }
-  if (isBuffer(a)) {
-    if (!isBuffer(b)) {
-      return false;
-    }
-    if (a.length !== b.length) return false;
-    for (i = 0; i < a.length; i++) {
-      if (a[i] !== b[i]) return false;
-    }
-    return true;
-  }
-  try {
-    var ka = objectKeys(a),
-        kb = objectKeys(b);
-  } catch (e) {//happens when one is a string literal and the other isn't
-    return false;
-  }
-  // having the same number of owned properties (keys incorporates
-  // hasOwnProperty)
-  if (ka.length != kb.length)
-    return false;
-  //the same set of keys (although not necessarily the same order),
-  ka.sort();
-  kb.sort();
-  //~~~cheap key test
-  for (i = ka.length - 1; i >= 0; i--) {
-    if (ka[i] != kb[i])
-      return false;
-  }
-  //equivalent values for every corresponding key, and
-  //~~~possibly expensive deep test
-  for (i = ka.length - 1; i >= 0; i--) {
-    key = ka[i];
-    if (!deepEqual(a[key], b[key], opts)) return false;
-  }
-  return true;
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/lib/is_arguments.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/lib/is_arguments.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/lib/is_arguments.js
deleted file mode 100644
index 1ff150f..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/lib/is_arguments.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var supportsArgumentsClass = (function(){
-  return Object.prototype.toString.call(arguments)
-})() == '[object Arguments]';
-
-exports = module.exports = supportsArgumentsClass ? supported : unsupported;
-
-exports.supported = supported;
-function supported(object) {
-  return Object.prototype.toString.call(object) == '[object Arguments]';
-};
-
-exports.unsupported = unsupported;
-function unsupported(object){
-  return object &&
-    typeof object == 'object' &&
-    typeof object.length == 'number' &&
-    Object.prototype.hasOwnProperty.call(object, 'callee') &&
-    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||
-    false;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/lib/keys.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/lib/keys.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/lib/keys.js
deleted file mode 100644
index 13af263..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/lib/keys.js
+++ /dev/null
@@ -1,9 +0,0 @@
-exports = module.exports = typeof Object.keys === 'function'
-  ? Object.keys : shim;
-
-exports.shim = shim;
-function shim (obj) {
-  var keys = [];
-  for (var key in obj) keys.push(key);
-  return keys;
-}



[41/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/scripts/vendor/74f1038f.markerwithlabel.js
----------------------------------------------------------------------
diff --git a/web/demos/package/app/scripts/vendor/74f1038f.markerwithlabel.js b/web/demos/package/app/scripts/vendor/74f1038f.markerwithlabel.js
deleted file mode 100644
index bef0926..0000000
--- a/web/demos/package/app/scripts/vendor/74f1038f.markerwithlabel.js
+++ /dev/null
@@ -1,577 +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.
- */
-/*!
- *
- * 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 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.
- */
-
-/*jslint browser:true */
-/*global document,google */
-
-/**
- * @param {Function} childCtor Child class.
- * @param {Function} parentCtor Parent class.
- */
-function inherits(childCtor, parentCtor) {
-  /** @constructor */
-  function tempCtor() {};
-  tempCtor.prototype = parentCtor.prototype;
-  childCtor.superClass_ = parentCtor.prototype;
-  childCtor.prototype = new tempCtor();
-  /** @override */
-  childCtor.prototype.constructor = childCtor;
-}
-
-/**
- * This constructor creates a label and associates it with a marker.
- * It is for the private use of the MarkerWithLabel class.
- * @constructor
- * @param {Marker} marker The marker with which the label is to be associated.
- * @param {string} crossURL The URL of the cross image =.
- * @param {string} handCursor The URL of the hand cursor.
- * @private
- */
-function MarkerLabel_(marker, crossURL, handCursorURL) {
-  this.marker_ = marker;
-  this.handCursorURL_ = marker.handCursorURL;
-
-  this.labelDiv_ = document.createElement("div");
-  this.labelDiv_.style.cssText = "position: absolute; overflow: hidden;";
-
-  // Set up the DIV for handling mouse events in the label. This DIV forms a transparent veil
-  // in the "overlayMouseTarget" pane, a veil that covers just the label. This is done so that
-  // events can be captured even if the label is in the shadow of a google.maps.InfoWindow.
-  // Code is included here to ensure the veil is always exactly the same size as the label.
-  this.eventDiv_ = document.createElement("div");
-  this.eventDiv_.style.cssText = this.labelDiv_.style.cssText;
-
-  // This is needed for proper behavior on MSIE:
-  this.eventDiv_.setAttribute("onselectstart", "return false;");
-  this.eventDiv_.setAttribute("ondragstart", "return false;");
-
-  // Get the DIV for the "X" to be displayed when the marker is raised.
-  this.crossDiv_ = MarkerLabel_.getSharedCross(crossURL);
-}
-inherits(MarkerLabel_, google.maps.OverlayView);
-
-/**
- * Returns the DIV for the cross used when dragging a marker when the
- * raiseOnDrag parameter set to true. One cross is shared with all markers.
- * @param {string} crossURL The URL of the cross image =.
- * @private
- */
-MarkerLabel_.getSharedCross = function (crossURL) {
-  var div;
-  if (typeof MarkerLabel_.getSharedCross.crossDiv === "undefined") {
-    div = document.createElement("img");
-    div.style.cssText = "position: absolute; z-index: 1000002; display: none;";
-    // Hopefully Google never changes the standard "X" attributes:
-    div.style.marginLeft = "-8px";
-    div.style.marginTop = "-9px";
-    div.src = crossURL;
-    MarkerLabel_.getSharedCross.crossDiv = div;
-  }
-  return MarkerLabel_.getSharedCross.crossDiv;
-};
-
-/**
- * Adds the DIV representing the label to the DOM. This method is called
- * automatically when the marker's <code>setMap</code> method is called.
- * @private
- */
-MarkerLabel_.prototype.onAdd = function () {
-  var me = this;
-  var cMouseIsDown = false;
-  var cDraggingLabel = false;
-  var cSavedZIndex;
-  var cLatOffset, cLngOffset;
-  var cIgnoreClick;
-  var cRaiseEnabled;
-  var cStartPosition;
-  var cStartCenter;
-  // Constants:
-  var cRaiseOffset = 20;
-  var cDraggingCursor = "url(" + this.handCursorURL_ + ")";
-
-  // Stops all processing of an event.
-  //
-  var cAbortEvent = function (e) {
-    if (e.preventDefault) {
-      e.preventDefault();
-    }
-    e.cancelBubble = true;
-    if (e.stopPropagation) {
-      e.stopPropagation();
-    }
-  };
-
-  var cStopBounce = function () {
-    me.marker_.setAnimation(null);
-  };
-
-  this.getPanes().overlayImage.appendChild(this.labelDiv_);
-  this.getPanes().overlayMouseTarget.appendChild(this.eventDiv_);
-  // One cross is shared with all markers, so only add it once:
-  if (typeof MarkerLabel_.getSharedCross.processed === "undefined") {
-    this.getPanes().overlayImage.appendChild(this.crossDiv_);
-    MarkerLabel_.getSharedCross.processed = true;
-  }
-
-  this.listeners_ = [
-    google.maps.event.addDomListener(this.eventDiv_, "mouseover", function (e) {
-      if (me.marker_.getDraggable() || me.marker_.getClickable()) {
-        this.style.cursor = "pointer";
-        google.maps.event.trigger(me.marker_, "mouseover", e);
-      }
-    }),
-    google.maps.event.addDomListener(this.eventDiv_, "mouseout", function (e) {
-      if ((me.marker_.getDraggable() || me.marker_.getClickable()) && !cDraggingLabel) {
-        this.style.cursor = me.marker_.getCursor();
-        google.maps.event.trigger(me.marker_, "mouseout", e);
-      }
-    }),
-    google.maps.event.addDomListener(this.eventDiv_, "mousedown", function (e) {
-      cDraggingLabel = false;
-      if (me.marker_.getDraggable()) {
-        cMouseIsDown = true;
-        this.style.cursor = cDraggingCursor;
-      }
-      if (me.marker_.getDraggable() || me.marker_.getClickable()) {
-        google.maps.event.trigger(me.marker_, "mousedown", e);
-        cAbortEvent(e); // Prevent map pan when starting a drag on a label
-      }
-    }),
-    google.maps.event.addDomListener(document, "mouseup", function (mEvent) {
-      var position;
-      if (cMouseIsDown) {
-        cMouseIsDown = false;
-        me.eventDiv_.style.cursor = "pointer";
-        google.maps.event.trigger(me.marker_, "mouseup", mEvent);
-      }
-      if (cDraggingLabel) {
-        if (cRaiseEnabled) { // Lower the marker & label
-          position = me.getProjection().fromLatLngToDivPixel(me.marker_.getPosition());
-          position.y += cRaiseOffset;
-          me.marker_.setPosition(me.getProjection().fromDivPixelToLatLng(position));
-          // This is not the same bouncing style as when the marker portion is dragged,
-          // but it will have to do:
-          try { // Will fail if running Google Maps API earlier than V3.3
-            me.marker_.setAnimation(google.maps.Animation.BOUNCE);
-            setTimeout(cStopBounce, 1406);
-          } catch (e) {}
-        }
-        me.crossDiv_.style.display = "none";
-        me.marker_.setZIndex(cSavedZIndex);
-        cIgnoreClick = true; // Set flag to ignore the click event reported after a label drag
-        cDraggingLabel = false;
-        mEvent.latLng = me.marker_.getPosition();
-        google.maps.event.trigger(me.marker_, "dragend", mEvent);
-      }
-    }),
-    google.maps.event.addListener(me.marker_.getMap(), "mousemove", function (mEvent) {
-      var position;
-      if (cMouseIsDown) {
-        if (cDraggingLabel) {
-          // Change the reported location from the mouse position to the marker position:
-          mEvent.latLng = new google.maps.LatLng(mEvent.latLng.lat() - cLatOffset, mEvent.latLng.lng() - cLngOffset);
-          position = me.getProjection().fromLatLngToDivPixel(mEvent.latLng);
-          if (cRaiseEnabled) {
-            me.crossDiv_.style.left = position.x + "px";
-            me.crossDiv_.style.top = position.y + "px";
-            me.crossDiv_.style.display = "";
-            position.y -= cRaiseOffset;
-          }
-          me.marker_.setPosition(me.getProjection().fromDivPixelToLatLng(position));
-          if (cRaiseEnabled) { // Don't raise the veil; this hack needed to make MSIE act properly
-            me.eventDiv_.style.top = (position.y + cRaiseOffset) + "px";
-          }
-          google.maps.event.trigger(me.marker_, "drag", mEvent);
-        } else {
-          // Calculate offsets from the click point to the marker position:
-          cLatOffset = mEvent.latLng.lat() - me.marker_.getPosition().lat();
-          cLngOffset = mEvent.latLng.lng() - me.marker_.getPosition().lng();
-          cSavedZIndex = me.marker_.getZIndex();
-          cStartPosition = me.marker_.getPosition();
-          cStartCenter = me.marker_.getMap().getCenter();
-          cRaiseEnabled = me.marker_.get("raiseOnDrag");
-          cDraggingLabel = true;
-          me.marker_.setZIndex(1000000); // Moves the marker & label to the foreground during a drag
-          mEvent.latLng = me.marker_.getPosition();
-          google.maps.event.trigger(me.marker_, "dragstart", mEvent);
-        }
-      }
-    }),
-    google.maps.event.addDomListener(document, "keydown", function (e) {
-      if (cDraggingLabel) {
-        if (e.keyCode === 27) { // Esc key
-          cRaiseEnabled = false;
-          me.marker_.setPosition(cStartPosition);
-          me.marker_.getMap().setCenter(cStartCenter);
-          google.maps.event.trigger(document, "mouseup", e);
-        }
-      }
-    }),
-    google.maps.event.addDomListener(this.eventDiv_, "click", function (e) {
-      if (me.marker_.getDraggable() || me.marker_.getClickable()) {
-        if (cIgnoreClick) { // Ignore the click reported when a label drag ends
-          cIgnoreClick = false;
-        } else {
-          google.maps.event.trigger(me.marker_, "click", e);
-          cAbortEvent(e); // Prevent click from being passed on to map
-        }
-      }
-    }),
-    google.maps.event.addDomListener(this.eventDiv_, "dblclick", function (e) {
-      if (me.marker_.getDraggable() || me.marker_.getClickable()) {
-        google.maps.event.trigger(me.marker_, "dblclick", e);
-        cAbortEvent(e); // Prevent map zoom when double-clicking on a label
-      }
-    }),
-    google.maps.event.addListener(this.marker_, "dragstart", function (mEvent) {
-      if (!cDraggingLabel) {
-        cRaiseEnabled = this.get("raiseOnDrag");
-      }
-    }),
-    google.maps.event.addListener(this.marker_, "drag", function (mEvent) {
-      if (!cDraggingLabel) {
-        if (cRaiseEnabled) {
-          me.setPosition(cRaiseOffset);
-          // During a drag, the marker's z-index is temporarily set to 1000000 to
-          // ensure it appears above all other markers. Also set the label's z-index
-          // to 1000000 (plus or minus 1 depending on whether the label is supposed
-          // to be above or below the marker).
-          me.labelDiv_.style.zIndex = 1000000 + (this.get("labelInBackground") ? -1 : +1);
-        }
-      }
-    }),
-    google.maps.event.addListener(this.marker_, "dragend", function (mEvent) {
-      if (!cDraggingLabel) {
-        if (cRaiseEnabled) {
-          me.setPosition(0); // Also restores z-index of label
-        }
-      }
-    }),
-    google.maps.event.addListener(this.marker_, "position_changed", function () {
-      me.setPosition();
-    }),
-    google.maps.event.addListener(this.marker_, "zindex_changed", function () {
-      me.setZIndex();
-    }),
-    google.maps.event.addListener(this.marker_, "visible_changed", function () {
-      me.setVisible();
-    }),
-    google.maps.event.addListener(this.marker_, "labelvisible_changed", function () {
-      me.setVisible();
-    }),
-    google.maps.event.addListener(this.marker_, "title_changed", function () {
-      me.setTitle();
-    }),
-    google.maps.event.addListener(this.marker_, "labelcontent_changed", function () {
-      me.setContent();
-    }),
-    google.maps.event.addListener(this.marker_, "labelanchor_changed", function () {
-      me.setAnchor();
-    }),
-    google.maps.event.addListener(this.marker_, "labelclass_changed", function () {
-      me.setStyles();
-    }),
-    google.maps.event.addListener(this.marker_, "labelstyle_changed", function () {
-      me.setStyles();
-    })
-  ];
-};
-
-/**
- * Removes the DIV for the label from the DOM. It also removes all event handlers.
- * This method is called automatically when the marker's <code>setMap(null)</code>
- * method is called.
- * @private
- */
-MarkerLabel_.prototype.onRemove = function () {
-  var i;
-  this.labelDiv_.parentNode.removeChild(this.labelDiv_);
-  this.eventDiv_.parentNode.removeChild(this.eventDiv_);
-
-  // Remove event listeners:
-  for (i = 0; i < this.listeners_.length; i++) {
-    google.maps.event.removeListener(this.listeners_[i]);
-  }
-};
-
-/**
- * Draws the label on the map.
- * @private
- */
-MarkerLabel_.prototype.draw = function () {
-  this.setContent();
-  this.setTitle();
-  this.setStyles();
-};
-
-/**
- * Sets the content of the label.
- * The content can be plain text or an HTML DOM node.
- * @private
- */
-MarkerLabel_.prototype.setContent = function () {
-  var content = this.marker_.get("labelContent");
-  if (typeof content.nodeType === "undefined") {
-    this.labelDiv_.innerHTML = content;
-    this.eventDiv_.innerHTML = this.labelDiv_.innerHTML;
-  } else {
-    this.labelDiv_.innerHTML = ""; // Remove current content
-    this.labelDiv_.appendChild(content);
-    content = content.cloneNode(true);
-    this.eventDiv_.appendChild(content);
-  }
-};
-
-/**
- * Sets the content of the tool tip for the label. It is
- * always set to be the same as for the marker itself.
- * @private
- */
-MarkerLabel_.prototype.setTitle = function () {
-  this.eventDiv_.title = this.marker_.getTitle() || "";
-};
-
-/**
- * Sets the style of the label by setting the style sheet and applying
- * other specific styles requested.
- * @private
- */
-MarkerLabel_.prototype.setStyles = function () {
-  var i, labelStyle;
-
-  // Apply style values from the style sheet defined in the labelClass parameter:
-  this.labelDiv_.className = this.marker_.get("labelClass");
-  this.eventDiv_.className = this.labelDiv_.className;
-
-  // Clear existing inline style values:
-  this.labelDiv_.style.cssText = "";
-  this.eventDiv_.style.cssText = "";
-  // Apply style values defined in the labelStyle parameter:
-  labelStyle = this.marker_.get("labelStyle");
-  for (i in labelStyle) {
-    if (labelStyle.hasOwnProperty(i)) {
-      this.labelDiv_.style[i] = labelStyle[i];
-      this.eventDiv_.style[i] = labelStyle[i];
-    }
-  }
-  this.setMandatoryStyles();
-};
-
-/**
- * Sets the mandatory styles to the DIV representing the label as well as to the
- * associated event DIV. This includes setting the DIV position, z-index, and visibility.
- * @private
- */
-MarkerLabel_.prototype.setMandatoryStyles = function () {
-  this.labelDiv_.style.position = "absolute";
-  this.labelDiv_.style.overflow = "hidden";
-  // Make sure the opacity setting causes the desired effect on MSIE:
-  if (typeof this.labelDiv_.style.opacity !== "undefined" && this.labelDiv_.style.opacity !== "") {
-    this.labelDiv_.style.MsFilter = "\"progid:DXImageTransform.Microsoft.Alpha(opacity=" + (this.labelDiv_.style.opacity * 100) + ")\"";
-    this.labelDiv_.style.filter = "alpha(opacity=" + (this.labelDiv_.style.opacity * 100) + ")";
-  }
-
-  this.eventDiv_.style.position = this.labelDiv_.style.position;
-  this.eventDiv_.style.overflow = this.labelDiv_.style.overflow;
-  this.eventDiv_.style.opacity = 0.01; // Don't use 0; DIV won't be clickable on MSIE
-  this.eventDiv_.style.MsFilter = "\"progid:DXImageTransform.Microsoft.Alpha(opacity=1)\"";
-  this.eventDiv_.style.filter = "alpha(opacity=1)"; // For MSIE
-
-  this.setAnchor();
-  this.setPosition(); // This also updates z-index, if necessary.
-  this.setVisible();
-};
-
-/**
- * Sets the anchor point of the label.
- * @private
- */
-MarkerLabel_.prototype.setAnchor = function () {
-  var anchor = this.marker_.get("labelAnchor");
-  this.labelDiv_.style.marginLeft = -anchor.x + "px";
-  this.labelDiv_.style.marginTop = -anchor.y + "px";
-  this.eventDiv_.style.marginLeft = -anchor.x + "px";
-  this.eventDiv_.style.marginTop = -anchor.y + "px";
-};
-
-/**
- * Sets the position of the label. The z-index is also updated, if necessary.
- * @private
- */
-MarkerLabel_.prototype.setPosition = function (yOffset) {
-  var position = this.getProjection().fromLatLngToDivPixel(this.marker_.getPosition());
-  if (typeof yOffset === "undefined") {
-    yOffset = 0;
-  }
-  this.labelDiv_.style.left = Math.round(position.x) + "px";
-  this.labelDiv_.style.top = Math.round(position.y - yOffset) + "px";
-  this.eventDiv_.style.left = this.labelDiv_.style.left;
-  this.eventDiv_.style.top = this.labelDiv_.style.top;
-
-  this.setZIndex();
-};
-
-/**
- * Sets the z-index of the label. If the marker's z-index property has not been defined, the z-index
- * of the label is set to the vertical coordinate of the label. This is in keeping with the default
- * stacking order for Google Maps: markers to the south are in front of markers to the north.
- * @private
- */
-MarkerLabel_.prototype.setZIndex = function () {
-  var zAdjust = (this.marker_.get("labelInBackground") ? -1 : +1);
-  if (typeof this.marker_.getZIndex() === "undefined") {
-    this.labelDiv_.style.zIndex = parseInt(this.labelDiv_.style.top, 10) + zAdjust;
-    this.eventDiv_.style.zIndex = this.labelDiv_.style.zIndex;
-  } else {
-    this.labelDiv_.style.zIndex = this.marker_.getZIndex() + zAdjust;
-    this.eventDiv_.style.zIndex = this.labelDiv_.style.zIndex;
-  }
-};
-
-/**
- * Sets the visibility of the label. The label is visible only if the marker itself is
- * visible (i.e., its visible property is true) and the labelVisible property is true.
- * @private
- */
-MarkerLabel_.prototype.setVisible = function () {
-  if (this.marker_.get("labelVisible")) {
-    this.labelDiv_.style.display = this.marker_.getVisible() ? "block" : "none";
-  } else {
-    this.labelDiv_.style.display = "none";
-  }
-  this.eventDiv_.style.display = this.labelDiv_.style.display;
-};
-
-/**
- * @name MarkerWithLabelOptions
- * @class This class represents the optional parameter passed to the {@link MarkerWithLabel} constructor.
- *  The properties available are the same as for <code>google.maps.Marker</code> with the addition
- *  of the properties listed below. To change any of these additional properties after the labeled
- *  marker has been created, call <code>google.maps.Marker.set(propertyName, propertyValue)</code>.
- *  <p>
- *  When any of these properties changes, a property changed event is fired. The names of these
- *  events are derived from the name of the property and are of the form <code>propertyname_changed</code>.
- *  For example, if the content of the label changes, a <code>labelcontent_changed</code> event
- *  is fired.
- *  <p>
- * @property {string|Node} [labelContent] The content of the label (plain text or an HTML DOM node).
- * @property {Point} [labelAnchor] By default, a label is drawn with its anchor point at (0,0) so
- *  that its top left corner is positioned at the anchor point of the associated marker. Use this
- *  property to change the anchor point of the label. For example, to center a 50px-wide label
- *  beneath a marker, specify a <code>labelAnchor</code> of <code>google.maps.Point(25, 0)</code>.
- *  (Note: x-values increase to the right and y-values increase to the top.)
- * @property {string} [labelClass] The name of the CSS class defining the styles for the label.
- *  Note that style values for <code>position</code>, <code>overflow</code>, <code>top</code>,
- *  <code>left</code>, <code>zIndex</code>, <code>display</code>, <code>marginLeft</code>, and
- *  <code>marginTop</code> are ignored; these styles are for internal use only.
- * @property {Object} [labelStyle] An object literal whose properties define specific CSS
- *  style values to be applied to the label. Style values defined here override those that may
- *  be defined in the <code>labelClass</code> style sheet. If this property is changed after the
- *  label has been created, all previously set styles (except those defined in the style sheet)
- *  are removed from the label before the new style values are applied.
- *  Note that style values for <code>position</code>, <code>overflow</code>, <code>top</code>,
- *  <code>left</code>, <code>zIndex</code>, <code>display</code>, <code>marginLeft</code>, and
- *  <code>marginTop</code> are ignored; these styles are for internal use only.
- * @property {boolean} [labelInBackground] A flag indicating whether a label that overlaps its
- *  associated marker should appear in the background (i.e., in a plane below the marker).
- *  The default is <code>false</code>, which causes the label to appear in the foreground.
- * @property {boolean} [labelVisible] A flag indicating whether the label is to be visible.
- *  The default is <code>true</code>. Note that even if <code>labelVisible</code> is
- *  <code>true</code>, the label will <i>not</i> be visible unless the associated marker is also
- *  visible (i.e., unless the marker's <code>visible</code> property is <code>true</code>).
- * @property {boolean} [raiseOnDrag] A flag indicating whether the label and marker are to be
- *  raised when the marker is dragged. The default is <code>true</code>. If a draggable marker is
- *  being created and a version of Google Maps API earlier than V3.3 is being used, this property
- *  must be set to <code>false</code>.
- * @property {boolean} [optimized] A flag indicating whether rendering is to be optimized for the
- *  marker. <b>Important: The optimized rendering technique is not supported by MarkerWithLabel,
- *  so the value of this parameter is always forced to <code>false</code>.
- * @property {string} [crossImage="http://maps.gstatic.com/intl/en_us/mapfiles/drag_cross_67_16.png"]
- *  The URL of the cross image to be displayed while dragging a marker.
- * @property {string} [handCursor="http://maps.gstatic.com/intl/en_us/mapfiles/closedhand_8_8.cur"]
- *  The URL of the cursor to be displayed while dragging a marker.
- */
-/**
- * Creates a MarkerWithLabel with the options specified in {@link MarkerWithLabelOptions}.
- * @constructor
- * @param {MarkerWithLabelOptions} [opt_options] The optional parameters.
- */
-function MarkerWithLabel(opt_options) {
-  opt_options = opt_options || {};
-  opt_options.labelContent = opt_options.labelContent || "";
-  opt_options.labelAnchor = opt_options.labelAnchor || new google.maps.Point(0, 0);
-  opt_options.labelClass = opt_options.labelClass || "markerLabels";
-  opt_options.labelStyle = opt_options.labelStyle || {};
-  opt_options.labelInBackground = opt_options.labelInBackground || false;
-  if (typeof opt_options.labelVisible === "undefined") {
-    opt_options.labelVisible = true;
-  }
-  if (typeof opt_options.raiseOnDrag === "undefined") {
-    opt_options.raiseOnDrag = true;
-  }
-  if (typeof opt_options.clickable === "undefined") {
-    opt_options.clickable = true;
-  }
-  if (typeof opt_options.draggable === "undefined") {
-    opt_options.draggable = false;
-  }
-  if (typeof opt_options.optimized === "undefined") {
-    opt_options.optimized = false;
-  }
-  opt_options.crossImage = opt_options.crossImage || "http" + (document.location.protocol === "https:" ? "s" : "") + "://maps.gstatic.com/intl/en_us/mapfiles/drag_cross_67_16.png";
-  opt_options.handCursor = opt_options.handCursor || "http" + (document.location.protocol === "https:" ? "s" : "") + "://maps.gstatic.com/intl/en_us/mapfiles/closedhand_8_8.cur";
-  opt_options.optimized = false; // Optimized rendering is not supported
-
-  this.label = new MarkerLabel_(this, opt_options.crossImage, opt_options.handCursor); // Bind the label to the marker
-
-  // Call the parent constructor. It calls Marker.setValues to initialize, so all
-  // the new parameters are conveniently saved and can be accessed with get/set.
-  // Marker.set triggers a property changed event (called "propertyname_changed")
-  // that the marker label listens for in order to react to state changes.
-  google.maps.Marker.apply(this, arguments);
-}
-inherits(MarkerWithLabel, google.maps.Marker);
-
-/**
- * Overrides the standard Marker setMap function.
- * @param {Map} theMap The map to which the marker is to be added.
- * @private
- */
-MarkerWithLabel.prototype.setMap = function (theMap) {
-
-  // Call the inherited function...
-  google.maps.Marker.prototype.setMap.apply(this, arguments);
-
-  // ... then deal with the label:
-  this.label.setMap(theMap);
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/styles/00ae7995.main.css
----------------------------------------------------------------------
diff --git a/web/demos/package/app/styles/00ae7995.main.css b/web/demos/package/app/styles/00ae7995.main.css
deleted file mode 100644
index 3682707..0000000
--- a/web/demos/package/app/styles/00ae7995.main.css
+++ /dev/null
@@ -1,19 +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.
- */
-body{padding-top:60px;padding-bottom:40px}.sidebar-nav{padding:9px 0}.navbar .nav>li{line-height:28px}@media (max-width:980px){.navbar-text.pull-right{float:none;padding-left:5px;padding-right:5px}}[class^=icon-],[class*=" icon-"]{background-image:url(../images/23bb1446.glyphicons-halflings.png)}h4.ui-pnotify-title{display:inline;font-size:16px}.ui-pnotify-text{font-size:12px}.ui-pnotify-icon,.ui-pnotify-icon span{display:inline-block;float:none}.app-title{margin-top:0}.btn-view-console{margin-left:20px}.twitter-grid{border:1px solid #d4d4d4;height:350px;width:400px}.mobile-grid{border:1px solid #d4d4d4;height:450px}.mobile-grid-remove{text-align:center;cursor:pointer}.params-nav select{width:100%}.chart-title{text-align:center}.line-chart{height:300px}.network-response{height:30px}.network-response-label{display:inline-block;font-weight:700;vertical-align:middle}.network-response-stat{display:inline-block;width:100px;overflow:hidden;vertical-align:middle}.network-response-loading{b
 ackground-color:#ff0}.bar-chart rect.bar-chart-p{fill:#05EEFA}.bar-chart rect.bar-chart-c{fill:transparent;stroke:red;stroke-width:1px;width:100%}.bar-chart rect{fill:#05EEFA}.bar-chart text{fill:#000}.chart-ctnr{height:300px}.gauge{margin-top:15px}.marker-label{color:red;background-color:#fff;font-family:"Lucida Grande",Arial,sans-serif;font-size:10px;font-weight:700;text-align:center;width:50px;border:1px solid #000;white-space:nowrap}.widget-response{max-height:340px;overflow:auto}.overview-item{padding-top:14px}.overview-item .key{color:#888;letter-spacing:.1em;display:block;margin-bottom:5px}.overview-item .value{font-weight:700;color:#000;font-size:140%;display:block}.navbar .brand{background:url(../images/74c3df97.main_banner.png) no-repeat scroll 0 0;padding:0;width:241px;height:48px;margin-left:-15px}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{background:#11506d}.navbar .navbar-inner{background:#11506d}.generate-t
 x-btn-wrap.span3,.generate-tx-desc.span9{display:inline-block;vertical-align:middle;float:none}.generate-tx-btn-wrap.span3{text-align:center}#alertDisplayBox{padding:10px;height:418px;overflow:auto}article.alert-msg{padding:10px 25px;border-radius:4px;color:#000;text-shadow:0 1px 0 rgba(255,255,255,.6);margin-bottom:10px}article.alert-msg.medium,button.generate-medium{background:#FF7000;box-shadow:inset 0 -2px 20px 0 #EEBC6B,0 1px 3px rgba(0,0,0,.3)}button.generate-medium:hover,button.generate-medium:focus{background:#FF970B}article.alert-msg.high,button.generate-high{background:#FF5E54;box-shadow:inset 0 -2px 20px 0 #D14D45,0 1px 3px rgba(0,0,0,.3)}button.generate-high{color:#fff;text-shadow:0 1px 0 #000}button.generate-high:hover,button.generate-high:focus{background:#FF4A31;color:#fff;text-shadow:0 1px 0 #000}article.alert-msg.low,button.generate-low{background:#FFF971;box-shadow:inset 0 -4px 30px -6px #EED306,0 1px 3px rgba(0,0,0,.3)}button.generate-low:hover,button.generate-low
 :focus{background:#FFE00A}article.alert-msg h1{font-size:18px;margin:0}button.clearFraudsBtn{float:right}a.svg-link{text-decoration:underline}
\ No newline at end of file


[14/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js
deleted file mode 100644
index c2d1df4..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js
+++ /dev/null
@@ -1,811 +0,0 @@
-var ReadPreference = require('../read_preference').ReadPreference
-  , DbCommand = require('../../commands/db_command').DbCommand
-  , inherits = require('util').inherits
-  , format = require('util').format
-  , timers = require('timers')
-  , Server = require('../server').Server
-  , utils = require('../../utils')
-  , PingStrategy = require('./strategies/ping_strategy').PingStrategy
-  , StatisticsStrategy = require('./strategies/statistics_strategy').StatisticsStrategy
-  , Options = require('./options').Options
-  , ReplSetState = require('./repl_set_state').ReplSetState
-  , HighAvailabilityProcess = require('./ha').HighAvailabilityProcess
-  , Base = require('../base').Base;
-
-var STATE_STARTING_PHASE_1 = 0;
-var STATE_PRIMARY = 1;
-var STATE_SECONDARY = 2;
-var STATE_RECOVERING = 3;
-var STATE_FATAL_ERROR = 4;
-var STATE_STARTING_PHASE_2 = 5;
-var STATE_UNKNOWN = 6;
-var STATE_ARBITER = 7;
-var STATE_DOWN = 8;
-var STATE_ROLLBACK = 9;
-
-// Set processor, setImmediate if 0.10 otherwise nextTick
-var processor = require('../../utils').processor();
-
-/**
- * ReplSet constructor provides replicaset functionality
- *
- * Options
- *  - **ha** {Boolean, default:true}, turn on high availability.
- *  - **haInterval** {Number, default:2000}, time between each replicaset status check.
- *  - **reconnectWait** {Number, default:1000}, time to wait in miliseconds before attempting reconnect.
- *  - **retries** {Number, default:30}, number of times to attempt a replicaset reconnect.
- *  - **rs_name** {String}, the name of the replicaset to connect to.
- *  - **socketOptions** {Object, default:null}, an object containing socket options to use (noDelay:(boolean), keepAlive:(number), connectTimeoutMS:(number), socketTimeoutMS:(number))
- *  - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *  - **strategy** {String, default:'ping'}, selection strategy for reads choose between (ping, statistical and none, default is ping)
- *  - **secondaryAcceptableLatencyMS** {Number, default:15}, sets the range of servers to pick when using NEAREST (lowest ping ms + the latency fence, ex: range of 1 to (1 + 15) ms)
- *  - **connectWithNoPrimary** {Boolean, default:false}, sets if the driver should connect even if no primary is available
- *  - **connectArbiter** {Boolean, default:false}, sets if the driver should connect to arbiters or not.
- *  - **logger** {Object, default:null}, an object representing a logger that you want to use, needs to support functions debug, log, error **({error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}})**.
- *  - **poolSize** {Number, default:5}, number of connections in the connection pool for each server instance, set to 5 as default for legacy reasons.
- *  - **ssl** {Boolean, default:false}, use ssl connection (needs to have a mongod server with ssl support)
- *  - **sslValidate** {Boolean, default:false}, validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher)
- *  - **sslCA** {Array, default:null}, Array of valid certificates either as Buffers or Strings (needs to have a mongod server with ssl support, 2.4 or higher)
- *  - **sslCert** {Buffer/String, default:null}, String or buffer containing the certificate we wish to present (needs to have a mongod server with ssl support, 2.4 or higher)
- *  - **sslKey** {Buffer/String, default:null}, String or buffer containing the certificate private key we wish to present (needs to have a mongod server with ssl support, 2.4 or higher)
- *  - **sslPass** {Buffer/String, default:null}, String or buffer containing the certificate password (needs to have a mongod server with ssl support, 2.4 or higher)
- *
- * @class Represents a 
- Replicaset Configuration
- * @param {Array} list of server objects participating in the replicaset.
- * @param {Object} [options] additional options for the replicaset connection.
- */
-var ReplSet = exports.ReplSet = function(servers, options) {
-  // Set up basic
-  if(!(this instanceof ReplSet))
-    return new ReplSet(servers, options);
-
-  // Set up event emitter
-  Base.call(this);
-
-  // Ensure we have a list of servers
-  if(!Array.isArray(servers)) throw Error("The parameter must be an array of servers and contain at least one server");
-  // Ensure no Mongos's
-  for(var i = 0; i < servers.length; i++) {
-    if(!(servers[i] instanceof Server)) throw new Error("list of servers must be of type Server");
-  }
-
-  // Save the options
-  this.options = new Options(options);
-  // Ensure basic validation of options
-  this.options.init();
-
-  // Server state
-  this._serverState = ReplSet.REPLSET_DISCONNECTED;
-  // Add high availability process
-  this._haProcess = new HighAvailabilityProcess(this, this.options);
-
-  // Let's iterate over all the provided server objects and decorate them
-  this.servers = this.options.decorateAndClean(servers, this._callBackStore);
-  // Throw error if no seed servers
-  if(this.servers.length == 0) throw new Error("No valid seed servers in the array");
-
-  // Let's set up our strategy object for picking secondaries
-  if(this.options.strategy == 'ping') {
-    // Create a new instance
-    this.strategyInstance = new PingStrategy(this, this.options.secondaryAcceptableLatencyMS);
-  } else if(this.options.strategy == 'statistical') {
-    // Set strategy as statistical
-    this.strategyInstance = new StatisticsStrategy(this);
-    // Add enable query information
-    this.enableRecordQueryStats(true);
-  }
-
-  this.emitOpen = this.options.emitOpen || true;
-  // Set up a clean state
-  this._state = new ReplSetState(this);
-  // Current round robin selected server
-  this._currentServerChoice = 0;
-  // Ensure up the server callbacks
-  for(var i = 0; i < this.servers.length; i++) {
-    this.servers[i]._callBackStore = this._callBackStore;
-    this.servers[i].name = format("%s:%s", this.servers[i].host, this.servers[i].port)
-    this.servers[i].replicasetInstance = this;
-    this.servers[i].options.auto_reconnect = false;
-    this.servers[i].inheritReplSetOptionsFrom(this);
-  }
-
-  // Allow setting the socketTimeoutMS on all connections
-  // to work around issues such as secondaries blocking due to compaction
-  utils.setSocketTimeoutProperty(this, this.options.socketOptions);
-}
-
-/**
- * @ignore
- */
-inherits(ReplSet, Base);
-
-// Replicaset states
-ReplSet.REPLSET_CONNECTING = 'connecting';
-ReplSet.REPLSET_DISCONNECTED = 'disconnected';
-ReplSet.REPLSET_CONNECTED = 'connected';
-ReplSet.REPLSET_RECONNECTING = 'reconnecting';
-ReplSet.REPLSET_DESTROYED = 'destroyed';
-ReplSet.REPLSET_READ_ONLY = 'readonly';
-
-ReplSet.prototype.isAutoReconnect = function() {
-  return true;
-}
-
-ReplSet.prototype.canWrite = function() {
-  return this._state.master && this._state.master.isConnected();
-}
-
-ReplSet.prototype.canRead = function(read) {
-  if((read == ReadPreference.PRIMARY 
-      || read == null || read == false) && (this._state.master == null || !this._state.master.isConnected())) return false;
-  return Object.keys(this._state.secondaries).length > 0;
-}
-
-/**
- * @ignore
- */
-ReplSet.prototype.enableRecordQueryStats = function(enable) {
-  // Set the global enable record query stats
-  this.recordQueryStats = enable;
-
-  // Enable all the servers
-  for(var i = 0; i < this.servers.length; i++) {
-    this.servers[i].enableRecordQueryStats(enable);
-  }
-}
-
-/**
- * @ignore
- */
-ReplSet.prototype.setReadPreference = function(preference) {
-  this.options.readPreference = preference;
-}
-
-ReplSet.prototype.connect = function(parent, options, callback) {
-  if(this._serverState != ReplSet.REPLSET_DISCONNECTED) 
-    return callback(new Error("in process of connection"));
-
-  // If no callback throw
-  if(!(typeof callback == 'function')) 
-    throw new Error("cannot call ReplSet.prototype.connect with no callback function");
-
-  var self = this;
-  // Save db reference
-  this.options.db = parent;
-  // Set replicaset as connecting
-  this._serverState = ReplSet.REPLSET_CONNECTING
-  // Copy all the servers to our list of seeds
-  var candidateServers = this.servers.slice(0);
-  // Pop the first server
-  var server = candidateServers.pop();
-  server.name = format("%s:%s", server.host, server.port);
-  // Set up the options
-  var opts = {
-    returnIsMasterResults: true,
-    eventReceiver: server
-  }
-
-  // Register some event listeners
-  this.once("fullsetup", function(err, db, replset) {
-    // Set state to connected
-    self._serverState = ReplSet.REPLSET_CONNECTED;
-    // Stop any process running
-    if(self._haProcess) self._haProcess.stop();
-    // Start the HA process
-    self._haProcess.start();
-
-    // Emit fullsetup
-    processor(function() {
-      if(self.emitOpen)
-        self._emitAcrossAllDbInstances(self, null, "open", null, null, null);        
-
-      self._emitAcrossAllDbInstances(self, null, "fullsetup", null, null, null);        
-    });
-
-    // If we have a strategy defined start it
-    if(self.strategyInstance) {
-      self.strategyInstance.start();
-    }
-
-    // Finishing up the call
-    callback(err, db, replset);
-  });
-
-  // Errors
-  this.once("connectionError", function(err, result) {
-    callback(err, result);
-  });
-
-  // Attempt to connect to the server
-  server.connect(this.options.db, opts, _connectHandler(this, candidateServers, server));
-}
-
-ReplSet.prototype.close = function(callback) {  
-  var self = this;
-  // Set as destroyed
-  this._serverState = ReplSet.REPLSET_DESTROYED;
-  // Stop the ha
-  this._haProcess.stop();
-  
-  // If we have a strategy stop it
-  if(this.strategyInstance) {
-    this.strategyInstance.stop();
-  }
-
-  // Kill all servers available
-  for(var name in this._state.addresses) {
-    this._state.addresses[name].close();
-  }
-
-  // Clean out the state
-  this._state = new ReplSetState(this); 
-  
-  // Emit close event
-  processor(function() {
-    self._emitAcrossAllDbInstances(self, null, "close", null, null, true)    
-  });
-
-  // Flush out any remaining call handlers
-  self._flushAllCallHandlers(utils.toError("Connection Closed By Application"));
-
-  // Callback
-  if(typeof callback == 'function') 
-    return callback(null, null);
-}
-
-/**
- * Creates a new server for the `replset` based on `host`.
- *
- * @param {String} host - host:port pair (localhost:27017)
- * @param {ReplSet} replset - the ReplSet instance
- * @return {Server}
- * @ignore
- */
-var createServer = function(self, host, options) {
-  // copy existing socket options to new server
-  var socketOptions = {}
-  if(options.socketOptions) {
-    var keys = Object.keys(options.socketOptions);
-    for(var k = 0; k < keys.length; k++) {
-      socketOptions[keys[k]] = options.socketOptions[keys[k]];
-    }
-  }
-
-  var parts = host.split(/:/);
-  if(1 === parts.length) {
-    parts[1] = Connection.DEFAULT_PORT;
-  }
-
-  socketOptions.host = parts[0];
-  socketOptions.port = parseInt(parts[1], 10);
-
-  var serverOptions = {
-    readPreference: options.readPreference,
-    socketOptions: socketOptions,
-    poolSize: options.poolSize,
-    logger: options.logger,
-    auto_reconnect: false,
-    ssl: options.ssl,
-    sslValidate: options.sslValidate,
-    sslCA: options.sslCA,
-    sslCert: options.sslCert,
-    sslKey: options.sslKey,
-    sslPass: options.sslPass
-  }
-
-  var server = new Server(socketOptions.host, socketOptions.port, serverOptions);
-  // Set up shared state
-  server._callBackStore = self._callBackStore;
-  server.replicasetInstance = self;
-  server.enableRecordQueryStats(self.recordQueryStats);
-  // Set up event handlers
-  server.on("close", _handler("close", self, server));
-  server.on("error", _handler("error", self, server));
-  server.on("timeout", _handler("timeout", self, server));
-  return server;
-}
-
-var _handler = function(event, self, server) {
-  return function(err, doc) {
-    // The event happened to a primary
-    // Remove it from play
-    if(self._state.isPrimary(server)) {    
-      // Emit that the primary left the replicaset
-      self.emit('left', 'primary', server);
-      // Get the current master
-      var current_master = self._state.master;
-      self._state.master = null;
-      self._serverState = ReplSet.REPLSET_READ_ONLY;
-    
-      if(current_master != null) {
-        // Unpack variables
-        var host = current_master.socketOptions.host;
-        var port = current_master.socketOptions.port;
-
-        // Fire error on any unknown callbacks
-        self.__executeAllServerSpecificErrorCallbacks(host, port, err);        
-      }
-    } else if(self._state.isSecondary(server)) {
-      // Emit that a secondary left the replicaset
-      self.emit('left', 'secondary', server);
-      // Delete from the list
-      delete self._state.secondaries[server.name];
-    }
-
-    // If there is no more connections left and the setting is not destroyed
-    // set to disconnected
-    if(Object.keys(self._state.addresses).length == 0 
-      && self._serverState != ReplSet.REPLSET_DESTROYED) {
-        self._serverState = ReplSet.REPLSET_DISCONNECTED;
-
-        // Emit close across all the attached db instances
-        self._dbStore.emit("close", new Error("replicaset disconnected, no valid servers contactable over tcp"), null, true);
-    }
-
-    // Unpack variables
-    var host = server.socketOptions.host;
-    var port = server.socketOptions.port;
-
-    // Fire error on any unknown callbacks
-    self.__executeAllServerSpecificErrorCallbacks(host, port, err);
-  }
-}
-
-var locateNewServers = function(self, state, candidateServers, ismaster) {
-  // Retrieve the host
-  var hosts = ismaster.hosts;
-  // In candidate servers
-  var inCandidateServers = function(name, candidateServers) {
-    for(var i = 0; i < candidateServers.length; i++) {
-      if(candidateServers[i].name == name) return true;
-    }
-
-    return false;
-  }
-
-  // New servers
-  var newServers = [];
-  if(Array.isArray(hosts)) {
-    // Let's go over all the hosts
-    for(var i = 0; i < hosts.length; i++) {
-      if(!state.contains(hosts[i]) 
-        && !inCandidateServers(hosts[i], candidateServers)) {
-          newServers.push(createServer(self, hosts[i], self.options));
-      }
-    }    
-  }
-
-  // Return list of possible new servers
-  return newServers;
-}
-
-var _connectHandler = function(self, candidateServers, instanceServer) {
-  return function(err, doc) {
-    // If we have an error add to the list
-    if(err) {
-      self._state.errors[instanceServer.name] = instanceServer;
-    } else {
-      delete self._state.errors[instanceServer.name];
-    }
-
-    if(!err) {      
-      var ismaster = doc.documents[0]
-
-      // Error the server if 
-      if(!ismaster.ismaster
-        && !ismaster.secondary) {
-        self._state.errors[instanceServer.name] = instanceServer;
-      }
-    }
-
-
-    // No error let's analyse the ismaster command
-    if(!err && self._state.errors[instanceServer.name] == null) {
-      var ismaster = doc.documents[0]
-
-      // If no replicaset name exists set the current one
-      if(self.options.rs_name == null) {
-        self.options.rs_name = ismaster.setName;
-      }
-
-      // If we have a member that is not part of the set let's finish up
-      if(typeof ismaster.setName == 'string' && ismaster.setName != self.options.rs_name) {
-        return self.emit("connectionError", new Error("Replicaset name " + ismaster.setName + " does not match specified name " + self.options.rs_name));
-      }
-
-      // Add the error handlers
-      instanceServer.on("close", _handler("close", self, instanceServer));
-      instanceServer.on("error", _handler("error", self, instanceServer));
-      instanceServer.on("timeout", _handler("timeout", self, instanceServer));
-      
-      // Set any tags on the instance server
-      instanceServer.name = ismaster.me;
-      instanceServer.tags = ismaster.tags;
-
-      // Add the server to the list
-      self._state.addServer(instanceServer, ismaster);
-
-      // Check if we have more servers to add (only check when done with initial set)
-      if(candidateServers.length == 0) {
-        // Get additional new servers that are not currently in set
-        var new_servers = locateNewServers(self, self._state, candidateServers, ismaster);
-
-        // Locate any new servers that have not errored out yet
-        for(var i = 0; i < new_servers.length; i++) {
-          if(self._state.errors[new_servers[i].name] == null) {
-            candidateServers.push(new_servers[i])            
-          }
-        }
-      }
-    }
-
-    // If the candidate server list is empty and no valid servers
-    if(candidateServers.length == 0 &&
-      !self._state.hasValidServers()) {
-        return self.emit("connectionError", new Error("No valid replicaset instance servers found"));
-    } else if(candidateServers.length == 0) {      
-      if(!self.options.connectWithNoPrimary && (self._state.master == null || !self._state.master.isConnected())) {
-        return self.emit("connectionError", new Error("No primary found in set"));
-      }
-      return self.emit("fullsetup", null, self.options.db, self);
-    }
-        
-    // Let's connect the next server    
-    var nextServer = candidateServers.pop();
-  
-    // Set up the options
-    var opts = {
-      returnIsMasterResults: true,
-      eventReceiver: nextServer
-    }
-
-    // Attempt to connect to the server
-    nextServer.connect(self.options.db, opts, _connectHandler(self, candidateServers, nextServer));
-  }
-}
-
-ReplSet.prototype.isDestroyed = function() {
-  return this._serverState == ReplSet.REPLSET_DESTROYED;
-}
-
-ReplSet.prototype.isConnected = function(read) {
-  var isConnected = false;  
-
-  if(read == null || read == ReadPreference.PRIMARY || read == false)
-    isConnected = this._state.master != null && this._state.master.isConnected();
-
-  if((read == ReadPreference.PRIMARY_PREFERRED || read == ReadPreference.SECONDARY_PREFERRED || read == ReadPreference.NEAREST)
-    && ((this._state.master != null && this._state.master.isConnected())
-    || (this._state && this._state.secondaries && Object.keys(this._state.secondaries).length > 0))) {
-      isConnected = true;
-  } else if(read == ReadPreference.SECONDARY) {
-    isConnected = this._state && this._state.secondaries && Object.keys(this._state.secondaries).length > 0;
-  }
-
-  // No valid connection return false
-  return isConnected;
-}
-
-ReplSet.prototype.isMongos = function() {
-  return false;
-}
-
-ReplSet.prototype.checkoutWriter = function() {
-  if(this._state.master) return this._state.master.checkoutWriter();
-  return new Error("no writer connection available");
-}
-
-ReplSet.prototype.processIsMaster = function(_server, _ismaster) {
-  // Server in recovery mode, remove it from available servers
-  if(!_ismaster.ismaster && !_ismaster.secondary) {
-    // Locate the actual server
-    var server = this._state.addresses[_server.name];
-    // Close the server, simulating the closing of the connection
-    // to get right removal semantics
-    if(server) server.close();
-    // Execute any callback errors
-    _handler(null, this, server)(new Error("server is in recovery mode"));
-  }
-}
-
-ReplSet.prototype.allRawConnections = function() {
-  var connections = [];
-
-  for(var name in this._state.addresses) {
-    connections = connections.concat(this._state.addresses[name].allRawConnections());
-  }
-
-  return connections;
-}
-
-/**
- * @ignore
- */
-ReplSet.prototype.allServerInstances = function() {
-  var self = this;
-  // If no state yet return empty
-  if(!self._state) return [];
-  // Close all the servers (concatenate entire list of servers first for ease)
-  var allServers = self._state.master != null ? [self._state.master] : [];
-
-  // Secondary keys
-  var keys = Object.keys(self._state.secondaries);
-  // Add all secondaries
-  for(var i = 0; i < keys.length; i++) {
-    allServers.push(self._state.secondaries[keys[i]]);
-  }
-
-  // Return complete list of all servers
-  return allServers;
-}
-
-/**
- * @ignore
- */
-ReplSet.prototype.checkoutReader = function(readPreference, tags) {
-  var connection = null;
-
-  // If we have a read preference object unpack it
-  if(typeof readPreference == 'object' && readPreference['_type'] == 'ReadPreference') {
-    // Validate if the object is using a valid mode
-    if(!readPreference.isValid()) throw new Error("Illegal readPreference mode specified, " + readPreference.mode);
-    // Set the tag
-    tags = readPreference.tags;
-    readPreference = readPreference.mode;
-  } else if(typeof readPreference == 'object' && readPreference['_type'] != 'ReadPreference') {
-    return new Error("read preferences must be either a string or an instance of ReadPreference");
-  }
-
-  // Set up our read Preference, allowing us to override the readPreference
-  var finalReadPreference = readPreference != null ? readPreference : this.options.readPreference;
-
-  // Ensure we unpack a reference
-  if(finalReadPreference != null && typeof finalReadPreference == 'object' && finalReadPreference['_type'] == 'ReadPreference') {
-    // Validate if the object is using a valid mode
-    if(!finalReadPreference.isValid()) throw new Error("Illegal readPreference mode specified, " + finalReadPreference.mode);
-    // Set the tag
-    tags = finalReadPreference.tags;
-    readPreference = finalReadPreference.mode;
-  }
-
-  // Finalize the read preference setup
-  finalReadPreference = finalReadPreference == true ? ReadPreference.SECONDARY_PREFERRED : finalReadPreference;
-  finalReadPreference = finalReadPreference == null ? ReadPreference.PRIMARY : finalReadPreference;
-
-  // If we are reading from a primary
-  if(finalReadPreference == 'primary') {
-    // If we provide a tags set send an error
-    if(typeof tags == 'object' && tags != null) {
-      return new Error("PRIMARY cannot be combined with tags");
-    }
-
-    // If we provide a tags set send an error
-    if(this._state.master == null) {
-      return new Error("No replica set primary available for query with ReadPreference PRIMARY");
-    }
-
-    // Checkout a writer
-    return this.checkoutWriter();
-  }
-
-  // If we have specified to read from a secondary server grab a random one and read
-  // from it, otherwise just pass the primary connection
-  if((this.options.readSecondary || finalReadPreference == ReadPreference.SECONDARY_PREFERRED || finalReadPreference == ReadPreference.SECONDARY) && Object.keys(this._state.secondaries).length > 0) {
-    // If we have tags, look for servers matching the specific tag
-    if(this.strategyInstance != null) {
-      // Only pick from secondaries
-      var _secondaries = [];
-      for(var key in this._state.secondaries) {
-        _secondaries.push(this._state.secondaries[key]);
-      }
-
-      if(finalReadPreference == ReadPreference.SECONDARY) {
-        // Check out the nearest from only the secondaries
-        connection = this.strategyInstance.checkoutConnection(tags, _secondaries);
-      } else {
-        connection = this.strategyInstance.checkoutConnection(tags, _secondaries);
-        // No candidate servers that match the tags, error
-        if(connection == null || connection instanceof Error) {
-          // No secondary server avilable, attemp to checkout a primary server
-          connection = this.checkoutWriter();
-          // If no connection return an error
-          if(connection == null || connection instanceof Error) {
-            return new Error("No replica set members available for query");
-          }
-        }
-      }
-    } else if(tags != null && typeof tags == 'object') {
-      // Get connection
-      connection = _pickFromTags(this, tags);// = function(self, readPreference, tags) {
-      // No candidate servers that match the tags, error
-      if(connection == null) {
-        return new Error("No replica set members available for query");
-      }
-    } else {
-      connection = _roundRobin(this, tags);
-    }
-  } else if(finalReadPreference == ReadPreference.PRIMARY_PREFERRED) {
-    // Check if there is a primary available and return that if possible
-    connection = this.checkoutWriter();
-    // If no connection available checkout a secondary
-    if(connection == null || connection instanceof Error) {
-      // If we have tags, look for servers matching the specific tag
-      if(tags != null && typeof tags == 'object') {
-        // Get connection
-        connection = _pickFromTags(this, tags);// = function(self, readPreference, tags) {
-        // No candidate servers that match the tags, error
-        if(connection == null) {
-          return new Error("No replica set members available for query");
-        }
-      } else {
-        connection = _roundRobin(this, tags);
-      }
-    }
-  } else if(finalReadPreference == ReadPreference.SECONDARY_PREFERRED) {
-    // If we have tags, look for servers matching the specific tag
-    if(this.strategyInstance != null) {
-      connection = this.strategyInstance.checkoutConnection(tags);
-      
-      // No candidate servers that match the tags, error
-      if(connection == null || connection instanceof Error) {
-        // No secondary server avilable, attemp to checkout a primary server
-        connection = this.checkoutWriter();
-        // If no connection return an error
-        if(connection == null || connection instanceof Error) {
-          var preferenceName = finalReadPreference == ReadPreference.SECONDARY ? 'secondary' : finalReadPreference;
-          return new Error("No replica set member available for query with ReadPreference " + preferenceName + " and tags " + JSON.stringify(tags));
-        }
-      }
-    } else if(tags != null && typeof tags == 'object') {
-      // Get connection
-      connection = _pickFromTags(this, tags);// = function(self, readPreference, tags) {
-      // No candidate servers that match the tags, error
-      if(connection == null) {
-        // No secondary server avilable, attemp to checkout a primary server
-        connection = this.checkoutWriter();
-        // If no connection return an error
-        if(connection == null || connection instanceof Error) {
-          var preferenceName = finalReadPreference == ReadPreference.SECONDARY ? 'secondary' : finalReadPreference;
-          return new Error("No replica set member available for query with ReadPreference " + preferenceName + " and tags " + JSON.stringify(tags));
-        }
-      }
-    }
-  } else if(finalReadPreference == ReadPreference.NEAREST && this.strategyInstance != null) {
-    connection = this.strategyInstance.checkoutConnection(tags);
-  } else if(finalReadPreference == ReadPreference.NEAREST && this.strategyInstance == null) {
-    return new Error("A strategy for calculating nearness must be enabled such as ping or statistical");
-  } else if(finalReadPreference == ReadPreference.SECONDARY && Object.keys(this._state.secondaries).length == 0) {
-    if(tags != null && typeof tags == 'object') {
-      var preferenceName = finalReadPreference == ReadPreference.SECONDARY ? 'secondary' : finalReadPreference;
-      return new Error("No replica set member available for query with ReadPreference " + preferenceName + " and tags " + JSON.stringify(tags));
-    } else {
-      return new Error("No replica set secondary available for query with ReadPreference SECONDARY");
-    }
-  } else {
-    connection = this.checkoutWriter();
-  }
-
-  // Return the connection
-  return connection;
-}
-
-/**
- * @ignore
- */
-var _pickFromTags = function(self, tags) {
-  // If we have an array or single tag selection
-  var tagObjects = Array.isArray(tags) ? tags : [tags];
-  // Iterate over all tags until we find a candidate server
-  for(var _i = 0; _i < tagObjects.length; _i++) {
-    // Grab a tag object
-    var tagObject = tagObjects[_i];
-    // Matching keys
-    var matchingKeys = Object.keys(tagObject);
-    // Match all the servers that match the provdided tags
-    var keys = Object.keys(self._state.secondaries);
-    var candidateServers = [];
-
-    for(var i = 0; i < keys.length; i++) {
-      var server = self._state.secondaries[keys[i]];
-      // If we have tags match
-      if(server.tags != null) {
-        var matching = true;
-        // Ensure we have all the values
-        for(var j = 0; j < matchingKeys.length; j++) {
-          if(server.tags[matchingKeys[j]] != tagObject[matchingKeys[j]]) {
-            matching = false;
-            break;
-          }
-        }
-
-        // If we have a match add it to the list of matching servers
-        if(matching) {
-          candidateServers.push(server);
-        }
-      }
-    }
-
-    // If we have a candidate server return
-    if(candidateServers.length > 0) {
-      if(self.strategyInstance) return self.strategyInstance.checkoutConnection(tags, candidateServers);
-      // Set instance to return
-      return candidateServers[Math.floor(Math.random() * candidateServers.length)].checkoutReader();
-    }
-  }
-
-  // No connection found
-  return null;
-}
-
-/**
- * Pick a secondary using round robin
- *
- * @ignore
- */
-function _roundRobin (replset, tags) {
-  var keys = Object.keys(replset._state.secondaries);
-  // Update index
-  replset._currentServerChoice = replset._currentServerChoice + 1;
-  // Pick a server
-  var key = keys[replset._currentServerChoice % keys.length];
-
-  var conn = null != replset._state.secondaries[key]
-    ? replset._state.secondaries[key].checkoutReader()
-    : null;
-
-  // If connection is null fallback to first available secondary
-  if(null == conn) {
-    conn = pickFirstConnectedSecondary(replset, tags);
-  }
-
-  return conn;
-}
-
-/**
- * @ignore
- */
-var pickFirstConnectedSecondary = function pickFirstConnectedSecondary(self, tags) {
-  var keys = Object.keys(self._state.secondaries);
-  var connection;
-
-  // Find first available reader if any
-  for(var i = 0; i < keys.length; i++) {
-    connection = self._state.secondaries[keys[i]].checkoutReader();
-    if(connection) return connection;
-  }
-
-  // If we still have a null, read from primary if it's not secondary only
-  if(self._readPreference == ReadPreference.SECONDARY_PREFERRED) {
-    connection = self._state.master.checkoutReader();
-    if(connection) return connection;
-  }
-
-  var preferenceName = self._readPreference == ReadPreference.SECONDARY_PREFERRED
-    ? 'secondary'
-    : self._readPreference;
-
-  return new Error("No replica set member available for query with ReadPreference "
-                  + preferenceName + " and tags " + JSON.stringify(tags));
-}
-
-/**
- * Get list of secondaries
- * @ignore
- */
-Object.defineProperty(ReplSet.prototype, "secondaries", {enumerable: true
-  , get: function() {
-      return utils.objectToArray(this._state.secondaries);
-    }
-});
-
-/**
- * Get list of secondaries
- * @ignore
- */
-Object.defineProperty(ReplSet.prototype, "arbiters", {enumerable: true
-  , get: function() {
-      return utils.objectToArray(this._state.arbiters);
-    }
-});
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set_state.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set_state.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set_state.js
deleted file mode 100644
index 1fbd9c0..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set_state.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Interval state object constructor
- *
- * @ignore
- */
-var ReplSetState = function ReplSetState (replset) {
-  this.errorMessages = [];
-  this.secondaries = {};
-  this.addresses = {};
-  this.arbiters = {};
-  this.passives = {};
-  this.members = [];
-  this.errors = {};
-  this.setName = null;
-  this.master = null;
-  this.replset = replset;
-}
-
-ReplSetState.prototype.hasValidServers = function() {
-  var validServers = [];
-  if(this.master && this.master.isConnected()) return true;
-
-  if(this.secondaries) {
-    var keys = Object.keys(this.secondaries)
-    for(var i = 0; i < keys.length; i++) {
-      if(this.secondaries[keys[i]].isConnected())
-        return true;
-    }
-  }
-
-  return false;
-}
-
-ReplSetState.prototype.getAllReadServers = function() {
-  var candidate_servers = [];
-  for(var name in this.addresses) {
-    candidate_servers.push(this.addresses[name]);
-  }
-
-  // Return all possible read candidates
-  return candidate_servers;
-}
-
-ReplSetState.prototype.addServer = function(server, master) {
-  server.name = master.me;
-
-  if(master.ismaster) {
-    this.master = server;
-    this.addresses[server.name] = server;
-    this.replset.emit('joined', "primary", master, server);
-  } else if(master.secondary) {
-    this.secondaries[server.name] = server;
-    this.addresses[server.name] = server;
-    this.replset.emit('joined', "secondary", master, server);
-  } else if(master.arbiters) {
-    this.arbiters[server.name] = server;
-    this.addresses[server.name] = server;
-    this.replset.emit('joined', "arbiter", master, server);
-  }
-}
-
-ReplSetState.prototype.contains = function(host) {
-  return this.addresses[host] != null;
-}
-
-ReplSetState.prototype.isPrimary = function(server) {
-  return this.master && this.master.name == server.name;
-}
-
-ReplSetState.prototype.isSecondary = function(server) {
-  return this.secondaries[server.name] != null;
-}
-
-exports.ReplSetState = ReplSetState;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/ping_strategy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/ping_strategy.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/ping_strategy.js
deleted file mode 100644
index 15a3a88..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/ping_strategy.js
+++ /dev/null
@@ -1,333 +0,0 @@
-var Server = require("../../server").Server
-  , format = require('util').format;
-
-// The ping strategy uses pings each server and records the
-// elapsed time for the server so it can pick a server based on lowest
-// return time for the db command {ping:true}
-var PingStrategy = exports.PingStrategy = function(replicaset, secondaryAcceptableLatencyMS) {
-  this.replicaset = replicaset;
-  this.secondaryAcceptableLatencyMS = secondaryAcceptableLatencyMS;
-  this.state = 'disconnected';
-  this.pingInterval = 5000;
-  // Class instance
-  this.Db = require("../../../db").Db;
-  // Active db connections
-  this.dbs = {};
-  // Current server index
-  this.index = 0;
-  // Logger api
-  this.Logger = null;
-}
-
-// Starts any needed code
-PingStrategy.prototype.start = function(callback) {
-  // already running?
-  if ('connected' == this.state) return;
-
-  this.state = 'connected';
-
-  // Start ping server
-  this._pingServer(callback);
-}
-
-// Stops and kills any processes running
-PingStrategy.prototype.stop = function(callback) {
-  // Stop the ping process
-  this.state = 'disconnected';
-
-  // Stop all the server instances
-  for(var key in this.dbs) {
-    this.dbs[key].close();
-  }
-
-  // optional callback
-  callback && callback(null, null);
-}
-
-PingStrategy.prototype.checkoutConnection = function(tags, secondaryCandidates) {
-  // Servers are picked based on the lowest ping time and then servers that lower than that + secondaryAcceptableLatencyMS
-  // Create a list of candidat servers, containing the primary if available
-  var candidateServers = [];
-  var self = this;
-
-  // If we have not provided a list of candidate servers use the default setup
-  if(!Array.isArray(secondaryCandidates)) {
-    candidateServers = this.replicaset._state.master != null ? [this.replicaset._state.master] : [];
-    // Add all the secondaries
-    var keys = Object.keys(this.replicaset._state.secondaries);
-    for(var i = 0; i < keys.length; i++) {
-      candidateServers.push(this.replicaset._state.secondaries[keys[i]])
-    }
-  } else {
-    candidateServers = secondaryCandidates;
-  }
-
-  // Final list of eligable server
-  var finalCandidates = [];
-
-  // If we have tags filter by tags
-  if(tags != null && typeof tags == 'object') {
-    // If we have an array or single tag selection
-    var tagObjects = Array.isArray(tags) ? tags : [tags];
-    // Iterate over all tags until we find a candidate server
-    for(var _i = 0; _i < tagObjects.length; _i++) {
-      // Grab a tag object
-      var tagObject = tagObjects[_i];
-      // Matching keys
-      var matchingKeys = Object.keys(tagObject);
-      // Remove any that are not tagged correctly
-      for(var i = 0; i < candidateServers.length; i++) {
-        var server = candidateServers[i];
-        // If we have tags match
-        if(server.tags != null) {
-          var matching = true;
-
-          // Ensure we have all the values
-          for(var j = 0; j < matchingKeys.length; j++) {
-            if(server.tags[matchingKeys[j]] != tagObject[matchingKeys[j]]) {
-              matching = false;
-              break;
-            }
-          }
-
-          // If we have a match add it to the list of matching servers
-          if(matching) {
-            finalCandidates.push(server);
-          }
-        }
-      }
-    }
-  } else {
-    // Final array candidates
-    var finalCandidates = candidateServers;
-  }
-
-  // Sort by ping time
-  finalCandidates.sort(function(a, b) {
-    return a.runtimeStats['pingMs'] > b.runtimeStats['pingMs'];
-  });
-
-  if(0 === finalCandidates.length)
-    return new Error("No replica set members available for query");
-
-  // find lowest server with a ping time
-  var lowest = finalCandidates.filter(function (server) {
-    return undefined != server.runtimeStats.pingMs;
-  })[0];
-
-  if(!lowest) {
-    lowest = finalCandidates[0];
-  }
-
-  // convert to integer
-  var lowestPing = lowest.runtimeStats.pingMs | 0;
-  
-  // determine acceptable latency
-  var acceptable = lowestPing + this.secondaryAcceptableLatencyMS;
-
-  // remove any server responding slower than acceptable
-  var len = finalCandidates.length;
-  while(len--) {
-    if(finalCandidates[len].runtimeStats['pingMs'] > acceptable) {
-      finalCandidates.splice(len, 1);
-    }
-  }
-
-  if(self.logger && self.logger.debug) {    
-    self.logger.debug("Ping strategy selection order for tags", tags);
-    finalCandidates.forEach(function(c) {
-      self.logger.debug(format("%s:%s = %s ms", c.host, c.port, c.runtimeStats['pingMs']), null);
-    })    
-  }
-
-  // If no candidates available return an error
-  if(finalCandidates.length == 0)
-    return new Error("No replica set members available for query");
-
-  // Ensure no we don't overflow
-  this.index = this.index % finalCandidates.length
-  // Pick a random acceptable server  
-  var connection = finalCandidates[this.index].checkoutReader();
-  // Point to next candidate (round robin style)
-  this.index = this.index + 1;
-
-  if(self.logger && self.logger.debug) {    
-    if(connection)
-      self.logger.debug("picked server %s:%s", connection.socketOptions.host, connection.socketOptions.port);
-  }
-
-  return connection;
-}
-
-PingStrategy.prototype._pingServer = function(callback) {
-  var self = this;
-
-  // Ping server function
-  var pingFunction = function() {
-    // Our state changed to disconnected or destroyed return
-    if(self.state == 'disconnected' || self.state == 'destroyed') return;
-    // If the replicaset is destroyed return
-    if(self.replicaset.isDestroyed() || self.replicaset._serverState == 'disconnected') return
-
-    // Create a list of all servers we can send the ismaster command to
-    var allServers = self.replicaset._state.master != null ? [self.replicaset._state.master] : [];
-
-    // Secondary keys
-    var keys = Object.keys(self.replicaset._state.secondaries);
-    // Add all secondaries
-    for(var i = 0; i < keys.length; i++) {
-      allServers.push(self.replicaset._state.secondaries[keys[i]]);
-    }
-
-    // Number of server entries
-    var numberOfEntries = allServers.length;
-
-    // We got keys
-    for(var i = 0; i < allServers.length; i++) {
-
-      // We got a server instance
-      var server = allServers[i];
-
-      // Create a new server object, avoid using internal connections as they might
-      // be in an illegal state
-      new function(serverInstance) {
-        var _db = self.dbs[serverInstance.host + ":" + serverInstance.port];
-        // If we have a db
-        if(_db != null) {
-          // Startup time of the command
-          var startTime = Date.now();
-
-          // Execute ping command in own scope
-          var _ping = function(__db, __serverInstance) {
-            // Execute ping on this connection
-            __db.executeDbCommand({ping:1}, {failFast:true}, function(err) {
-              if(err) {
-                delete self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port];
-                __db.close();
-                return done();
-              }
-
-              if(null != __serverInstance.runtimeStats && __serverInstance.isConnected()) {
-                __serverInstance.runtimeStats['pingMs'] = Date.now() - startTime;
-              }
-
-              __db.executeDbCommand({ismaster:1}, {failFast:true}, function(err, result) {
-                if(err) {
-                  delete self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port];
-                  __db.close();
-                  return done();
-                }
-
-                // Process the ismaster for the server
-                if(result && result.documents && self.replicaset.processIsMaster) {
-                  self.replicaset.processIsMaster(__serverInstance, result.documents[0]);
-                }
-
-                // Done with the pinging
-                done();
-              });
-            });            
-          };
-          // Ping
-          _ping(_db, serverInstance);
-        } else {
-          var connectTimeoutMS = self.replicaset.options.socketOptions 
-            ? self.replicaset.options.socketOptions.connectTimeoutMS : 0
-
-          // Create a new master connection
-          var _server = new Server(serverInstance.host, serverInstance.port, {
-            auto_reconnect: false,
-            returnIsMasterResults: true,
-            slaveOk: true,
-            poolSize: 1,
-            socketOptions: { connectTimeoutMS: connectTimeoutMS },
-            ssl: self.replicaset.options.ssl,
-            sslValidate: self.replicaset.options.sslValidate,
-            sslCA: self.replicaset.options.sslCA,
-            sslCert: self.replicaset.options.sslCert,
-            sslKey: self.replicaset.options.sslKey,
-            sslPass: self.replicaset.options.sslPass
-          });
-
-          // Create Db instance        
-          var _db = new self.Db('local', _server, { safe: true });
-          _db.on("close", function() {
-            delete self.dbs[this.serverConfig.host + ":" + this.serverConfig.port];
-          })
-
-          var _ping = function(__db, __serverInstance) {
-            if(self.state == 'disconnected') {
-              self.stop();
-              return;
-            }
-
-            __db.open(function(err, db) {  
-              if(self.state == 'disconnected' && __db != null) {
-                return __db.close();
-              }
-
-              if(err) {
-                delete self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port];
-                __db.close();
-                return done();
-              }
-
-              // Save instance
-              self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port] = __db;
-
-              // Startup time of the command
-              var startTime = Date.now();
-
-              // Execute ping on this connection
-              __db.executeDbCommand({ping:1}, {failFast:true}, function(err) {
-                if(err) {
-                  delete self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port];
-                  __db.close();
-                  return done();
-                }
-
-                if(null != __serverInstance.runtimeStats && __serverInstance.isConnected()) {
-                  __serverInstance.runtimeStats['pingMs'] = Date.now() - startTime;
-                }
-
-                __db.executeDbCommand({ismaster:1}, {failFast:true}, function(err, result) {
-                  if(err) {
-                    delete self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port];
-                    __db.close();
-                    return done();
-                  }
-    
-                  // Process the ismaster for the server
-                  if(result && result.documents && self.replicaset.processIsMaster) {
-                    self.replicaset.processIsMaster(__serverInstance, result.documents[0]);
-                  }
-
-                  // Done with the pinging
-                  done();
-                });
-              });
-            });            
-          };
-
-          // Ping the server
-          _ping(_db, serverInstance);
-        }
-
-        function done() {
-          // Adjust the number of checks
-          numberOfEntries--;
-
-          // If we are done with all results coming back trigger ping again
-          if(0 === numberOfEntries && 'connected' == self.state) {
-            setTimeout(pingFunction, self.pingInterval);
-          }
-        }
-      }(server);
-    }
-  }
-
-  // Start pingFunction
-  pingFunction();
-
-  callback && callback(null);
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/statistics_strategy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/statistics_strategy.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/statistics_strategy.js
deleted file mode 100644
index f9b8c46..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/statistics_strategy.js
+++ /dev/null
@@ -1,80 +0,0 @@
-// The Statistics strategy uses the measure of each end-start time for each
-// query executed against the db to calculate the mean, variance and standard deviation
-// and pick the server which the lowest mean and deviation
-var StatisticsStrategy = exports.StatisticsStrategy = function(replicaset) {
-  this.replicaset = replicaset;
-  // Logger api
-  this.Logger = null;  
-}
-
-// Starts any needed code
-StatisticsStrategy.prototype.start = function(callback) {
-  callback && callback(null, null);
-}
-
-StatisticsStrategy.prototype.stop = function(callback) {
-  callback && callback(null, null);
-}
-
-StatisticsStrategy.prototype.checkoutConnection = function(tags, secondaryCandidates) {
-  // Servers are picked based on the lowest ping time and then servers that lower than that + secondaryAcceptableLatencyMS
-  // Create a list of candidat servers, containing the primary if available
-  var candidateServers = [];
-
-  // If we have not provided a list of candidate servers use the default setup
-  if(!Array.isArray(secondaryCandidates)) {
-    candidateServers = this.replicaset._state.master != null ? [this.replicaset._state.master] : [];
-    // Add all the secondaries
-    var keys = Object.keys(this.replicaset._state.secondaries);
-    for(var i = 0; i < keys.length; i++) {
-      candidateServers.push(this.replicaset._state.secondaries[keys[i]])
-    }
-  } else {
-    candidateServers = secondaryCandidates;
-  }
-
-  // Final list of eligable server
-  var finalCandidates = [];
-
-  // If we have tags filter by tags
-  if(tags != null && typeof tags == 'object') {
-    // If we have an array or single tag selection
-    var tagObjects = Array.isArray(tags) ? tags : [tags];
-    // Iterate over all tags until we find a candidate server
-    for(var _i = 0; _i < tagObjects.length; _i++) {
-      // Grab a tag object
-      var tagObject = tagObjects[_i];
-      // Matching keys
-      var matchingKeys = Object.keys(tagObject);
-      // Remove any that are not tagged correctly
-      for(var i = 0; i < candidateServers.length; i++) {
-        var server = candidateServers[i];
-        // If we have tags match
-        if(server.tags != null) {
-          var matching = true;
-
-          // Ensure we have all the values
-          for(var j = 0; j < matchingKeys.length; j++) {
-            if(server.tags[matchingKeys[j]] != tagObject[matchingKeys[j]]) {
-              matching = false;
-              break;
-            }
-          }
-
-          // If we have a match add it to the list of matching servers
-          if(matching) {
-            finalCandidates.push(server);
-          }
-        }
-      }
-    }
-  } else {
-    // Final array candidates
-    var finalCandidates = candidateServers;
-  }
-
-  // If no candidates available return an error
-  if(finalCandidates.length == 0) return new Error("No replica set members available for query");
-  // Pick a random server
-  return finalCandidates[Math.round(Math.random(1000000) * (finalCandidates.length - 1))].checkoutReader();
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/server.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/server.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/server.js
deleted file mode 100644
index 36a3bc0..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/server.js
+++ /dev/null
@@ -1,940 +0,0 @@
-var Connection = require('./connection').Connection,
-  ReadPreference = require('./read_preference').ReadPreference,
-  DbCommand = require('../commands/db_command').DbCommand,
-  MongoReply = require('../responses/mongo_reply').MongoReply,
-  ConnectionPool = require('./connection_pool').ConnectionPool,
-  EventEmitter = require('events').EventEmitter,
-  ServerCapabilities = require('./server_capabilities').ServerCapabilities,
-  Base = require('./base').Base,
-  format = require('util').format,
-  utils = require('../utils'),
-  timers = require('timers'),
-  inherits = require('util').inherits;
-
-// Set processor, setImmediate if 0.10 otherwise nextTick
-var processor = require('../utils').processor();
-
-/**
- * Class representing a single MongoDB Server connection
- *
- * Options
- *  - **readPreference** {String, default:null}, set's the read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST)
- *  - **ssl** {Boolean, default:false}, use ssl connection (needs to have a mongod server with ssl support)
- *  - **sslValidate** {Boolean, default:false}, validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher)
- *  - **sslCA** {Array, default:null}, Array of valid certificates either as Buffers or Strings (needs to have a mongod server with ssl support, 2.4 or higher)
- *  - **sslCert** {Buffer/String, default:null}, String or buffer containing the certificate we wish to present (needs to have a mongod server with ssl support, 2.4 or higher)
- *  - **sslKey** {Buffer/String, default:null}, String or buffer containing the certificate private key we wish to present (needs to have a mongod server with ssl support, 2.4 or higher)
- *  - **sslPass** {Buffer/String, default:null}, String or buffer containing the certificate password (needs to have a mongod server with ssl support, 2.4 or higher)
- *  - **poolSize** {Number, default:5}, number of connections in the connection pool, set to 5 as default for legacy reasons.
- *  - **socketOptions** {Object, default:null}, an object containing socket options to use (noDelay:(boolean), keepAlive:(number), connectTimeoutMS:(number), socketTimeoutMS:(number))
- *  - **logger** {Object, default:null}, an object representing a logger that you want to use, needs to support functions debug, log, error **({error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}})**.
- *  - **auto_reconnect** {Boolean, default:false}, reconnect on error.
- *  - **disableDriverBSONSizeCheck** {Boolean, default:false}, force the server to error if the BSON message is to big
- *
- * @class Represents a Server connection.
- * @param {String} host the server host
- * @param {Number} port the server port
- * @param {Object} [options] optional options for insert command
- */
-function Server(host, port, options) {
-  // Set up Server instance
-  if(!(this instanceof Server)) return new Server(host, port, options);
-
-  // Set up event emitter
-  Base.call(this);
-
-  // Ensure correct values
-  if(port != null && typeof port == 'object') {
-    options = port;
-    port = Connection.DEFAULT_PORT;
-  }
-
-  var self = this;
-  this.host = host;
-  this.port = port;
-  this.options = options == null ? {} : options;
-  this.internalConnection;
-  this.internalMaster = false;
-  this.connected = false;  
-  this.poolSize = this.options.poolSize == null ? 5 : this.options.poolSize;
-  this.disableDriverBSONSizeCheck = this.options.disableDriverBSONSizeCheck != null ? this.options.disableDriverBSONSizeCheck : false;
-  this._used = false;
-  this.replicasetInstance = null;
-
-  // Emit open setup
-  this.emitOpen = this.options.emitOpen || true;
-  // Set ssl as connection method
-  this.ssl = this.options.ssl == null ? false : this.options.ssl;
-  // Set ssl validation
-  this.sslValidate = this.options.sslValidate == null ? false : this.options.sslValidate;
-  // Set the ssl certificate authority (array of Buffer/String keys)
-  this.sslCA = Array.isArray(this.options.sslCA) ? this.options.sslCA : null;
-  // Certificate to present to the server
-  this.sslCert = this.options.sslCert;
-  // Certificate private key if in separate file
-  this.sslKey = this.options.sslKey;
-  // Password to unlock private key
-  this.sslPass = this.options.sslPass;
-  // Server capabilities
-  this.serverCapabilities = null;
-  // Set server name
-  this.name = format("%s:%s", host, port);
-
-  // Ensure we are not trying to validate with no list of certificates
-  if(this.sslValidate && (!Array.isArray(this.sslCA) || this.sslCA.length == 0)) {
-    throw new Error("The driver expects an Array of CA certificates in the sslCA parameter when enabling sslValidate");
-  }
-
-  // Get the readPreference
-  var readPreference = this.options['readPreference'];
-  // If readPreference is an object get the mode string
-  var validateReadPreference = readPreference != null && typeof readPreference == 'object' ? readPreference.mode : readPreference;
-  // Read preference setting
-  if(validateReadPreference != null) {
-    if(validateReadPreference != ReadPreference.PRIMARY && validateReadPreference != ReadPreference.SECONDARY && validateReadPreference != ReadPreference.NEAREST
-      && validateReadPreference != ReadPreference.SECONDARY_PREFERRED && validateReadPreference != ReadPreference.PRIMARY_PREFERRED) {
-        throw new Error("Illegal readPreference mode specified, " + validateReadPreference);
-    }
-
-    // Set read Preference
-    this._readPreference = readPreference;
-  } else {
-    this._readPreference = null;
-  }
-
-  // Contains the isMaster information returned from the server
-  this.isMasterDoc;
-
-  // Set default connection pool options
-  this.socketOptions = this.options.socketOptions != null ? this.options.socketOptions : {};
-  if(this.disableDriverBSONSizeCheck) this.socketOptions.disableDriverBSONSizeCheck = this.disableDriverBSONSizeCheck;
-
-  // Set ssl up if it's defined
-  if(this.ssl) {
-    this.socketOptions.ssl = true;
-    // Set ssl validation
-    this.socketOptions.sslValidate = this.sslValidate == null ? false : this.sslValidate;
-    // Set the ssl certificate authority (array of Buffer/String keys)
-    this.socketOptions.sslCA = Array.isArray(this.sslCA) ? this.sslCA : null;
-    // Set certificate to present
-    this.socketOptions.sslCert = this.sslCert;
-    // Set certificate to present
-    this.socketOptions.sslKey = this.sslKey;
-    // Password to unlock private key
-    this.socketOptions.sslPass = this.sslPass;
-  }
-
-  // Set up logger if any set
-  this.logger = this.options.logger != null
-    && (typeof this.options.logger.debug == 'function')
-    && (typeof this.options.logger.error == 'function')
-    && (typeof this.options.logger.log == 'function')
-      ? this.options.logger : {error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}};
-
-  // Just keeps list of events we allow
-  this.eventHandlers = {error:[], parseError:[], poolReady:[], message:[], close:[], timeout:[]};
-  // Internal state of server connection
-  this._serverState = 'disconnected';
-  // Contains state information about server connection
-  this._state = {'runtimeStats': {'queryStats':new RunningStats()}};
-  // Do we record server stats or not
-  this.recordQueryStats = false;
-
-  // Allow setting the socketTimeoutMS on all connections
-  // to work around issues such as secondaries blocking due to compaction
-  utils.setSocketTimeoutProperty(this, this.socketOptions);
-};
-
-/**
- * @ignore
- */
-inherits(Server, Base);
-
-//
-//  Deprecated, USE ReadPreferences class
-//
-Server.READ_PRIMARY = ReadPreference.PRIMARY;
-Server.READ_SECONDARY = ReadPreference.SECONDARY_PREFERRED;
-Server.READ_SECONDARY_ONLY = ReadPreference.SECONDARY;
-
-/**
- * Always ourselves
- * @ignore
- */
-Server.prototype.setReadPreference = function(readPreference) {
-  this._readPreference = readPreference;  
-}
-
-/**
- * @ignore
- */
-Server.prototype.isMongos = function() {
-  return this.isMasterDoc != null && this.isMasterDoc['msg'] == "isdbgrid" ? true : false;
-}
-
-/**
- * @ignore
- */
-Server.prototype._isUsed = function() {
-  return this._used;
-}
-
-/**
- * @ignore
- */
-Server.prototype.close = function(callback) {
-  // Set server status as disconnected
-  this._serverState = 'destroyed';
-  // Remove all local listeners
-  this.removeAllListeners();
-
-  if(this.connectionPool != null) {
-    // Remove all the listeners on the pool so it does not fire messages all over the place
-    this.connectionPool.removeAllEventListeners();
-    // Close the connection if it's open
-    this.connectionPool.stop(true);
-  }
-
-  // Emit close event
-  if(this.db && !this.isSetMember()) {
-    var self = this;
-    processor(function() {
-      self._emitAcrossAllDbInstances(self, null, "close", null, null, true)
-    })
-
-    // Flush out any remaining call handlers
-    self._flushAllCallHandlers(utils.toError("Connection Closed By Application"));
-  }
-
-  // Peform callback if present
-  if(typeof callback === 'function') callback(null);
-};
-
-Server.prototype.isDestroyed = function() {
-  return this._serverState == 'destroyed';
-}
-
-/**
- * @ignore
- */
-Server.prototype.isConnected = function() {
-  return this.connectionPool != null && this.connectionPool.isConnected();
-}
-
-/**
- * @ignore
- */
-Server.prototype.canWrite = Server.prototype.isConnected;
-Server.prototype.canRead = Server.prototype.isConnected;
-
-Server.prototype.isAutoReconnect = function() {
-  if(this.isSetMember()) return false;
-  return this.options.auto_reconnect != null ? this.options.auto_reconnect : true;
-}
-
-/**
- * @ignore
- */
-Server.prototype.allServerInstances = function() {
-  return [this];
-}
-
-/**
- * @ignore
- */
-Server.prototype.isSetMember = function() {
-  return this.replicasetInstance != null || this.mongosInstance != null;
-}
-
-/**
- * Assigns a replica set to this `server`.
- *
- * @param {ReplSet} replset
- * @ignore
- */
-Server.prototype.assignReplicaSet = function (replset) {
-  this.replicasetInstance = replset;
-  this.inheritReplSetOptionsFrom(replset);
-  this.enableRecordQueryStats(replset.recordQueryStats);
-}
-
-/**
- * Takes needed options from `replset` and overwrites
- * our own options.
- *
- * @param {ReplSet} replset
- * @ignore
- */
-Server.prototype.inheritReplSetOptionsFrom = function (replset) {
-  this.socketOptions = {};
-  this.socketOptions.connectTimeoutMS = replset.options.socketOptions.connectTimeoutMS || 30000;
-
-  if(replset.options.ssl) {
-    // Set ssl on
-    this.socketOptions.ssl = true;
-    // Set ssl validation
-    this.socketOptions.sslValidate = replset.options.sslValidate == null ? false : replset.options.sslValidate;
-    // Set the ssl certificate authority (array of Buffer/String keys)
-    this.socketOptions.sslCA = Array.isArray(replset.options.sslCA) ? replset.options.sslCA : null;
-    // Set certificate to present
-    this.socketOptions.sslCert = replset.options.sslCert;
-    // Set certificate to present
-    this.socketOptions.sslKey = replset.options.sslKey;
-    // Password to unlock private key
-    this.socketOptions.sslPass = replset.options.sslPass;
-  }
-
-  // If a socket option object exists clone it
-  if(utils.isObject(replset.options.socketOptions)) {
-    var keys = Object.keys(replset.options.socketOptions);
-    for(var i = 0; i < keys.length; i++)
-      this.socketOptions[keys[i]] = replset.options.socketOptions[keys[i]];
-  }
-}
-
-/**
- * Opens this server connection.
- *
- * @ignore
- */
-Server.prototype.connect = function(dbInstance, options, callback) {
-  if('function' === typeof options) callback = options, options = {};
-  if(options == null) options = {};
-  if(!('function' === typeof callback)) callback = null;
-  var self = this;
-  // Save the options
-  this.options = options;
-
-  // Currently needed to work around problems with multiple connections in a pool with ssl
-  // TODO fix if possible
-  if(this.ssl == true) {
-    // Set up socket options for ssl
-    this.socketOptions.ssl = true;
-    // Set ssl validation
-    this.socketOptions.sslValidate = this.sslValidate == null ? false : this.sslValidate;
-    // Set the ssl certificate authority (array of Buffer/String keys)
-    this.socketOptions.sslCA = Array.isArray(this.sslCA) ? this.sslCA : null;
-    // Set certificate to present
-    this.socketOptions.sslCert = this.sslCert;
-    // Set certificate to present
-    this.socketOptions.sslKey = this.sslKey;
-    // Password to unlock private key
-    this.socketOptions.sslPass = this.sslPass;
-  }
-
-  // Let's connect
-  var server = this;
-  // Let's us override the main receiver of events
-  var eventReceiver = options.eventReceiver != null ? options.eventReceiver : this;
-  // Save reference to dbInstance
-  this.db = dbInstance;  // `db` property matches ReplSet and Mongos
-  this.dbInstances = [dbInstance];
-
-  // Force connection pool if there is one
-  if(server.connectionPool) server.connectionPool.stop();
-  // Set server state to connecting
-  this._serverState = 'connecting';
-
-  if(server.connectionPool != null) {
-    // Remove all the listeners on the pool so it does not fire messages all over the place
-    this.connectionPool.removeAllEventListeners();
-    // Close the connection if it's open
-    this.connectionPool.stop(true);    
-  }
-
-  this.connectionPool = new ConnectionPool(this.host, this.port, this.poolSize, dbInstance.bson, this.socketOptions);
-  var connectionPool = this.connectionPool;
-  // If ssl is not enabled don't wait between the pool connections
-  if(this.ssl == null || !this.ssl) connectionPool._timeToWait = null;
-  // Set logger on pool
-  connectionPool.logger = this.logger;
-  connectionPool.bson = dbInstance.bson;
-
-  // Set basic parameters passed in
-  var returnIsMasterResults = options.returnIsMasterResults == null ? false : options.returnIsMasterResults;
-
-  // Create a default connect handler, overriden when using replicasets
-  var connectCallback = function(_server) {
-    return function(err, reply) {  
-      // ensure no callbacks get called twice
-      var internalCallback = callback;
-      callback = null;
-      
-      // Assign the server
-      _server = _server != null ? _server : server;
-      
-      // If something close down the connection and removed the callback before
-      // proxy killed connection etc, ignore the erorr as close event was isssued
-      if(err != null && internalCallback == null) return;
-      // Internal callback
-      if(err != null) return internalCallback(err, null, _server);
-      _server.master = reply.documents[0].ismaster == 1 ? true : false;
-      _server.connectionPool.setMaxBsonSize(reply.documents[0].maxBsonObjectSize);
-      _server.connectionPool.setMaxMessageSizeBytes(reply.documents[0].maxMessageSizeBytes);
-      // Set server state to connEcted
-      _server._serverState = 'connected';
-      // Set server as connected
-      _server.connected = true;
-      // Save document returned so we can query it
-      _server.isMasterDoc = reply.documents[0];
-      
-      if(self.emitOpen) {        
-        _server._emitAcrossAllDbInstances(_server, eventReceiver, "open", null, returnIsMasterResults ? reply : null, null);        
-        self.emitOpen = false;
-      } else {
-        _server._emitAcrossAllDbInstances(_server, eventReceiver, "reconnect", null, returnIsMasterResults ? reply : null, null);        
-      }
-
-      // Set server capabilities
-      server.serverCapabilities = new ServerCapabilities(_server.isMasterDoc);      
-
-      // If we have it set to returnIsMasterResults
-      if(returnIsMasterResults) {
-        internalCallback(null, reply, _server);
-      } else {
-        internalCallback(null, dbInstance, _server);
-      }
-    }
-  };
-
-  // Let's us override the main connect callback
-  var connectHandler = options.connectHandler == null ? connectCallback(server) : options.connectHandler;
-
-  // Set up on connect method
-  connectionPool.on("poolReady", function() {
-    // Create db command and Add the callback to the list of callbacks by the request id (mapping outgoing messages to correct callbacks)
-    var db_command = DbCommand.NcreateIsMasterCommand(dbInstance, dbInstance.databaseName);
-    // Check out a reader from the pool
-    var connection = connectionPool.checkoutConnection();
-    // Register handler for messages
-    server._registerHandler(db_command, false, connection, connectHandler);
-    // Write the command out
-    connection.write(db_command);
-  })
-
-  // Set up item connection
-  connectionPool.on("message", function(message) {
-    // Attempt to parse the message
-    try {
-      // Create a new mongo reply
-      var mongoReply = new MongoReply()
-      // Parse the header
-      mongoReply.parseHeader(message, connectionPool.bson)
-
-      // If message size is not the same as the buffer size
-      // something went terribly wrong somewhere
-      if(mongoReply.messageLength != message.length) {
-        // Emit the error
-        if(eventReceiver.listeners("error") && eventReceiver.listeners("error").length > 0) eventReceiver.emit("error", new Error("bson length is different from message length"), server);
-        // Remove all listeners
-        server.removeAllListeners();
-      } else {
-        var startDate = new Date().getTime();
-
-        // Callback instance
-        var callbackInfo = server._findHandler(mongoReply.responseTo.toString());
-
-        // The command executed another request, log the handler again under that request id
-        if(mongoReply.requestId > 0 && mongoReply.cursorId.toString() != "0" 
-          && callbackInfo && callbackInfo.info && callbackInfo.info.exhaust) {
-            server._reRegisterHandler(mongoReply.requestId, callbackInfo);
-        }
-        // Parse the body
-        mongoReply.parseBody(message, connectionPool.bson, callbackInfo.info.raw, function(err) {
-          if(err != null) {
-            // If pool connection is already closed
-            if(server._serverState === 'disconnected') return;
-            // Set server state to disconnected
-            server._serverState = 'disconnected';
-            // Remove all listeners and close the connection pool
-            server.removeAllListeners();
-            connectionPool.stop(true);
-
-            // If we have a callback return the error
-            if(typeof callback === 'function') {
-              // ensure no callbacks get called twice
-              var internalCallback = callback;
-              callback = null;
-              // Perform callback
-              internalCallback(err, null, server);
-            } else if(server.isSetMember()) {
-              if(server.listeners("parseError") && server.listeners("parseError").length > 0) server.emit("parseError", utils.toError(err), server);
-            } else {
-              if(eventReceiver.listeners("parseError") && eventReceiver.listeners("parseError").length > 0) eventReceiver.emit("parseError", utils.toError(err), server);
-            }
-
-            // If we are a single server connection fire errors correctly
-            if(!server.isSetMember()) {
-              // Fire all callback errors
-              server.__executeAllCallbacksWithError(err);
-              // Emit error
-              server._emitAcrossAllDbInstances(server, eventReceiver, "parseError", server, null, true);
-            }
-            // Short cut
-            return;
-          }
-
-          // Let's record the stats info if it's enabled
-          if(server.recordQueryStats == true && server._state['runtimeStats'] != null
-            && server._state.runtimeStats['queryStats'] instanceof RunningStats) {
-            // Add data point to the running statistics object
-            server._state.runtimeStats.queryStats.push(new Date().getTime() - callbackInfo.info.start);
-          }
-
-          // Dispatch the call
-          server._callHandler(mongoReply.responseTo, mongoReply, null);
-
-          // If we have an error about the server not being master or primary
-          if((mongoReply.responseFlag & (1 << 1)) != 0
-            && mongoReply.documents[0].code
-            && mongoReply.documents[0].code == 13436) {
-              server.close();
-          }
-        });
-      }
-    } catch (err) {
-      // Throw error in next tick
-      processor(function() {
-        throw err;
-      })
-    }
-  });
-
-  // Handle timeout
-  connectionPool.on("timeout", function(err) {
-    // If pool connection is already closed
-    if(server._serverState === 'disconnected' 
-      || server._serverState === 'destroyed') return;
-    // Set server state to disconnected
-    server._serverState = 'disconnected';
-    // If we have a callback return the error
-    if(typeof callback === 'function') {
-      // ensure no callbacks get called twice
-      var internalCallback = callback;
-      callback = null;
-      // Perform callback
-      internalCallback(err, null, server);
-    } else if(server.isSetMember()) {
-      if(server.listeners("timeout") && server.listeners("timeout").length > 0) server.emit("timeout", err, server);
-    } else {
-      if(eventReceiver.listeners("timeout") && eventReceiver.listeners("timeout").length > 0) eventReceiver.emit("timeout", err, server);
-    }
-
-    // If we are a single server connection fire errors correctly
-    if(!server.isSetMember()) {
-      // Fire all callback errors
-      server.__executeAllCallbacksWithError(err);
-      // Emit error
-      server._emitAcrossAllDbInstances(server, eventReceiver, "timeout", err, server, true);
-    }
-
-    // If we have autoConnect enabled let's fire up an attempt to reconnect
-    if(server.isAutoReconnect() 
-      && !server.isSetMember()
-      && (server._serverState != 'destroyed')
-      && !server._reconnectInProgreess) {
-      // Set the number of retries
-      server._reconnect_retries = server.db.numberOfRetries;
-      // Attempt reconnect
-      server._reconnectInProgreess = true;
-      setTimeout(__attemptReconnect(server), server.db.retryMiliSeconds);
-    }    
-  });
-
-  // Handle errors
-  connectionPool.on("error", function(message, connection, error_options) {
-    // If pool connection is already closed
-    if(server._serverState === 'disconnected' 
-      || server._serverState === 'destroyed') return;
-    
-    // Set server state to disconnected
-    server._serverState = 'disconnected';
-    // Error message
-    var error_message = new Error(message && message.err ? message.err : message);
-    // Error message coming from ssl
-    if(error_options && error_options.ssl) error_message.ssl = true;
-
-    // If we have a callback return the error
-    if(typeof callback === 'function') {
-      // ensure no callbacks get called twice
-      var internalCallback = callback;
-      callback = null;
-      // Perform callback
-      internalCallback(error_message, null, server);
-    } else if(server.isSetMember()) {
-      if(server.listeners("error") && server.listeners("error").length > 0) server.emit("error", error_message, server);
-    } else {
-      if(eventReceiver.listeners("error") && eventReceiver.listeners("error").length > 0) eventReceiver.emit("error", error_message, server);
-    }
-
-    // If we are a single server connection fire errors correctly
-    if(!server.isSetMember()) {
-      // Fire all callback errors
-      server.__executeAllCallbacksWithError(error_message);
-      // Emit error
-      server._emitAcrossAllDbInstances(server, eventReceiver, "error", error_message, server, true);
-    }
-
-    // If we have autoConnect enabled let's fire up an attempt to reconnect
-    if(server.isAutoReconnect() 
-      && !server.isSetMember()
-      && (server._serverState != 'destroyed')
-      && !server._reconnectInProgreess) {
-
-      // Set the number of retries
-      server._reconnect_retries = server.db.numberOfRetries;
-      // Attempt reconnect
-      server._reconnectInProgreess = true;
-      setTimeout(__attemptReconnect(server), server.db.retryMiliSeconds);
-    }    
-  });
-
-  // Handle close events
-  connectionPool.on("close", function() {
-    // If pool connection is already closed
-    if(server._serverState === 'disconnected' 
-      || server._serverState === 'destroyed') return;
-    // Set server state to disconnected
-    server._serverState = 'disconnected';
-    // If we have a callback return the error
-    if(typeof callback == 'function') {
-      // ensure no callbacks get called twice
-      var internalCallback = callback;
-      callback = null;
-      // Perform callback
-      internalCallback(new Error("connection closed"), null, server);
-    } else if(server.isSetMember()) {
-      if(server.listeners("close") && server.listeners("close").length > 0) server.emit("close", new Error("connection closed"), server);
-    } else {
-      if(eventReceiver.listeners("close") && eventReceiver.listeners("close").length > 0) eventReceiver.emit("close", new Error("connection closed"), server);
-    }
-
-    // If we are a single server connection fire errors correctly
-    if(!server.isSetMember()) {
-      // Fire all callback errors
-      server.__executeAllCallbacksWithError(new Error("connection closed"));
-      // Emit error
-      server._emitAcrossAllDbInstances(server, eventReceiver, "close", server, null, true);
-    }
-
-    // If we have autoConnect enabled let's fire up an attempt to reconnect
-    if(server.isAutoReconnect() 
-      && !server.isSetMember()
-      && (server._serverState != 'destroyed')
-      && !server._reconnectInProgreess) {
-
-      // Set the number of retries
-      server._reconnect_retries = server.db.numberOfRetries;  
-      // Attempt reconnect
-      server._reconnectInProgreess = true;
-      setTimeout(__attemptReconnect(server), server.db.retryMiliSeconds);
-    }    
-  });
-
-  /**
-   * @ignore
-   */
-  var __attemptReconnect = function(server) {
-    return function() {
-      // Attempt reconnect
-      server.connect(server.db, server.options, function(err, result) {
-        server._reconnect_retries = server._reconnect_retries - 1;
-
-        if(err) {
-          // Retry
-          if(server._reconnect_retries == 0 || server._serverState == 'destroyed') {
-            server._serverState = 'connected';
-            server._reconnectInProgreess = false
-            // Fire all callback errors
-            return server.__executeAllCallbacksWithError(new Error("failed to reconnect to server"));
-          } else {
-            return setTimeout(__attemptReconnect(server), server.db.retryMiliSeconds);
-          }
-        } else {
-          // Set as authenticating (isConnected will be false)
-          server._serverState = 'authenticating';
-          // Apply any auths, we don't try to catch any errors here
-          // as there are nowhere to simply propagate them to
-          self._apply_auths(server.db, function(err, result) {            
-            server._serverState = 'connected';
-            server._reconnectInProgreess = false;
-            server._commandsStore.execute_queries();
-            server._commandsStore.execute_writes();
-          });
-        } 
-      });      
-    }
-  }
-
-  // If we have a parser error we are in an unknown state, close everything and emit
-  // error
-  connectionPool.on("parseError", function(err) {
-    // If pool connection is already closed
-    if(server._serverState === 'disconnected' 
-      || server._serverState === 'destroyed') return;
-    // Set server state to disconnected
-    server._serverState = 'disconnected';
-    // If we have a callback return the error
-    if(typeof callback === 'function') {
-      // ensure no callbacks get called twice
-      var internalCallback = callback;
-      callback = null;
-      // Perform callback
-      internalCallback(utils.toError(err), null, server);
-    } else if(server.isSetMember()) {
-      if(server.listeners("parseError") && server.listeners("parseError").length > 0) server.emit("parseError", utils.toError(err), server);
-    } else {
-      if(eventReceiver.listeners("parseError") && eventReceiver.listeners("parseError").length > 0) eventReceiver.emit("parseError", utils.toError(err), server);
-    }
-
-    // If we are a single server connection fire errors correctly
-    if(!server.isSetMember()) {
-      // Fire all callback errors
-      server.__executeAllCallbacksWithError(utils.toError(err));
-      // Emit error
-      server._emitAcrossAllDbInstances(server, eventReceiver, "parseError", server, null, true);
-    }
-  });
-
-  // Boot up connection poole, pass in a locator of callbacks
-  connectionPool.start();
-}
-
-/**
- * @ignore
- */
-Server.prototype.allRawConnections = function() {
-  return this.connectionPool != null ? this.connectionPool.getAllConnections() : [];
-}
-
-/**
- * Check if a writer can be provided
- * @ignore
- */
-var canCheckoutWriter = function(self, read) {
-  // We cannot write to an arbiter or secondary server
-  if(self.isMasterDoc && self.isMasterDoc['arbiterOnly'] == true) {
-    return new Error("Cannot write to an arbiter");
-  } if(self.isMasterDoc && self.isMasterDoc['secondary'] == true) {
-    return new Error("Cannot write to a secondary");
-  } else if(read == true && self._readPreference == ReadPreference.SECONDARY && self.isMasterDoc && self.isMasterDoc['ismaster'] == true) {
-    return new Error("Cannot read from primary when secondary only specified");
-  } else if(!self.isMasterDoc) {
-    return new Error("Cannot determine state of server");
-  }
-
-  // Return no error
-  return null;
-}
-
-/**
- * @ignore
- */
-Server.prototype.checkoutWriter = function(read) {
-  if(read == true) return this.connectionPool.checkoutConnection();
-  // Check if are allowed to do a checkout (if we try to use an arbiter f.ex)
-  var result = canCheckoutWriter(this, read);
-  // If the result is null check out a writer
-  if(result == null && this.connectionPool != null) {
-    var connection = this.connectionPool.checkoutConnection();
-    // Add server capabilities to the connection
-    if(connection)
-      connection.serverCapabilities = this.serverCapabilities;
-    return connection;
-  } else if(result == null) {
-    return null;
-  } else {
-    return result;
-  }
-}
-
-/**
- * Check if a reader can be provided
- * @ignore
- */
-var canCheckoutReader = function(self) {
-  // We cannot write to an arbiter or secondary server
-  if(self.isMasterDoc && self.isMasterDoc['arbiterOnly'] == true) {
-    return new Error("Cannot write to an arbiter");
-  } else if(self._readPreference != null) {
-    // If the read preference is Primary and the instance is not a master return an error
-    if((self._readPreference == ReadPreference.PRIMARY) && self.isMasterDoc && self.isMasterDoc['ismaster'] != true) {
-      return new Error("Read preference is Server.PRIMARY and server is not master");
-    } else if(self._readPreference == ReadPreference.SECONDARY && self.isMasterDoc && self.isMasterDoc['ismaster'] == true) {
-      return new Error("Cannot read from primary when secondary only specified");
-    }
-  } else if(!self.isMasterDoc) {
-    return new Error("Cannot determine state of server");
-  }
-
-  // Return no error
-  return null;
-}
-
-/**
- * @ignore
- */
-Server.prototype.checkoutReader = function(read) {
-  // Check if are allowed to do a checkout (if we try to use an arbiter f.ex)
-  var result = canCheckoutReader(this);
-  // If the result is null check out a writer
-  if(result == null && this.connectionPool != null) {
-    var connection = this.connectionPool.checkoutConnection();
-    // Add server capabilities to the connection
-    if(connection)
-      connection.serverCapabilities = this.serverCapabilities;
-    return connection;
-  } else if(result == null) {
-    return null;
-  } else {
-    return result;
-  }
-}
-
-/**
- * @ignore
- */
-Server.prototype.enableRecordQueryStats = function(enable) {
-  this.recordQueryStats = enable;
-}
-
-/**
- * Internal statistics object used for calculating average and standard devitation on
- * running queries
- * @ignore
- */
-var RunningStats = function() {
-  var self = this;
-  this.m_n = 0;
-  this.m_oldM = 0.0;
-  this.m_oldS = 0.0;
-  this.m_newM = 0.0;
-  this.m_newS = 0.0;
-
-  // Define getters
-  Object.defineProperty(this, "numDataValues", { enumerable: true
-    , get: function () { return this.m_n; }
-  });
-
-  Object.defineProperty(this, "mean", { enumerable: true
-    , get: function () { return (this.m_n > 0) ? this.m_newM : 0.0; }
-  });
-
-  Object.defineProperty(this, "variance", { enumerable: true
-    , get: function () { return ((this.m_n > 1) ? this.m_newS/(this.m_n - 1) : 0.0); }
-  });
-
-  Object.defineProperty(this, "standardDeviation", { enumerable: true
-    , get: function () { return Math.sqrt(this.variance); }
-  });
-
-  Object.defineProperty(this, "sScore", { enumerable: true
-    , get: function () {
-      var bottom = this.mean + this.standardDeviation;
-      if(bottom == 0) return 0;
-      return ((2 * this.mean * this.standardDeviation)/(bottom));
-    }
-  });
-}
-
-/**
- * @ignore
- */
-RunningStats.prototype.push = function(x) {
-  // Update the number of samples
-  this.m_n = this.m_n + 1;
-  // See Knuth TAOCP vol 2, 3rd edition, page 232
-  if(this.m_n == 1) {
-    this.m_oldM = this.m_newM = x;
-    this.m_oldS = 0.0;
-  } else {
-    this.m_newM = this.m_oldM + (x - this.m_oldM) / this.m_n;
-    this.m_newS = this.m_oldS + (x - this.m_oldM) * (x - this.m_newM);
-
-    // set up for next iteration
-    this.m_oldM = this.m_newM;
-    this.m_oldS = this.m_newS;
-  }
-}
-
-/**
- * @ignore
- */
-Object.defineProperty(Server.prototype, "autoReconnect", { enumerable: true
-  , get: function () {
-      return this.options['auto_reconnect'] == null ? false : this.options['auto_reconnect'];
-    }
-});
-
-/**
- * @ignore
- */
-Object.defineProperty(Server.prototype, "connection", { enumerable: true
-  , get: function () {
-      return this.internalConnection;
-    }
-  , set: function(connection) {
-      this.internalConnection = connection;
-    }
-});
-
-/**
- * @ignore
- */
-Object.defineProperty(Server.prototype, "master", { enumerable: true
-  , get: function () {
-      return this.internalMaster;
-    }
-  , set: function(value) {
-      this.internalMaster = value;
-    }
-});
-
-/**
- * @ignore
- */
-Object.defineProperty(Server.prototype, "primary", { enumerable: true
-  , get: function () {
-      return this;
-    }
-});
-
-/**
- * Getter for query Stats
- * @ignore
- */
-Object.defineProperty(Server.prototype, "queryStats", { enumerable: true
-  , get: function () {
-      return this._state.runtimeStats.queryStats;
-    }
-});
-
-/**
- * @ignore
- */
-Object.defineProperty(Server.prototype, "runtimeStats", { enumerable: true
-  , get: function () {
-      return this._state.runtimeStats;
-    }
-});
-
-/**
- * Get Read Preference method
- * @ignore
- */
-Object.defineProperty(Server.prototype, "readPreference", { enumerable: true
-  , get: function () {
-      if(this._readPreference == null && this.readSecondary) {
-        return Server.READ_SECONDARY;
-      } else if(this._readPreference == null && !this.readSecondary) {
-        return Server.READ_PRIMARY;
-      } else {
-        return this._readPreference;
-      }
-    }
-});
-
-/**
- * @ignore
- */
-exports.Server = Server;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/server_capabilities.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/server_capabilities.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/server_capabilities.js
deleted file mode 100644
index 88bdf9f..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/server_capabilities.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var ServerCapabilities = function(isMasterResult) {  
-  // Capabilities
-  var aggregationCursor = false;
-  var writeCommands = false;
-  var textSearch = false;
-  var authCommands = false;
-  var maxNumberOfDocsInBatch = 1000;
-
-  if(isMasterResult.minWireVersion >= 0) {
-  	textSearch = true;
-  }
-
-  if(isMasterResult.maxWireVersion >= 1) {
-  	aggregationCursor = true;
-    authCommands = true;
-  }
-
-  if(isMasterResult.maxWireVersion >= 2) {
-    writeCommands = true;
-  }
-
-  // If no min or max wire version set to 0
-  if(isMasterResult.minWireVersion == null) {
-    isMasterResult.minWireVersion = 0;
-  }
-
-  if(isMasterResult.maxWireVersion == null) {
-    isMasterResult.maxWireVersion = 0;
-  }
-
-  // Map up read only parameters
-  setup_get_property(this, "hasAggregationCursor", aggregationCursor);
-  setup_get_property(this, "hasWriteCommands", writeCommands);
-  setup_get_property(this, "hasTextSearch", textSearch);
-  setup_get_property(this, "hasAuthCommands", authCommands);
-  setup_get_property(this, "minWireVersion", isMasterResult.minWireVersion);
-  setup_get_property(this, "maxWireVersion", isMasterResult.maxWireVersion);
-  setup_get_property(this, "maxNumberOfDocsInBatch", maxNumberOfDocsInBatch);
-}
-
-var setup_get_property = function(object, name, value) {
-  Object.defineProperty(object, name, {
-      enumerable: true
-    , get: function () { return value; }
-  });  
-}
-
-exports.ServerCapabilities = ServerCapabilities;
\ No newline at end of file



[39/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/views/dimensions.html
----------------------------------------------------------------------
diff --git a/web/demos/package/app/views/dimensions.html b/web/demos/package/app/views/dimensions.html
deleted file mode 100644
index dafa6e3..0000000
--- a/web/demos/package/app/views/dimensions.html
+++ /dev/null
@@ -1,185 +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.
-
--->
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <h2 class="app-title">
-                Ads Dimensions
-                <a ng-show="appURL" href="{{appURL}}" class="btn btn-primary btn-view-console" target="_blank">View Console</a>
-            </h2>
-        </div>
-    </div>
-    <div class="row-fluid">
-        <p class="well span7">
-            This demo application monitors the online ads dimensions in real time. The views and clicks of ads are being counted in real time. Three dimensions are being tracked, namely publisher, advertiser, and ad unit. In real time all the dimensions are computed for views (cost) and clicks (revenue). This enables a participant in an real time ad exchange to run applications to optimize the performance of their bids.
-        </p>
-        <div class="span5">
-            <span widgets-stat="" app="app"></span>
-        </div><!--/span-->
-    </div>
-
-    <div class="row-fluid">
-        <div class="span2">
-            <div class="well sidebar-nav">
-                <ul class="nav nav-list params-nav">
-                    <li class="nav-header">Dimensions</li>
-                    <form method="GET">
-                        <li>
-                            <label for="publisher">Publisher ID:</label>
-                            <select ng-model="publisher" id="publisher" ng-options="item.label for item in select.publisher">
-                            </select>
-                        </li>
-
-                        <li>
-                            <label for="advertiser">Advertiser ID:</label>
-                            <select ng-model="advertiser" id="advertiser" ng-options="item.label for item in select.advertiser">
-                            </select>
-                        </li>
-
-                        <li>
-                            <label for="adunit">Ad Unit:</label>
-                            <select ng-model="adunit" id="adunit" ng-options="item.label for item in select.adunit">
-                            </select>
-                        </li>
-
-                        <li>
-                            <label for="pollInterval">Poll Interval:</label>
-                            <div class="input-append">
-                                <input type="number" ng-model="pollInterval" min="1" id="pollInterval" class="input-small">
-                                <span class="add-on">Sec</span>
-                            </div>
-                        </li>
-
-                        <li>
-                            <label for="lookback">Look Back:</label>
-                            <div class="input-append">
-                                <input type="number" ng-model="lookback" min="2" id="lookback" class="input-small">
-                                <span class="add-on">Minutes</span>
-                            </div>
-                        </li>
-
-                        <li>
-                            <div class="checkbox">
-                                <label>
-                                    <input type="checkbox" ng-model="includeLastMinute"> Include Last Minute
-                                </label>
-                            </div>
-                        </li>
-                    </form>
-                </ul>
-            </div><!--/.well -->
-        </div><!--/span-->
-        <div class="span10">
-            <div class="row-fluid">
-                <div class="span12 network-response">
-                    <span ng-show="lastResponse">
-                        <span class="network-response-label">Network Last Response:</span>
-                        <span class="network-response-stat">{{lastResponse|date:'HH:mm:ss'}}</span>
-                    </span>
-                    <span ng-show="responseTime">
-                        <span class="network-response-label">Network Response Time:</span>
-                        <span class="network-response-stat">{{responseTime|number}} ms</span>
-                    </span>
-                    <span class="network-response-label network-response-loading" ng-show="requestProgress > 1">
-                        Loading: {{requestProgress|number}} sec
-                    </span>
-
-                </div>
-            </div>
-            <div class="row-fluid">
-                <div class="span6">
-                    <h4 class="chart-title">Cost Chart</h4>
-                    <line-chart chart="costChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-                <div class="span6">
-                    <h4 class="chart-title">Revenue Chart</h4>
-                    <line-chart chart="revenueChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-            </div><!--/row-->
-            <div class="row-fluid">
-                <div class="span6">
-                    <h4 class="chart-title">Impressions Chart</h4>
-                    <line-chart chart="impressionsChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-                <div class="span6">
-                    <h4 class="chart-title">Clicks Chart</h4>
-                    <line-chart chart="clicksChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-            </div><!--/row-->
-            <div class="row-fluid">
-                <div class="span6">
-                    <h4 class="chart-title">Ctr Chart</h4>
-                    <line-chart chart="ctrChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-                <div class="span6">
-                    <h4 class="chart-title">Margin Chart</h4>
-                    <line-chart chart="marginChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-            </div><!--/row-->
-            <div class="row-fluid">
-                <div class="span6">
-                    <h4 class="chart-title">Server Polling Statistics</h4>
-                    <div>
-                        <span class="network-response-label">Network Last Response:</span>
-                        <span class="network-response-stat">{{lastResponse|date:'HH:mm:ss'}}</span>
-                        <span class="network-response-label network-response-loading" ng-show="requestProgress > 1">
-                            Loading: {{requestProgress|number}} sec
-                        </span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Network Response Time:</span>
-                        <span>{{responseTime|number}} ms</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Minutes cached:</span>
-                        <span>{{minutesCached}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Minutes received:</span>
-                        <span>{{minutesReceived}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Keys Queried:</span>
-                        <span>{{response.keysQueried}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Last Key Queried:</span>
-                        <span>{{response.lastKeyQueried}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Last Key with Data:</span>
-                        <span>{{response.lastKey}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Redis Query Time:</span>
-                        <span>{{response.queryTime|number}} ms</span>
-                    </div>
-                </div><!--/span-->
-            </div><!--/row-->
-        </div><!--/span-->
-    </div><!--/row-->
-
-    <hr>
-
-    <footer>
-        <p>&copy; DataTorrent 2014</p>
-    </footer>
-</div><!--/.fluid-container-->
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/views/fraud.html
----------------------------------------------------------------------
diff --git a/web/demos/package/app/views/fraud.html b/web/demos/package/app/views/fraud.html
deleted file mode 100644
index 69a0833..0000000
--- a/web/demos/package/app/views/fraud.html
+++ /dev/null
@@ -1,84 +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.
-
--->
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-			<h2 class="app-title">
-				Fraud Detection
-				<a href="{{appURL}}" class="btn btn-primary" target="_blank" style="margin-left: 20px">View Console</a>
-			</h2>
-		</div>
-	</div>
-	<div class="row-fluid">
-		<p class="well span7">
-			This demo application processes a stream of credit card transactions, coming from multiple Point Of Sale terminals. The application computes statistics and applies several fraud evaluators to recognize potential fraud attempts. In particular, it looks for well-known fraud patterns, like small purchase followed by the big purchase at the same sales terminal, unusually big purchases per particular merchant or terminal, usage of multiple cards issued to different customers by the same bank at the same terminal and more. Alerts are generated in real-time, also all computed data and alerts saved into MongoDB for subsequent analysis. While influenced by real customers, because of privacy concerns, the data for this demo is automatically generated.
-		</p>
-		<div class="span5">
-			<span widgets-stat="" app="app"></span>
-		</div><!--/span-->
-	</div>
-
-	<h3>Statistics</h3>
-	<div class="row-fluid">
-		<div class="well span3 overview-item" ng-repeat="stat in stats">
-			<div class="key">{{stat.label}}</div>
-			<div class="value">{{stat.value}}</div>
-		</div>
-	</div>
-    
-	<div class="row-fluid">
-		<div class="span5">
-			<h3>Generate Transactions</h3>
-			<div class="row-fluid" class="generate-tx-div" ng-repeat="action in actions">
-				<div class="span3 generate-tx-btn-wrap">
-					<button class="btn generate-{{action.severity}}" ng-click="action.generateTxns()">generate</button>
-				</div><div class="span9 generate-tx-desc">
-					<h4>Fraud Type {{action.id}} <span class="lead">({{action.subtitle}})</span></h4>
-					<p>{{action.description}}</p>    
-				</div>
-			</div>
-		</div>
-		<div class="span7">
-			<h3>User Alerts Triggered <button class="btn clearFraudsBtn" ng-click="clearFrauds()">clear</button></h3>
-			<div class="well" id="alertDisplayBox">
-				
-			</div>
-		</div>
-	</div>
-
-	<hr>
-
-	<footer>
-		<p>&copy; DataTorrent 2014</p>
-	</footer>
-</div><!--/.fluid-container-->
-<div id="txn-modal" class="modal hide fade" role="dialog" style="display:none">
-	<div class="modal-header">
-	    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">Ɨ</button>
-	    <h3>Transaction</h3>
-	  </div>
-	  <div class="modal-body">
-		  
-	  </div>
-	  <div class="modal-footer">
-	    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
-	  </div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/views/machine.html
----------------------------------------------------------------------
diff --git a/web/demos/package/app/views/machine.html b/web/demos/package/app/views/machine.html
deleted file mode 100644
index d991e22..0000000
--- a/web/demos/package/app/views/machine.html
+++ /dev/null
@@ -1,193 +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.
-
--->
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <h2 class="app-title">
-                Large Scale Monitoring and Analysis
-                <a ng-show="appURL" href="{{appURL}}" class="btn btn-primary btn-view-console" target="_blank">View Console</a>
-            </h2>
-        </div>
-    </div>
-    <div class="row-fluid">
-        <p class="well span7">
-            This demo application monitors samples of CPU, RAM and HD utilization coming from a heterogeneous installed base of multiple devices located at multiple data centers and used by different customers. The application receives sensor events from each device including the device ID, device model, the OS version, other installed application versions, and customer attributes.  It tracks the status of the devices across every combination of dimensions. This allows both immediate analysis and real-time monitoring of anomalies - e.g. notify when average CPU utilization exceeds 70% for particular combination of model, customer and software. While influenced by real customers, because of security concerns, this demo uses randomly generated data.
-        </p>
-        <div class="span5">
-            <span widgets-stat="" app="app"></span>
-        </div><!--/span-->
-    </div>
-
-    <div class="row-fluid">
-        <div class="span2">
-            <div class="well sidebar-nav">
-                <ul class="nav nav-list params-nav">
-                    <li class="nav-header">Dimensions</li>
-                    <form method="GET">
-                        <li>
-                        <label for="customer">Customer ID:</label>
-                        <select ng-model="customer" id="customer" ng-options="item.label for item in select.customer">
-                        </select>
-                        </li>
-
-                        <li>
-                        <label for="product">Product ID:</label>
-                        <select ng-model="product" id="product" ng-options="item.label for item in select.product">
-                        </select>
-                        </li>
-
-                        <li>
-                        <label for="os">Product OS:</label>
-                        <select ng-model="os" id="os" ng-options="item.label for item in select.os">
-                        </select>
-                        </li>
-
-                        <li>
-                        <label for="software1">Software1 Ver:</label>
-                        <select ng-model="software1" id="software1" ng-options="item.label for item in select.software1">
-                        </select>
-                        </li>
-
-                        <li>
-                        <label for="software2">Software2 Ver:</label>
-                        <select ng-model="software2" id="software2" ng-options="item.label for item in select.software2">
-                        </select>
-                        </li>
-
-                        <li>
-                        <label for="deviceId">Device ID:</label>
-                        <select ng-model="deviceId" id="deviceId" ng-options="item.label for item in select.deviceId">
-                        </select>
-                        </li>
-
-                        <li>
-                        <label for="lookback">Look Back:</label>
-                        <div class="input-append">
-                            <input type="number" ng-model="lookback" min="2" id="lookback" class="input-small">
-                            <span class="add-on">Minutes</span>
-                        </div>
-                        </li>
-                        <!--
-                        <li>
-                            <input ng-click="reload();" type="submit" value="reload" class="btn btn-primary" />
-                        </li>
-                        -->
-
-                    </form>
-                </ul>
-            </div><!--/.well -->
-        </div><!--/span-->
-        <div class="span10">
-            <div class="row-fluid">
-                <div class="span12 network-response">
-                    <span ng-show="lastResponse">
-                        <span class="network-response-label">Network Last Response:</span>
-                        <span class="network-response-stat">{{lastResponse|date:'HH:mm:ss'}}</span>
-                    </span>
-                    <span ng-show="responseTime">
-                        <span class="network-response-label">Network Response Time:</span>
-                        <span class="network-response-stat">{{responseTime|number}} ms</span>
-                    </span>
-                    <span class="network-response-label network-response-loading" ng-show="requestProgress > 1">
-                        Loading: {{requestProgress|number}} sec
-                    </span>
-
-                </div>
-            </div>
-            <div class="row-fluid">
-                <div class="span8">
-                    <h4 class="chart-title">CPU Usage (%)</h4>
-                    <line-chart chart="cpuChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-                <div class="span4">
-                    <h4>Current CPU Usage (%)</h4>
-                    <span gauge="" min="0" max="100" value="cpu" label="CPU" class="gauge"></span>
-                </div><!--/span-->
-            </div><!--/row-->
-            <div class="row-fluid">
-                <div class="span8">
-                    <h4 class="chart-title">RAM Usage (%)</h4>
-                    <line-chart chart="ramChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-                <div class="span4">
-                    <h4>Current RAM Usage (%)</h4>
-                    <span gauge="" min="0" max="100" value="ram" label="RAM" class="gauge"></span>
-                </div><!--/span-->
-            </div><!--/row-->
-            <div class="row-fluid">
-                <div class="span8">
-                    <h4 class="chart-title">HDD Usage (%)</h4>
-                    <line-chart chart="hddChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-                <div class="span4">
-                    <h4>Current HDD Usage (%)</h4>
-                    <span gauge="" min="0" max="100" value="hdd" label="HDD" class="gauge"></span>
-                </div><!--/span-->
-            </div><!--/row-->
-            <div class="row-fluid">
-                <div class="span8">
-                    <h4 class="chart-title">Server Polling Statistics</h4>
-                    <div>
-                        <span class="network-response-label">Network Last Response:</span>
-                        <span class="network-response-stat">{{lastResponse|date:'HH:mm:ss'}}</span>
-                        <span class="network-response-label network-response-loading" ng-show="requestProgress > 1">
-                            Loading: {{requestProgress|number}} sec
-                        </span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Network Response Time:</span>
-                        <span>{{responseTime|number}} ms</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Minutes cached:</span>
-                        <span>{{minutesCached}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Minutes received:</span>
-                        <span>{{minutesReceived}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Keys Queried:</span>
-                        <span>{{response.keysQueried}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Last Key Queried:</span>
-                        <span>{{response.lastKeyQueried}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Last Key with Data:</span>
-                        <span>{{response.lastKey}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Redis Query Time:</span>
-                        <span>{{response.queryTime|number}} ms</span>
-                    </div>
-                </div><!--/span-->
-            </div><!--/row-->
-        </div><!--/span-->
-    </div><!--/row-->
-
-    <hr>
-
-    <footer>
-        <p>&copy; DataTorrent 2014</p>
-    </footer>
-</div><!--/.fluid-container-->
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/views/mobile.html
----------------------------------------------------------------------
diff --git a/web/demos/package/app/views/mobile.html b/web/demos/package/app/views/mobile.html
deleted file mode 100644
index 42d463b..0000000
--- a/web/demos/package/app/views/mobile.html
+++ /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.
-
--->
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <h2 class="app-title">
-                Mobile Geo-Location Monitoring
-                <a ng-show="appURL" href="{{appURL}}" class="btn btn-primary btn-view-console" target="_blank">View Console</a>
-            </h2>
-        </div>
-    </div>
-    <div class="row-fluid">
-        <p class="well span7">
-            This demo application highlights the ability to register specific mobile numbers and start receiving geo-location updates in real-time. While the events arrive at high volume of 50k to 250k updates per second, but the application only pushes out the updates for the registered phones, making it possible to visualize using simple web user interface. While influenced by real customers, because of privacy concerns, the data for this demo is automatically generated.
-        </p>
-        <div class="span5">
-            <span widgets-stat="" app="app"></span>
-        </div><!--/span-->
-    </div>
-    <div class="row-fluid">
-        <div class="span3" ng-controller="MobileGridControlller">
-            <h4>Locations</h4>
-
-            <div class="form-horizontal">
-                <input type="number" min="5550000" max="5559999" ng-model="phone">
-                <button ng-click="addPhone();" type="button" class="btn btn-default">Add</button>
-            </div>
-
-            <div class="mobile-grid" ng-grid="gridOptions"></div>
-        </div>
-        <div class="span9" ng-controller="MapController">
-            <div class="google-map" style="height:550px" center="position.coords" zoom="zoomProperty" markers="markersProperty" latitude="clickedLatitudeProperty" longitude="clickedLongitudeProperty" mark-click="false" draggable="true" fit="false" events="eventsProperty" style="height: 500px; width: 100%">
-            </div>
-        </div>
-    </div>
-
-    <hr>
-
-    <footer>
-        <p>&copy; DataTorrent 2014</p>
-    </footer>
-</div><!--/.fluid-container-->
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/views/stat.html
----------------------------------------------------------------------
diff --git a/web/demos/package/app/views/stat.html b/web/demos/package/app/views/stat.html
deleted file mode 100644
index 4aa15a4..0000000
--- a/web/demos/package/app/views/stat.html
+++ /dev/null
@@ -1,32 +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.
-
--->
-<div class="overview-item well span4">
-    <div class="key">Events/sec</div>
-    <div class="value">{{totalEmitted|number}}</div>
-</div>
-<div class="overview-item well span5">
-    <div class="key">Total Events</div>
-    <div class="value">{{totalProcessed|number}}</div>
-</div>
-<div class="overview-item well span3">
-    <div class="key">Up For</div>
-    <div class="value">{{elapsed|elapsed}}</div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/views/twitter.html
----------------------------------------------------------------------
diff --git a/web/demos/package/app/views/twitter.html b/web/demos/package/app/views/twitter.html
deleted file mode 100644
index 617cca3..0000000
--- a/web/demos/package/app/views/twitter.html
+++ /dev/null
@@ -1,58 +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.
-
--->
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <h2 class="app-title">
-                {{pageTitle}}
-                <a ng-show="appURL" href="{{appURL}}" class="btn btn-primary btn-view-console" target="_blank">View Console</a>
-            </h2>
-        </div>
-    </div>
-    <div class="row-fluid">
-        <p class="well span7">
-            This demo application processes tweets and computes most frequently cited {{entity}} during the last 5 minutes. The results are continuously updated every 0.5 sec. For demo purposes, we used live (1% sample) developer version of the Twitter feed, and scale it up by 100x to produce the true load.  The application process load equivalent to full firehose.
-        </p>
-        <div class="span5">
-            <span widgets-stat="" app="app"></span>
-        </div><!--/span-->
-    </div>
-    <div class="row-fluid">
-        <div class="span4">
-            <h4>{{gridTitle}}</h4>
-            <div ng-controller="TwitterGridControlller">
-                <div class="twitter-grid" ng-grid="gridOptions"></div>
-            </div>
-        </div><!--/span-->
-        <div class="span4">
-            <h4>{{chartTitle}}</h4>
-            <div ng-controller="TwitterBarChartController">
-                <span widgets-bar-chart="" class="bar-chart" data="twitterBarChartData" label="name" on-click="d3OnClick(item)"></span>
-            </div>
-        </div><!--/span-->
-    </div><!--/row-->
-
-    <hr>
-
-    <footer>
-        <p>&copy; DataTorrent 2014</p>
-    </footer>
-</div><!--/.fluid-container-->
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/views/welcome.html
----------------------------------------------------------------------
diff --git a/web/demos/package/app/views/welcome.html b/web/demos/package/app/views/welcome.html
deleted file mode 100644
index 823bc63..0000000
--- a/web/demos/package/app/views/welcome.html
+++ /dev/null
@@ -1,25 +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.
-
--->
-<div class="hero-unit">
-    <h2 class="app-title">DataTorrent Demo Applications</h2>
-    <p>Welcome to DataTorrent Demo Applications.</p>
-    <p>Please click on the links above to open the demo.</p>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/config.js
----------------------------------------------------------------------
diff --git a/web/demos/package/config.js b/web/demos/package/config.js
deleted file mode 100644
index 09f842c..0000000
--- a/web/demos/package/config.js
+++ /dev/null
@@ -1,85 +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.
- */
-var config = {};
-config.web = {};
-config.gateway = {};
-config.machine = {};
-config.machine.redis = {};
-config.fraud = {};
-config.fraud.mongo = {};
-config.adsdimensions = {};
-config.adsdimensions.redis = {};
-
-config.web.port = process.env.PORT || 3003;
-config.web.staticDir = process.env.STATIC_DIR || '/app';
-config.gateway.host = process.env.GATEWAY_HOST || 'localhost';
-config.gateway.port = process.env.GATEWAY_PORT || 9090;
-config.machine.redis.host = process.env.MACHINE_REDIS_HOST || null;
-config.machine.redis.port = process.env.MACHINE_REDIS_PORT || 6379;
-config.machine.redis.dbIndex = process.env.MACHINE_REDIS_DB_INDEX || 2;
-config.adsdimensions.redis.host = process.env.ADS_REDIS_HOST || null;
-config.adsdimensions.redis.port = process.env.ADS_REDIS_PORT || 6379;
-config.adsdimensions.redis.dbIndex = process.env.ADS_REDIS_DB_INDEX || 0;
-config.fraud.mongo.host = process.env.MONGODB_HOST || null;
-config.fraud.mongo.port = process.env.MONGODB_PORT || 27017;
-config.fraud.mongo.dbName = 'frauddetect';
-
-// client settings (passed to the browser)
-config.settings = {};
-var settings = config.settings;
-
-settings.twitterUrls = {};
-settings.twitterHashtags = {};
-settings.mobile = {};
-settings.mobile.topic = {};
-settings.machine = {};
-settings.machine.range = {};
-settings.dimensions = {};
-settings.dimensions.range = {};
-settings.fraud = {};
-
-settings.webSocketURL = 'ws://' + config.gateway.host + ':' + config.gateway.port + '/pubsub';
-settings.appsURL = 'http://' + config.gateway.host + ':' + config.gateway.port + '/static/#ops/apps/';
-
-settings.twitterUrls.appName = process.env.APP_NAME_TWITTER_URLS || 'TwitterDemo';
-settings.twitterUrls.topic = 'demos.twitter.topURLs';
-settings.twitterHashtags.appName = process.env.APP_NAME_TWITTER_HASHTAGS || 'TwitterTrendingDemo';
-settings.twitterHashtags.topic = 'demos.twitter.topHashtags';
-settings.mobile.topic.out = 'demos.mobile.phoneLocationQueryResult';
-settings.mobile.topic.in = 'demos.mobile.phoneLocationQuery';
-settings.mobile.appName = process.env.APP_NAME_MOBILE || 'MobileDemo';
-settings.machine.appName = process.env.APP_NAME_MACHINE || 'MachineDataDemo';
-settings.machine.lookback = 180; // default lookback (minutes)
-settings.machine.metricformat = '#.0';
-settings.machine.pollInterval = 1000; // milliseconds
-settings.machine.range.customer = { start: 1, stop: 10 };
-settings.machine.range.product = { start: 4, stop: 6 };
-settings.machine.range.os = { start: 10, stop: 12 };
-settings.machine.range.software1 = { start: 10, stop: 12 };
-settings.machine.range.software2 = { start: 12, stop: 14 };
-settings.machine.range.deviceId = { start: 1, stop: 50 };
-settings.dimensions.appName = process.env.APP_NAME_ADS || 'AdsDimensionsDemo';
-settings.dimensions.lookback = 180; // default lookback (minutes)
-settings.dimensions.pollInterval = 1; // seconds
-settings.dimensions.range.publisher = { start: 0, stop: 49 };
-settings.dimensions.range.advertiser = { start: 0, stop: 99 };
-settings.dimensions.range.adunit = { start: 0, stop: 4 };
-settings.fraud.appName = process.env.APP_NAME_FRAUD || 'FraudDetectDemo';
-
-module.exports = config

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/.bin/express
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/.bin/express b/web/demos/package/node_modules/.bin/express
deleted file mode 100755
index 62df5d6..0000000
--- a/web/demos/package/node_modules/.bin/express
+++ /dev/null
@@ -1,423 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var exec = require('child_process').exec
-  , program = require('commander')
-  , mkdirp = require('mkdirp')
-  , pkg = require('../package.json')
-  , version = pkg.version
-  , os = require('os')
-  , fs = require('fs');
-
-// CLI
-
-program
-  .version(version)
-  .usage('[options] [dir]')
-  .option('-s, --sessions', 'add session support')
-  .option('-e, --ejs', 'add ejs engine support (defaults to jade)')
-  .option('-J, --jshtml', 'add jshtml engine support (defaults to jade)')
-  .option('-H, --hogan', 'add hogan.js engine support')
-  .option('-c, --css <engine>', 'add stylesheet <engine> support (less|stylus) (defaults to plain css)')
-  .option('-f, --force', 'force on non-empty directory')
-  .parse(process.argv);
-
-// Path
-
-var path = program.args.shift() || '.';
-
-// end-of-line code
-
-var eol = os.EOL
-
-// Template engine
-
-program.template = 'jade';
-if (program.ejs) program.template = 'ejs';
-if (program.jshtml) program.template = 'jshtml';
-if (program.hogan) program.template = 'hjs';
-
-/**
- * Routes index template.
- */
-
-var index = [
-    ''
-  , '/*'
-  , ' * GET home page.'
-  , ' */'
-  , ''
-  , 'exports.index = function(req, res){'
-  , '  res.render(\'index\', { title: \'Express\' });'
-  , '};'
-].join(eol);
-
-/**
- * Routes users template.
- */
-
-var users = [
-    ''
-  , '/*'
-  , ' * GET users listing.'
-  , ' */'
-  , ''
-  , 'exports.list = function(req, res){'
-  , '  res.send("respond with a resource");'
-  , '};'
-].join(eol);
-
-/**
- * Jade layout template.
- */
-
-var jadeLayout = [
-    'doctype 5'
-  , 'html'
-  , '  head'
-  , '    title= title'
-  , '    link(rel=\'stylesheet\', href=\'/stylesheets/style.css\')'
-  , '  body'
-  , '    block content'
-].join(eol);
-
-/**
- * Jade index template.
- */
-
-var jadeIndex = [
-    'extends layout'
-  , ''
-  , 'block content'
-  , '  h1= title'
-  , '  p Welcome to #{title}'
-].join(eol);
-
-/**
- * EJS index template.
- */
-
-var ejsIndex = [
-    '<!DOCTYPE html>'
-  , '<html>'
-  , '  <head>'
-  , '    <title><%= title %></title>'
-  , '    <link rel=\'stylesheet\' href=\'/stylesheets/style.css\' />'
-  , '  </head>'
-  , '  <body>'
-  , '    <h1><%= title %></h1>'
-  , '    <p>Welcome to <%= title %></p>'
-  , '  </body>'
-  , '</html>'
-].join(eol);
-
-/**
- * JSHTML layout template.
- */
-
-var jshtmlLayout = [
-    '<!DOCTYPE html>'
-  , '<html>'
-  , '  <head>'
-  , '    <title> @write(title) </title>'
-  , '    <link rel=\'stylesheet\' href=\'/stylesheets/style.css\' />'
-  , '  </head>'
-  , '  <body>'
-  , '    @write(body)'
-  , '  </body>'
-  , '</html>'
-].join(eol);
-
-/**
- * JSHTML index template.
- */
-
-var jshtmlIndex = [
-    '<h1>@write(title)</h1>'
-  , '<p>Welcome to @write(title)</p>'
-].join(eol);
-
-/**
- * Hogan.js index template.
- */
-var hoganIndex = [
-    '<!DOCTYPE html>'
-  , '<html>'
-  , '  <head>'
-  , '    <title>{{ title }}</title>'
-  , '    <link rel=\'stylesheet\' href=\'/stylesheets/style.css\' />'
-  , '  </head>'
-  , '  <body>'
-  , '    <h1>{{ title }}</h1>'
-  , '    <p>Welcome to {{ title }}</p>'
-  , '  </body>'
-  , '</html>'
-].join(eol);
-
-/**
- * Default css template.
- */
-
-var css = [
-    'body {'
-  , '  padding: 50px;'
-  , '  font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;'
-  , '}'
-  , ''
-  , 'a {'
-  , '  color: #00B7FF;'
-  , '}'
-].join(eol);
-
-/**
- * Default less template.
- */
-
-var less = [
-    'body {'
-  , '  padding: 50px;'
-  , '  font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;'
-  , '}'
-  , ''
-  , 'a {'
-  , '  color: #00B7FF;'
-  , '}'
-].join(eol);
-
-/**
- * Default stylus template.
- */
-
-var stylus = [
-    'body'
-  , '  padding: 50px'
-  , '  font: 14px "Lucida Grande", Helvetica, Arial, sans-serif'
-  , 'a'
-  , '  color: #00B7FF'
-].join(eol);
-
-/**
- * App template.
- */
-
-var app = [
-    ''
-  , '/**'
-  , ' * Module dependencies.'
-  , ' */'
-  , ''
-  , 'var express = require(\'express\');'
-  , 'var routes = require(\'./routes\');'
-  , 'var user = require(\'./routes/user\');'
-  , 'var http = require(\'http\');'
-  , 'var path = require(\'path\');'
-  , ''
-  , 'var app = express();'
-  , ''
-  , '// all environments'
-  , 'app.set(\'port\', process.env.PORT || 3000);'
-  , 'app.set(\'views\', __dirname + \'/views\');'
-  , 'app.set(\'view engine\', \':TEMPLATE\');'
-  , 'app.use(express.favicon());'
-  , 'app.use(express.logger(\'dev\'));'
-  , 'app.use(express.bodyParser());'
-  , 'app.use(express.methodOverride());{sess}'
-  , 'app.use(app.router);{css}'
-  , 'app.use(express.static(path.join(__dirname, \'public\')));'
-  , ''
-  , '// development only'
-  , 'if (\'development\' == app.get(\'env\')) {'
-  , '  app.use(express.errorHandler());'
-  , '}'
-  , ''
-  , 'app.get(\'/\', routes.index);'
-  , 'app.get(\'/users\', user.list);'
-  , ''
-  , 'http.createServer(app).listen(app.get(\'port\'), function(){'
-  , '  console.log(\'Express server listening on port \' + app.get(\'port\'));'
-  , '});'
-  , ''
-].join(eol);
-
-// Generate application
-
-(function createApplication(path) {
-  emptyDirectory(path, function(empty){
-    if (empty || program.force) {
-      createApplicationAt(path);
-    } else {
-      program.confirm('destination is not empty, continue? ', function(ok){
-        if (ok) {
-          process.stdin.destroy();
-          createApplicationAt(path);
-        } else {
-          abort('aborting');
-        }
-      });
-    }
-  });
-})(path);
-
-/**
- * Create application at the given directory `path`.
- *
- * @param {String} path
- */
-
-function createApplicationAt(path) {
-  console.log();
-  process.on('exit', function(){
-    console.log();
-    console.log('   install dependencies:');
-    console.log('     $ cd %s && npm install', path);
-    console.log();
-    console.log('   run the app:');
-    console.log('     $ node app');
-    console.log();
-  });
-
-  mkdir(path, function(){
-    mkdir(path + '/public');
-    mkdir(path + '/public/javascripts');
-    mkdir(path + '/public/images');
-    mkdir(path + '/public/stylesheets', function(){
-      switch (program.css) {
-        case 'less':
-          write(path + '/public/stylesheets/style.less', less);
-          break;
-        case 'stylus':
-          write(path + '/public/stylesheets/style.styl', stylus);
-          break;
-        default:
-          write(path + '/public/stylesheets/style.css', css);
-      }
-    });
-
-    mkdir(path + '/routes', function(){
-      write(path + '/routes/index.js', index);
-      write(path + '/routes/user.js', users);
-    });
-
-    mkdir(path + '/views', function(){
-      switch (program.template) {
-        case 'ejs':
-          write(path + '/views/index.ejs', ejsIndex);
-          break;
-        case 'jade':
-          write(path + '/views/layout.jade', jadeLayout);
-          write(path + '/views/index.jade', jadeIndex);
-          break;
-        case 'jshtml':
-          write(path + '/views/layout.jshtml', jshtmlLayout);
-          write(path + '/views/index.jshtml', jshtmlIndex);
-          break;
-        case 'hjs':
-          write(path + '/views/index.hjs', hoganIndex);
-          break;
-
-      }
-    });
-
-    // CSS Engine support
-    switch (program.css) {
-      case 'less':
-        app = app.replace('{css}', eol + 'app.use(require(\'less-middleware\')({ src: __dirname + \'/public\' }));');
-        break;
-      case 'stylus':
-        app = app.replace('{css}', eol + 'app.use(require(\'stylus\').middleware(__dirname + \'/public\'));');
-        break;
-      default:
-        app = app.replace('{css}', '');
-    }
-
-    // Session support
-    app = app.replace('{sess}', program.sessions
-      ? eol + 'app.use(express.cookieParser(\'your secret here\'));' + eol + 'app.use(express.session());'
-      : '');
-
-    // Template support
-    app = app.replace(':TEMPLATE', program.template);
-
-    // package.json
-    var pkg = {
-        name: 'application-name'
-      , version: '0.0.1'
-      , private: true
-      , scripts: { start: 'node app.js' }
-      , dependencies: {
-        express: version
-      }
-    }
-
-    if (program.template) pkg.dependencies[program.template] = '*';
-
-    // CSS Engine support
-    switch (program.css) {
-      case 'less':
-        pkg.dependencies['less-middleware'] = '*';
-        break;
-      default:
-        if (program.css) {
-          pkg.dependencies[program.css] = '*';
-        }
-    }
-
-    write(path + '/package.json', JSON.stringify(pkg, null, 2));
-    write(path + '/app.js', app);
-  });
-}
-
-/**
- * Check if the given directory `path` is empty.
- *
- * @param {String} path
- * @param {Function} fn
- */
-
-function emptyDirectory(path, fn) {
-  fs.readdir(path, function(err, files){
-    if (err && 'ENOENT' != err.code) throw err;
-    fn(!files || !files.length);
-  });
-}
-
-/**
- * echo str > path.
- *
- * @param {String} path
- * @param {String} str
- */
-
-function write(path, str) {
-  fs.writeFile(path, str);
-  console.log('   \x1b[36mcreate\x1b[0m : ' + path);
-}
-
-/**
- * Mkdir -p.
- *
- * @param {String} path
- * @param {Function} fn
- */
-
-function mkdir(path, fn) {
-  mkdirp(path, 0755, function(err){
-    if (err) throw err;
-    console.log('   \033[36mcreate\033[0m : ' + path);
-    fn && fn();
-  });
-}
-
-/**
- * Exit with the given `str`.
- *
- * @param {String} str
- */
-
-function abort(str) {
-  console.error(str);
-  process.exit(1);
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/.bin/node-http-proxy
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/.bin/node-http-proxy b/web/demos/package/node_modules/.bin/node-http-proxy
deleted file mode 100755
index 07d199c..0000000
--- a/web/demos/package/node_modules/.bin/node-http-proxy
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/usr/bin/env node
-
-var path = require('path'),
-    fs = require('fs'),
-    util  = require('util'),
-    argv = require('optimist').argv,
-    httpProxy = require('../lib/node-http-proxy');
-
-var help = [
-    "usage: node-http-proxy [options] ",
-    "",
-    "Starts a node-http-proxy server using the specified command-line options",
-    "",
-    "options:",
-    "  --port   PORT       Port that the proxy server should run on",
-    "  --host   HOST       Host that the proxy server should run on",
-    "  --target HOST:PORT  Location of the server the proxy will target",
-    "  --config OUTFILE    Location of the configuration file for the proxy server",
-    "  --silent            Silence the log output from the proxy server",
-    "  --user   USER       User to drop privileges to once server socket is bound",
-    "  -h, --help          You're staring at it"
-].join('\n');
-
-if (argv.h || argv.help || Object.keys(argv).length === 2) {
-  return util.puts(help);
-}
-
-var location, config = {},
-    port = argv.port || 80, 
-    host = argv.host || undefined, 
-    target = argv.target;
-    user = argv.user;
-
-//
-// If we were passed a config, parse it
-//
-if (argv.config) {
-  try {
-    var data = fs.readFileSync(argv.config);
-    config = JSON.parse(data.toString());
-  } catch (ex) {
-    util.puts('Error starting node-http-proxy: ' + ex);
-    process.exit(1);
-  }
-}
-
-//
-// If `config.https` is set, then load the required file contents into the config options.
-//
-if (config.https) {
-  Object.keys(config.https).forEach(function (key) {
-    // If CA certs are specified, load those too.
-    if (key === "ca") {
-      for (var i=0; i < config.https.ca.length; i++) {
-        if (config.https.ca === undefined) {
-          config.https.ca = [];
-        }
-        config.https.ca[i] = fs.readFileSync(config.https[key][i], 'utf8');
-      }
-    } else {
-      config.https[key] = fs.readFileSync(config.https[key], 'utf8');
-    }
-  });
-}
-
-//
-// Check to see if we should silence the logs
-//
-config.silent = typeof argv.silent !== 'undefined' ? argv.silent : config.silent;
-
-//
-// If we were passed a target, parse the url string
-//
-if (typeof target === 'string') location = target.split(':');
-
-//
-// Create the server with the specified options
-//
-var server;
-if (location) {
-  var targetPort = location.length === 1 ? 80 : parseInt(location[1]);
-  server = httpProxy.createServer(targetPort, location[0], config);
-}
-else if (config.router) {
-  server = httpProxy.createServer(config);
-}
-else {
-  return util.puts(help);
-}
-
-//
-// Start the server
-//
-if (host) {
-  server.listen(port, host);
-} else {
-  server.listen(port);
-}
-
-
-//
-// Drop privileges if requested
-//
-if (typeof user === 'string') {
-    process.setuid(user);
-}
-
-//
-// Notify that the server is started
-//
-if (!config.silent) {
-  util.puts('node-http-proxy server now listening on port: ' + port);
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/async/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/async/LICENSE b/web/demos/package/node_modules/async/LICENSE
deleted file mode 100644
index b7f9d50..0000000
--- a/web/demos/package/node_modules/async/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010 Caolan McMahon
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.


[19/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-set-cookies.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-set-cookies.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-set-cookies.js
deleted file mode 100644
index aac2994..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-set-cookies.js
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-
-var nresponses = 0;
-
-var server = http.createServer(function (req, res) {
-  if (req.url == '/one') {
-    res.writeHead(200, [['set-cookie', 'A'],
-                        ['content-type', 'text/plain']]);
-    res.end('one\n');
-  } else {
-    res.writeHead(200, [['set-cookie', 'A'],
-                        ['set-cookie', 'B'],
-                        ['content-type', 'text/plain']]);
-    res.end('two\n');
-  }
-});
-server.listen(common.PORT);
-
-server.on('listening', function () {
-  //
-  // one set-cookie header
-  //
-  http.get({ port: common.PROXY_PORT, path: '/one' }, function (res) {
-    // set-cookie headers are always return in an array.
-    // even if there is only one.
-    assert.deepEqual(['A'], res.headers['set-cookie']);
-    assert.equal('text/plain', res.headers['content-type']);
-
-    res.on('data', function (chunk) {
-      console.log(chunk.toString());
-    });
-
-    res.on('end', function () {
-      if (++nresponses == 2) {
-        server.close();
-      }
-    });
-  });
-
-  // two set-cookie headers
-
-  http.get({ port: common.PROXY_PORT, path: '/two' }, function (res) {
-    assert.deepEqual(['A', 'B'], res.headers['set-cookie']);
-    assert.equal('text/plain', res.headers['content-type']);
-
-    res.on('data', function (chunk) {
-      console.log(chunk.toString());
-    });
-
-    res.on('end', function () {
-      if (++nresponses == 2) {
-        server.close();
-      }
-    });
-  });
-
-});
-
-process.on('exit', function () {
-  assert.equal(2, nresponses);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-status-code.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-status-code.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-status-code.js
deleted file mode 100644
index dffbaf7..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-status-code.js
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// libuv-broken
-
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-
-// Simple test of Node's HTTP ServerResponse.statusCode
-// ServerResponse.prototype.statusCode
-
-var testsComplete = 0;
-var tests = [200, 202, 300, 404, 500];
-var testIdx = 0;
-
-var s = http.createServer(function (req, res) {
-  var t = tests[testIdx];
-  res.writeHead(t, {'Content-Type': 'text/plain'});
-  console.log('--\nserver: statusCode after writeHead: ' + res.statusCode);
-  assert.equal(res.statusCode, t);
-  res.end('hello world\n');
-});
-
-s.listen(common.PORT, nextTest);
-
-
-function nextTest() {
-  if (testIdx + 1 === tests.length) {
-    return s.close();
-  }
-  var test = tests[testIdx];
-
-  http.get({ port: common.PROXY_PORT }, function (response) {
-    console.log('client: expected status: ' + test);
-    console.log('client: statusCode: ' + response.statusCode);
-    assert.equal(response.statusCode, test);
-    response.on('end', function () {
-      testsComplete++;
-      testIdx += 1;
-      nextTest();
-    });
-  });
-}
-
-
-process.on('exit', function () {
-  assert.equal(4, testsComplete);
-});
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-upgrade-server2.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-upgrade-server2.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-upgrade-server2.js
deleted file mode 100644
index a527376..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-upgrade-server2.js
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-var net = require('net');
-
-var server = http.createServer(function (req, res) {
-  common.error('got req');
-  throw new Error('This shouldn\'t happen.');
-});
-
-server.on('upgrade', function (req, socket, upgradeHead) {
-  common.error('got upgrade event');
-  // test that throwing an error from upgrade gets
-  // is uncaught
-  throw new Error('upgrade error');
-});
-
-var gotError = false;
-
-process.on('uncaughtException', function (e) {
-  common.error('got \'clientError\' event');
-  assert.equal('upgrade error', e.message);
-  gotError = true;
-  process.exit(0);
-});
-
-
-server.listen(common.PORT, function () {
-  var c = net.createConnection(common.PROXY_PORT);
-
-  c.on('connect', function () {
-    common.error('client wrote message');
-    c.write('GET /blah HTTP/1.1\r\n' +
-            'Upgrade: WebSocket\r\n' +
-            'Connection: Upgrade\r\n' +
-            '\r\n\r\nhello world');
-  });
-
-  c.on('end', function () {
-    c.end();
-  });
-
-  c.on('close', function () {
-    common.error('client close');
-    server.close();
-  });
-});
-
-process.on('exit', function () {
-  assert.ok(gotError);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http.js
deleted file mode 100644
index e082eb2..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http.js
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-var url = require('url');
-
-function p(x) {
-  common.error(common.inspect(x));
-}
-
-var responses_sent = 0;
-var responses_recvd = 0;
-var body0 = '';
-var body1 = '';
-
-var server = http.Server(function (req, res) {
-  if (responses_sent == 0) {
-    assert.equal('GET', req.method);
-    assert.equal('/hello', url.parse(req.url).pathname);
-
-    console.dir(req.headers);
-    assert.equal(true, 'accept' in req.headers);
-    assert.equal('*/*', req.headers['accept']);
-
-    assert.equal(true, 'foo' in req.headers);
-    assert.equal('bar', req.headers['foo']);
-  }
-
-  if (responses_sent == 1) {
-    assert.equal('POST', req.method);
-    assert.equal('/world', url.parse(req.url).pathname);
-    this.close();
-  }
-
-  req.on('end', function () {
-    res.writeHead(200, {'Content-Type': 'text/plain'});
-    res.write('The path was ' + url.parse(req.url).pathname);
-    res.end();
-    responses_sent += 1;
-  });
-
-  //assert.equal('127.0.0.1', res.connection.remoteAddress);
-});
-server.listen(common.PORT);
-
-server.on('listening', function () {
-  var agent = new http.Agent({ port: common.PROXY_PORT, maxSockets: 1 });
-  http.get({
-    port: common.PROXY_PORT,
-    path: '/hello',
-    headers: {'Accept': '*/*', 'Foo': 'bar'},
-    agent: agent
-  }, function (res) {
-    assert.equal(200, res.statusCode);
-    responses_recvd += 1;
-    res.setEncoding('utf8');
-    res.on('data', function (chunk) { body0 += chunk; });
-    common.debug('Got /hello response');
-  });
-
-  setTimeout(function () {
-    var req = http.request({
-      port: common.PROXY_PORT,
-      method: 'POST',
-      path: '/world',
-      agent: agent
-    }, function (res) {
-      assert.equal(200, res.statusCode);
-      responses_recvd += 1;
-      res.setEncoding('utf8');
-      res.on('data', function (chunk) { body1 += chunk; });
-      common.debug('Got /world response');
-    });
-    req.end();
-  }, 1);
-});
-
-process.on('exit', function () {
-  common.debug('responses_recvd: ' + responses_recvd);
-  assert.equal(2, responses_recvd);
-
-  common.debug('responses_sent: ' + responses_sent);
-  assert.equal(2, responses_sent);
-
-  assert.equal('The path was /hello', body0);
-  assert.equal('The path was /world', body1);
-});
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/examples-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/examples-test.js b/web/demos/package/node_modules/http-proxy/test/examples-test.js
deleted file mode 100644
index 36beb89..0000000
--- a/web/demos/package/node_modules/http-proxy/test/examples-test.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * examples.js: Tests which ensure all examples do not throw errors.
- *
- * (C) 2010, Charlie Robbins
- *
- */
-
-var vows = require('vows')
-    macros = require('./macros'),
-    examples = macros.examples;
-
-//
-// Suppress `EADDRINUSE` errors since
-// we are just checking for require-time errors
-//
-process.on('uncaughtException', function (err) {
-  if (err.code !== 'EADDRINUSE') {
-    throw err;
-  }
-});
-
-vows.describe('node-http-proxy/examples').addBatch(
-  examples.shouldHaveDeps()
-).addBatch(
-  examples.shouldHaveNoErrors()
-).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/fixtures/agent2-cert.pem
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/fixtures/agent2-cert.pem b/web/demos/package/node_modules/http-proxy/test/fixtures/agent2-cert.pem
deleted file mode 100644
index 8e4354d..0000000
--- a/web/demos/package/node_modules/http-proxy/test/fixtures/agent2-cert.pem
+++ /dev/null
@@ -1,13 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIB7DCCAZYCCQC7gs0MDNn6MTANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJV
-UzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAO
-BgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MjEgMB4GCSqGSIb3DQEJARYR
-cnlAdGlueWNsb3Vkcy5vcmcwHhcNMTEwMzE0MTgyOTEyWhcNMzgwNzI5MTgyOTEy
-WjB9MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYD
-VQQKEwZKb3llbnQxEDAOBgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MjEg
-MB4GCSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwXDANBgkqhkiG9w0BAQEF
-AANLADBIAkEAyXb8FrRdKbhrKLgLSsn61i1C7w7fVVVd7OQsmV/7p9WB2lWFiDlC
-WKGU9SiIz/A6wNZDUAuc2E+VwtpCT561AQIDAQABMA0GCSqGSIb3DQEBBQUAA0EA
-C8HzpuNhFLCI3A5KkBS5zHAQax6TFUOhbpBCR0aTDbJ6F1liDTK1lmU/BjvPoj+9
-1LHwrmh29rK8kBPEjmymCQ==
------END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/fixtures/agent2-csr.pem
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/fixtures/agent2-csr.pem b/web/demos/package/node_modules/http-proxy/test/fixtures/agent2-csr.pem
deleted file mode 100644
index a670c4c..0000000
--- a/web/demos/package/node_modules/http-proxy/test/fixtures/agent2-csr.pem
+++ /dev/null
@@ -1,10 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIIBXTCCAQcCAQAwfTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQH
-EwJTRjEPMA0GA1UEChMGSm95ZW50MRAwDgYDVQQLEwdOb2RlLmpzMQ8wDQYDVQQD
-EwZhZ2VudDIxIDAeBgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMFwwDQYJ
-KoZIhvcNAQEBBQADSwAwSAJBAMl2/Ba0XSm4ayi4C0rJ+tYtQu8O31VVXezkLJlf
-+6fVgdpVhYg5QlihlPUoiM/wOsDWQ1ALnNhPlcLaQk+etQECAwEAAaAlMCMGCSqG
-SIb3DQEJBzEWExRBIGNoYWxsZW5nZSBwYXNzd29yZDANBgkqhkiG9w0BAQUFAANB
-AJnll2pt5l0pzskQSpjjLVTlFDFmJr/AZ3UK8v0WxBjYjCe5Jx4YehkChpxIyDUm
-U3J9q9MDUf0+Y2+EGkssFfk=
------END CERTIFICATE REQUEST-----

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/fixtures/agent2-key.pem
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/fixtures/agent2-key.pem b/web/demos/package/node_modules/http-proxy/test/fixtures/agent2-key.pem
deleted file mode 100644
index 522903c..0000000
--- a/web/demos/package/node_modules/http-proxy/test/fixtures/agent2-key.pem
+++ /dev/null
@@ -1,9 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIBOgIBAAJBAMl2/Ba0XSm4ayi4C0rJ+tYtQu8O31VVXezkLJlf+6fVgdpVhYg5
-QlihlPUoiM/wOsDWQ1ALnNhPlcLaQk+etQECAwEAAQJBAMT6Bf34+UHKY1ObpsbH
-9u2jsVblFq1rWvs8GPMY6oertzvwm3DpuSUp7PTgOB1nLTLYtCERbQ4ovtN8tn3p
-OHUCIQDzIEGsoCr5vlxXvy2zJwu+fxYuhTZWMVuo1397L0VyhwIhANQh+yzqUgaf
-WRtSB4T2W7ADtJI35ET61jKBty3CqJY3AiAIwju7dVW3A5WeD6Qc1SZGKZvp9yCb
-AFI2BfVwwaY11wIgXF3PeGcvACMyMWsuSv7aPXHfliswAbkWuzcwA4TW01ECIGWa
-cgsDvVFxmfM5NPSuT/UDTa6R5BFISB5ea0N0AR3I
------END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/fixtures/agent2.cnf
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/fixtures/agent2.cnf b/web/demos/package/node_modules/http-proxy/test/fixtures/agent2.cnf
deleted file mode 100644
index 0a9f2c7..0000000
--- a/web/demos/package/node_modules/http-proxy/test/fixtures/agent2.cnf
+++ /dev/null
@@ -1,19 +0,0 @@
-[ req ]
-default_bits           = 1024
-days                   = 999
-distinguished_name     = req_distinguished_name
-attributes             = req_attributes
-prompt                 = no
-
-[ req_distinguished_name ]
-C                      = US
-ST                     = CA
-L                      = SF
-O                      = Joyent
-OU                     = Node.js
-CN                     = agent2
-emailAddress           = ry@tinyclouds.org
-
-[ req_attributes ]
-challengePassword              = A challenge password
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/helpers/http.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/helpers/http.js b/web/demos/package/node_modules/http-proxy/test/helpers/http.js
deleted file mode 100644
index aaf7a80..0000000
--- a/web/demos/package/node_modules/http-proxy/test/helpers/http.js
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * http.js: Top level include for node-http-proxy http helpers
- *
- * (C) 2010 Nodejitsu Inc.
- * MIT LICENCE
- *
- */
-
-var assert = require('assert'),
-    http = require('http'),
-    https = require('https'),
-    url = require('url'),
-    async = require('async'),
-    helpers = require('./index'),
-    protocols = helpers.protocols,
-    httpProxy = require('../../lib/node-http-proxy');
-
-//
-// ### function createServerPair (options, callback)
-// #### @options {Object} Options to create target and proxy server.
-// #### @callback {function} Continuation to respond to when complete.
-//
-// Creates http target and proxy servers
-//
-exports.createServerPair = function (options, callback) {
-  async.series([
-    //
-    // 1. Create the target server
-    //
-    function createTarget(next) {
-      exports.createServer(options.target, next);
-    },
-    //
-    // 2. Create the proxy server
-    //
-    function createTarget(next) {
-      exports.createProxyServer(options.proxy, next);
-    }
-  ], callback);
-};
-
-//
-// ### function createServer (options, callback)
-// #### @options {Object} Options for creatig an http server.
-// ####    @port    {number} Port to listen on
-// ####    @output  {string} String to write to each HTTP response
-// ####    @headers {Object} Headers to assert are sent by `node-http-proxy`.
-// #### @callback {function} Continuation to respond to when complete.
-//
-// Creates a target server that the tests will proxy to.
-//
-exports.createServer = function (options, callback) {
-  //
-  // Request handler to use in either `http`
-  // or `https` server.
-  //
-  function requestHandler(req, res) {
-    if (options.headers) {
-      Object.keys(options.headers).forEach(function (key) {
-        assert.equal(req.headers[key], options.headers[key]);
-      });
-    }
-
-    if (options.outputHeaders) {
-      Object.keys(options.outputHeaders).forEach(function (header) {
-        res.setHeader(header, options.outputHeaders[header]);
-      });
-    }
-
-    setTimeout(function() {
-      res.writeHead(200, { 'Content-Type': 'text/plain' });
-      res.write(options.output || 'hello proxy'); 
-      res.end(); 
-    }, options.latency || 1);
-  }
-
-  var server = protocols.target === 'https'
-    ? https.createServer(helpers.https, requestHandler)
-    : http.createServer(requestHandler);
-
-  server.listen(options.port, function () {
-    callback(null, this);
-  });
-};
-
-//
-// ### function createProxyServer (options, callback)
-// #### @options {Object} Options for creatig an http server.
-// ####    @port    {number}  Port to listen on
-// ####    @latency {number}  Latency of this server in milliseconds
-// ####    @proxy   {Object}  Options to pass to the HttpProxy.
-// ####    @routing {boolean} Enables `httpProxy.RoutingProxy`
-// #### @callback {function} Continuation to respond to when complete.
-//
-// Creates a proxy server that the tests will request against.
-//
-exports.createProxyServer = function (options, callback) {
-  if (!options.latency) {
-    if (protocols.proxy === 'https') {
-      options.proxy.https = helpers.https;
-    }
-    options.proxy.rejectUnauthorized = false;
-
-    return httpProxy
-      .createServer(options.proxy)
-      .listen(options.port, function () {
-        callback(null, this);
-      });
-  }
-
-  var server,
-      proxy;
-
-  proxy = options.routing
-    ? new httpProxy.RoutingProxy(options.proxy)
-    : new httpProxy.HttpProxy(options.proxy);
-
-  //
-  // Request handler to use in either `http`
-  // or `https` server.
-  //
-  function requestHandler(req, res) {
-    var buffer = httpProxy.buffer(req);
-
-    if (options.outputHeaders) {
-      Object.keys(options.outputHeaders).forEach(function (header) {
-        res.setHeader(header, options.outputHeaders[header]);
-      });
-    }
-    setTimeout(function () {
-      //
-      // Setup options dynamically for `RoutingProxy.prototype.proxyRequest`
-      // or `HttpProxy.prototype.proxyRequest`.
-      //
-      buffer = options.routing ? { buffer: buffer } : buffer;
-      proxy.proxyRequest(req, res, buffer);
-    }, options.latency);
-  }
-
-  server = protocols.proxy === 'https'
-    ? https.createServer(helpers.https, requestHandler)
-    : http.createServer(requestHandler);
-
-  server.listen(options.port, function () {
-    callback(null, this);
-  });
-};
-
-//
-// ### function assignPortsToRoutes (routes)
-// #### @routes {Object} Routing table to assign ports to
-//
-// Assigns dynamic ports to the `routes` for runtime testing.
-//
-exports.assignPortsToRoutes = function (routes) {
-  Object.keys(routes).forEach(function (source) {
-    routes[source] = routes[source].replace('{PORT}', helpers.nextPort);
-  });
-
-  return routes;
-};
-
-//
-// ### function parseRoutes (options)
-// #### @options {Object} Options to use when parsing routes
-// ####    @protocol {string} Protocol to use in the routes
-// ####    @routes   {Object} Routes to parse.
-//
-// Returns an Array of fully-parsed URLs for the source and
-// target of `options.routes`.
-//
-exports.parseRoutes = function (options) {
-  var protocol = options.protocol || 'http',
-      routes = options.routes;
-
-  return Object.keys(routes).map(function (source) {
-    return {
-      source: url.parse(protocol + '://' + source),
-      target: url.parse(protocol + '://' + routes[source])
-    };
-  });
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/helpers/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/helpers/index.js b/web/demos/package/node_modules/http-proxy/test/helpers/index.js
deleted file mode 100644
index 7e3c3f4..0000000
--- a/web/demos/package/node_modules/http-proxy/test/helpers/index.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * index.js: Top level include for node-http-proxy helpers
- *
- * (C) 2010 Nodejitsu Inc.
- * MIT LICENCE
- *
- */
-
-var fs = require('fs'),
-    path = require('path');
-
-var fixturesDir = path.join(__dirname, '..', 'fixtures');
-
-//
-// @https {Object}
-// Returns the necessary `https` credentials.
-//
-Object.defineProperty(exports, 'https', {
-  get: function () {
-    delete this.https;
-    return this.https = {
-      key:  fs.readFileSync(path.join(fixturesDir, 'agent2-key.pem'), 'utf8'),
-      cert: fs.readFileSync(path.join(fixturesDir, 'agent2-cert.pem'), 'utf8')
-    };
-  }
-});
-
-//
-// @protocols {Object}
-// Returns an object representing the desired protocols
-// for the `proxy` and `target` server.
-//
-Object.defineProperty(exports, 'protocols', {
-  get: function () {
-    delete this.protocols;
-    return this.protocols = {
-      target: exports.argv.target || 'http',
-      proxy: exports.argv.proxy || 'http'
-    };
-  }
-});
-
-//
-// @nextPort {number}
-// Returns an auto-incrementing port for tests.
-//
-Object.defineProperty(exports, 'nextPort', {
-  get: function () {
-    var current = this.port || 9050;
-    this.port = current + 1;
-    return current;
-  }
-});
-
-//
-// @nextPortPair {Object}
-// Returns an auto-incrementing pair of ports for tests.
-//
-Object.defineProperty(exports, 'nextPortPair', {
-  get: function () {
-    return {
-      target: this.nextPort,
-      proxy: this.nextPort
-    };
-  }
-});
-
-//
-// ### function describe(prefix)
-// #### @prefix {string} Prefix to use before the description
-//
-// Returns a string representing the protocols that this suite
-// is testing based on CLI arguments.
-//
-exports.describe = function (prefix, base) {
-  prefix = prefix || '';
-  base   = base   || 'http';
-
-  function protocol(endpoint) {
-    return exports.protocols[endpoint] === 'https'
-      ? base + 's'
-      : base;
-  }
-
-  return [
-    'node-http-proxy',
-    prefix,
-    [
-      protocol('proxy'),
-      '-to-',
-      protocol('target')
-    ].join('')
-  ].filter(Boolean).join('/');
-};
-
-//
-// Expose the CLI arguments
-//
-exports.argv = require('optimist').argv;
-
-//
-// Export additional helpers for `http` and `websockets`.
-//
-exports.http = require('./http');
-exports.ws   = require('./ws');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/helpers/ws.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/helpers/ws.js b/web/demos/package/node_modules/http-proxy/test/helpers/ws.js
deleted file mode 100644
index a490522..0000000
--- a/web/demos/package/node_modules/http-proxy/test/helpers/ws.js
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * ws.js: Top level include for node-http-proxy websocket helpers
- *
- * (C) 2010 Nodejitsu Inc.
- * MIT LICENCE
- *
- */
-
-var assert = require('assert'),
-    https = require('https'),
-    async = require('async'),
-    io = require('socket.io'),
-    ws = require('ws'),
-    helpers = require('./index'),
-    protocols = helpers.protocols,
-    http = require('./http');
-
-//
-// ### function createServerPair (options, callback)
-// #### @options {Object} Options to create target and proxy server.
-// ####    @target {Object} Options for the target server.
-// ####    @proxy  {Object} Options for the proxy server.
-// #### @callback {function} Continuation to respond to when complete.
-//
-// Creates http target and proxy servers
-//
-exports.createServerPair = function (options, callback) {
-  async.series([
-    //
-    // 1. Create the target server
-    //
-    function createTarget(next) {
-      exports.createServer(options.target, next);
-    },
-    //
-    // 2. Create the proxy server
-    //
-    function createTarget(next) {
-      http.createProxyServer(options.proxy, next);
-    }
-  ], callback);
-};
-
-//
-// ### function createServer (options, callback)
-// #### @options {Object} Options for creating the socket.io or ws server.
-// ####    @raw   {boolean} Enables ws.Websocket server.
-//
-// Creates a socket.io or ws server using the specified `options`.
-//
-exports.createServer = function (options, callback) {
-  return options.raw
-    ? exports.createWsServer(options, callback)
-    : exports.createSocketIoServer(options, callback);
-};
-
-//
-// ### function createSocketIoServer (options, callback)
-// #### @options {Object} Options for creating the socket.io server
-// ####    @port   {number} Port to listen on
-// ####    @input  {string} Input to expect from the only socket
-// ####    @output {string} Output to send the only socket
-//
-// Creates a socket.io server on the specified `options.port` which
-// will expect `options.input` and then send `options.output`.
-//
-exports.createSocketIoServer = function (options, callback) {
-  var server = protocols.target === 'https'
-    ? io.listen(options.port, helpers.https, callback)
-    : io.listen(options.port, callback);
-
-  server.sockets.on('connection', function (socket) {
-    socket.on('incoming', function (data) {
-      assert.equal(data, options.input);
-      socket.emit('outgoing', options.output);
-    });
-  });
-};
-
-//
-// ### function createWsServer (options, callback)
-// #### @options {Object} Options for creating the ws.Server instance
-// ####    @port   {number} Port to listen on
-// ####    @input  {string} Input to expect from the only socket
-// ####    @output {string} Output to send the only socket
-//
-// Creates a ws.Server instance on the specified `options.port` which
-// will expect `options.input` and then send `options.output`.
-//
-exports.createWsServer = function (options, callback) {
-  var server,
-      wss;
-
-  if (protocols.target === 'https') {
-    server = https.createServer(helpers.https, function (req, res) {
-      req.writeHead(200);
-      req.end();
-    }).listen(options.port, callback);
-
-    wss = new ws.Server({ server: server });
-  }
-  else {
-    wss = new ws.Server({ port: options.port }, callback);
-  }
-
-  wss.on('connection', function (socket) {
-    socket.on('message', function (data) {
-      assert.equal(data, options.input);
-      socket.send(options.output);
-    });
-  });
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/http/http-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/http/http-test.js b/web/demos/package/node_modules/http-proxy/test/http/http-test.js
deleted file mode 100644
index 81f8726..0000000
--- a/web/demos/package/node_modules/http-proxy/test/http/http-test.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
-  node-http-proxy-test.js: http proxy for node.js
-
-  Copyright (c) 2010 Charlie Robbins, Marak Squires and Fedor Indutny
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
- 
-var assert = require('assert'),
-    fs = require('fs'),
-    path = require('path'),
-    async = require('async'),
-    request = require('request'),
-    vows = require('vows'),
-    macros = require('../macros'),
-    helpers = require('../helpers');
-
-var routeFile = path.join(__dirname, 'config.json');
-
-vows.describe(helpers.describe()).addBatch({
-  "With a valid target server": {
-    "and no latency": {
-      "and no headers": macros.http.assertProxied(),
-      "and headers": macros.http.assertProxied({
-        request: { headers: { host: 'unknown.com' } }
-      }),
-      "and request close connection header": macros.http.assertProxied({
-        request: { headers: { connection: "close" } },
-        outputHeaders: { connection: "close" }
-      }),
-      "and request keep alive connection header": macros.http.assertProxied({
-        request: { headers: { connection: "keep-alive" } },
-        outputHeaders: { connection: "keep-alive" }
-      }),
-      "and response close connection header": macros.http.assertProxied({
-        request: { headers: { connection: "" } }, // Must explicitly set to "" because otherwise node will automatically add a "connection: keep-alive" header
-        targetHeaders: { connection: "close" },
-        outputHeaders: { connection: "close" }
-      }),
-      "and response keep-alive connection header": macros.http.assertProxied({
-        request: { headers: { connection: "" } }, // Must explicitly set to "" because otherwise node will automatically add a "connection: keep-alive" header
-        targetHeaders: { connection: "keep-alive" },
-        outputHeaders: { connection: "keep-alive" }
-      }),
-      "and response keep-alive connection header from http 1.0 client": macros.http.assertRawHttpProxied({
-        rawRequest: "GET / HTTP/1.0\r\n\r\n",
-        targetHeaders: { connection: "keep-alive" },
-        match: /connection: close/i
-      }),
-      "and request keep alive from http 1.0 client": macros.http.assertRawHttpProxied({
-        rawRequest: "GET / HTTP/1.0\r\nConnection: Keep-Alive\r\n\r\n",
-        targetHeaders: { connection: "keep-alive" },
-        match: /connection: keep-alive/i
-      }),
-      "and no connection header": macros.http.assertProxied({
-        request: { headers: { connection: "" } }, // Must explicitly set to "" because otherwise node will automatically add a "connection: keep-alive" header
-        outputHeaders: { connection: "keep-alive" }
-      }),
-      "and forwarding enabled": macros.http.assertForwardProxied()
-    },
-    "and latency": {
-      "and no headers": macros.http.assertProxied({
-        latency: 2000
-      }),
-      "and response headers": macros.http.assertProxied({
-        targetHeaders: { "x-testheader": "target" },
-        proxyHeaders: { "X-TestHeader": "proxy" },
-        outputHeaders: { "x-testheader": "target" },
-        latency: 1000
-      })
-    },
-    "and timeout set": macros.http.assertProxied({
-      shouldFail: true,
-      timeout: 2000,
-      requestLatency: 4000
-    })
-  },
-  "With a no valid target server": {
-    "and no latency": macros.http.assertInvalidProxy(),
-    "and latency": macros.http.assertInvalidProxy({
-      latency: 2000
-    })
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/http/routing-table-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/http/routing-table-test.js b/web/demos/package/node_modules/http-proxy/test/http/routing-table-test.js
deleted file mode 100644
index f3dcf31..0000000
--- a/web/demos/package/node_modules/http-proxy/test/http/routing-table-test.js
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * routing-table-test.js: Tests for the proxying using the ProxyTable object.
- *
- * (C) 2010, Charlie Robbins
- *
- */
-
-var assert = require('assert'),
-    fs = require('fs'),
-    path = require('path'),
-    async = require('async'),
-    request = require('request'),
-    vows = require('vows'),
-    macros = require('../macros'),
-    helpers = require('../helpers');
-
-var routeFile = path.join(__dirname, 'config.json');
-
-vows.describe(helpers.describe('routing-table')).addBatch({
-  "With a routing table": {
-    "with latency": macros.http.assertProxiedToRoutes({
-      latency: 2000,
-      routes: {
-        "icanhaz.com": "127.0.0.1:{PORT}",
-        "latency.com": "127.0.0.1:{PORT}"
-      }
-    }),
-    "addHost() / removeHost()": macros.http.assertDynamicProxy({
-      hostnameOnly: true,
-      routes: {
-        "static.com":  "127.0.0.1:{PORT}",
-        "removed.com": "127.0.0.1:{PORT}"
-      }
-    }, {
-      add: [{ host: 'dynamic1.com', target: '127.0.0.1:' }],
-      drop: ['removed.com']
-    }),
-    "using RegExp": macros.http.assertProxiedToRoutes({
-      routes: {
-        "foo.com": "127.0.0.1:{PORT}",
-        "bar.com": "127.0.0.1:{PORT}",
-        "baz.com/taco": "127.0.0.1:{PORT}",
-        "pizza.com/taco/muffins": "127.0.0.1:{PORT}",
-        "blah.com/me": "127.0.0.1:{PORT}/remapped",
-        "bleh.com/remap/this": "127.0.0.1:{PORT}/remap/remapped",
-        "test.com/double/tap": "127.0.0.1:{PORT}/remap"
-      }
-    }),
-    "using hostnameOnly": macros.http.assertProxiedToRoutes({
-      hostnameOnly: true,
-      routes: {
-        "foo.com": "127.0.0.1:{PORT}",
-        "bar.com": "127.0.0.1:{PORT}"
-      }
-    }),
-    "using pathnameOnly": macros.http.assertProxiedToRoutes({
-      pathnameOnly: true,
-      routes: {
-        "/foo": "127.0.0.1:{PORT}",
-        "/bar": "127.0.0.1:{PORT}",
-        "/pizza": "127.0.0.1:{PORT}"
-      }
-    }),
-    "using a routing file": macros.http.assertProxiedToRoutes({
-      filename: routeFile,
-      routes: {
-        "foo.com": "127.0.0.1:{PORT}",
-        "bar.com": "127.0.0.1:{PORT}"
-      }
-    }, {
-      "after the file has been modified": {
-        topic: function () {
-          var config = JSON.parse(fs.readFileSync(routeFile, 'utf8')),
-              protocol = helpers.protocols.proxy,
-              port = helpers.nextPort,
-              that = this;
-
-          config.router['dynamic.com'] = "127.0.0.1:" + port;
-          fs.writeFileSync(routeFile, JSON.stringify(config));
-
-          async.parallel([
-            function waitForRoutes(next) {
-              that.proxyServer.on('routes', next);
-            },
-            async.apply(
-              helpers.http.createServer,
-              {
-                port: port,
-                output: 'hello from dynamic.com'
-              }
-            )
-          ], function () {
-            request({
-              uri: protocol + '://127.0.0.1:' + that.port,
-              headers: {
-                host: 'dynamic.com'
-              }
-            }, that.callback);
-          });
-        },
-        "should receive 'hello from dynamic.com'": function (err, res, body) {
-          assert.equal(body, 'hello from dynamic.com');
-        }
-      }
-    })
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/macros/examples.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/macros/examples.js b/web/demos/package/node_modules/http-proxy/test/macros/examples.js
deleted file mode 100644
index 9d4202e..0000000
--- a/web/demos/package/node_modules/http-proxy/test/macros/examples.js
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * examples.js: Macros for testing code in examples/
- *
- * (C) 2010 Nodejitsu Inc.
- * MIT LICENCE
- *
- */
-
-var assert = require('assert'),
-    fs = require('fs'),
-    path = require('path'),
-    spawn = require('child_process').spawn,
-    async = require('async');
-
-var rootDir = path.join(__dirname, '..', '..'),
-    examplesDir = path.join(rootDir, 'examples');
-
-//
-// ### function shouldHaveDeps ()
-//
-// Ensures that all `npm` dependencies are installed in `/examples`.
-//
-exports.shouldHaveDeps = function () {
-  return {
-    "Before testing examples": {
-      topic: function () {
-        async.waterfall([
-          //
-          // 1. Read files in examples dir
-          //
-          async.apply(fs.readdir, examplesDir),
-          //
-          // 2. If node_modules exists, continue. Otherwise
-          //    exec `npm` to install them
-          //
-          function checkNodeModules(files, next) {
-            if (files.indexOf('node_modules') !== -1) {
-              return next();
-            }
-
-            var child = spawn('npm', ['install', '-f'], {
-              cwd: examplesDir
-            });
-
-            child.on('exit', function (code) {
-              return code
-                ? next(new Error('npm install exited with non-zero exit code'))
-                : next();
-            });
-          },
-          //
-          // 3. Read files in examples dir again to ensure the install
-          //    worked as expected.
-          //
-          async.apply(fs.readdir, examplesDir),
-        ], this.callback);
-      },
-      "examples/node_modules should exist": function (err, files) {
-        assert.notEqual(files.indexOf('node_modules'), -1);
-      }
-    }
-  }
-};
-
-//
-// ### function shouldRequire (file)
-// #### @file {string} File to attempt to require
-//
-// Returns a test which attempts to require `file`.
-//
-exports.shouldRequire = function (file) {
-  return {
-    "should have no errors": function () {
-      try { assert.isObject(require(file)) }
-      catch (ex) { assert.isNull(ex) }
-    }
-  };
-};
-
-//
-// ### function shouldHaveNoErrors ()
-//
-// Returns a vows context that attempts to require
-// every relevant example file in `examples`.
-//
-exports.shouldHaveNoErrors = function () {
-  var context = {};
-
-  ['balancer', 'http', 'middleware', 'websocket'].forEach(function (dir) {
-    var name = 'examples/' + dir,
-        files = fs.readdirSync(path.join(rootDir, 'examples', dir));
-
-    files.forEach(function (file) {
-      context[name + '/' + file] = exports.shouldRequire(path.join(
-        examplesDir, dir, file
-      ));
-    });
-  });
-
-  return context;
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/macros/http.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/macros/http.js b/web/demos/package/node_modules/http-proxy/test/macros/http.js
deleted file mode 100644
index d3d8342..0000000
--- a/web/demos/package/node_modules/http-proxy/test/macros/http.js
+++ /dev/null
@@ -1,531 +0,0 @@
-/*
- * http.js: Macros for proxying HTTP requests
- *
- * (C) 2010 Nodejitsu Inc.
- * MIT LICENCE
- *
- */
-
-var assert = require('assert'),
-    fs = require('fs'),
-    async = require('async'),
-    net = require('net'),
-    request = require('request'),
-    helpers = require('../helpers/index');
-
-//
-// ### function assertRequest (options)
-// #### @options {Object} Options for this request assertion.
-// ####    @request {Object} Options to use for `request`.
-// ####    @assert  {Object} Test assertions against the response.
-//
-// Makes a request using `options.request` and then asserts the response
-// and body against anything in `options.assert`.
-//
-exports.assertRequest = function (options) {
-  return {
-    topic: function () {
-      //
-      // Now make the HTTP request and assert.
-      //
-      options.request.rejectUnauthorized = false;
-      request(options.request, this.callback);
-    },
-    "should succeed": function (err, res, body) {
-      assert.isNull(err);
-      if (options.assert.headers) {
-        Object.keys(options.assert.headers).forEach(function(header){
-          assert.equal(res.headers[header], options.assert.headers[header]);
-        });
-      }
-
-      if (options.assert.body) {
-        assert.equal(body, options.assert.body);
-      }
-
-      if (options.assert.statusCode) {
-        assert.equal(res.statusCode, options.assert.statusCode);
-      }
-    }
-  };
-};
-
-//
-// ### function assertFailedRequest (options)
-// #### @options {Object} Options for this failed request assertion.
-// ####    @request {Object} Options to use for `request`.
-// ####    @assert  {Object} Test assertions against the response.
-//
-// Makes a request using `options.request` and then asserts the response
-// and body against anything in `options.assert`.
-//
-exports.assertFailedRequest = function (options) {
-  return {
-    topic: function () {
-      //
-      // Now make the HTTP request and assert.
-      //
-      options.request.rejectUnauthorized = false;
-      request(options.request, this.callback);
-    },
-    "should not succeed": function (err, res, body) {
-      assert.notStrictEqual(err,null);
-    }
-  };
-};
-
-//
-// ### function assertProxied (options)
-// #### @options {Object} Options for this test
-// ####    @latency {number} Latency in milliseconds for the proxy server.
-// ####    @ports   {Object} Ports for the request (target, proxy).
-// ####    @output  {string} Output to assert from.
-// ####    @forward {Object} Options for forward proxying.
-//
-// Creates a complete end-to-end test for requesting against an
-// http proxy.
-//
-exports.assertProxied = function (options) {
-  options = options || {};
-
-  var ports         = options.ports   || helpers.nextPortPair,
-      output        = options.output  || 'hello world from ' + ports.target,
-      outputHeaders = options.outputHeaders,
-      targetHeaders = options.targetHeaders,
-      proxyHeaders  = options.proxyHeaders,
-      protocol      = helpers.protocols.proxy,
-      req           = options.request || {},
-      timeout       = options.timeout || null,
-      assertFn      = options.shouldFail
-        ? exports.assertFailedRequest
-        : exports.assertRequest;
-
-  req.uri = req.uri || protocol + '://127.0.0.1:' + ports.proxy;
-
-  return {
-    topic: function () {
-      //
-      // Create a target server and a proxy server
-      // using the `options` supplied.
-      //
-      helpers.http.createServerPair({
-        target: {
-          output: output,
-          outputHeaders: targetHeaders,
-          port: ports.target,
-          headers: req.headers,
-          latency: options.requestLatency
-        },
-        proxy: {
-          latency: options.latency,
-          port: ports.proxy,
-          outputHeaders: proxyHeaders,
-          proxy: {
-            forward: options.forward,
-            target: {
-              https: helpers.protocols.target === 'https',
-              host: '127.0.0.1',
-              port: ports.target
-            },
-            timeout: timeout
-          }
-        }
-      }, this.callback);
-    },
-    "the proxy request": assertFn({
-      request: req,
-      assert: {
-        headers: outputHeaders,
-        body: output
-      }
-    })
-  };
-};
-
-//
-// ### function assertRawHttpProxied (options)
-// #### @options {Object} Options for this test
-// ####    @rawRequest {string} Raw HTTP request to perform.
-// ####    @match      {RegExp} Output to match in the response.
-// ####    @latency    {number} Latency in milliseconds for the proxy server.
-// ####    @ports      {Object} Ports for the request (target, proxy).
-// ####    @output     {string} Output to assert from.
-// ####    @forward    {Object} Options for forward proxying.
-//
-// Creates a complete end-to-end test for requesting against an
-// http proxy.
-//
-exports.assertRawHttpProxied = function (options) {
-  // Don't test raw requests over HTTPS since options.rawRequest won't be
-  // encrypted.
-  if(helpers.protocols.proxy == 'https') {
-    return true;
-  }
-
-  options = options || {};
-
-  var ports         = options.ports   || helpers.nextPortPair,
-      output        = options.output  || 'hello world from ' + ports.target,
-      outputHeaders = options.outputHeaders,
-      targetHeaders = options.targetHeaders,
-      proxyHeaders  = options.proxyHeaders,
-      protocol      = helpers.protocols.proxy,
-      timeout       = options.timeout || null,
-      assertFn      = options.shouldFail
-        ? exports.assertFailedRequest
-        : exports.assertRequest;
-
-  return {
-    topic: function () {
-      var topicCallback = this.callback;
-
-      //
-      // Create a target server and a proxy server
-      // using the `options` supplied.
-      //
-      helpers.http.createServerPair({
-        target: {
-          output: output,
-          outputHeaders: targetHeaders,
-          port: ports.target,
-          latency: options.requestLatency
-        },
-        proxy: {
-          latency: options.latency,
-          port: ports.proxy,
-          outputHeaders: proxyHeaders,
-          proxy: {
-            forward: options.forward,
-            target: {
-              https: helpers.protocols.target === 'https',
-              host: '127.0.0.1',
-              port: ports.target
-            },
-            timeout: timeout
-          }
-        }
-      }, function() {
-        var response = '';
-        var client = net.connect(ports.proxy, '127.0.0.1', function() {
-          client.write(options.rawRequest);
-        });
-
-        client.on('data', function(data) {
-          response += data.toString();
-        });
-
-        client.on('end', function() {
-          topicCallback(null, options.match, response);
-        });
-      });
-    },
-    "should succeed": function(err, match, response) {
-      assert.match(response, match);
-    }
-  };
-};
-
-//
-// ### function assertInvalidProxy (options)
-// #### @options {Object} Options for this test
-// ####    @latency {number} Latency in milliseconds for the proxy server
-// ####    @ports   {Object} Ports for the request (target, proxy)
-//
-// Creates a complete end-to-end test for requesting against an
-// http proxy with no target server.
-//
-exports.assertInvalidProxy = function (options) {
-  options = options || {};
-
-  var ports    = options.ports   || helpers.nextPortPair,
-      req      = options.request || {},
-      protocol = helpers.protocols.proxy;
-
-
-  req.uri = req.uri || protocol + '://127.0.0.1:' + ports.proxy;
-
-  return {
-    topic: function () {
-      //
-      // Only create the proxy server, simulating a reverse-proxy
-      // to an invalid location.
-      //
-      helpers.http.createProxyServer({
-        latency: options.latency,
-        port: ports.proxy,
-        proxy: {
-          target: {
-            host: '127.0.0.1',
-            port: ports.target
-          }
-        }
-      }, this.callback);
-    },
-    "the proxy request": exports.assertRequest({
-      request: req,
-      assert: {
-        statusCode: 500
-      }
-    })
-  };
-};
-
-//
-// ### function assertForwardProxied (options)
-// #### @options {Object} Options for this test.
-//
-// Creates a complete end-to-end test for requesting against an
-// http proxy with both a valid and invalid forward target.
-//
-exports.assertForwardProxied = function (options) {
-  var forwardPort = helpers.nextPort;
-
-  return {
-    topic: function () {
-      helpers.http.createServer({
-        output: 'hello from forward',
-        port: forwardPort
-      }, this.callback);
-    },
-    "and a valid forward target": exports.assertProxied({
-      forward: {
-        port: forwardPort,
-        host: '127.0.0.1'
-      }
-    }),
-    "and an invalid forward target": exports.assertProxied({
-      forward: {
-        port: 9898,
-        host: '127.0.0.1'
-      }
-    })
-  };
-};
-
-//
-// ### function assertProxiedtoRoutes (options, nested)
-// #### @options {Object} Options for this ProxyTable-based test
-// ####    @routes       {Object|string} Routes to use for the proxy.
-// ####    @hostnameOnly {boolean} Enables hostnameOnly routing.
-// #### @nested  {Object} Nested vows to add to the returned context.
-//
-// Creates a complete end-to-end test for requesting against an
-// http proxy using `options.routes`:
-//
-// 1. Creates target servers for all routes in `options.routes.`
-// 2. Creates a proxy server.
-// 3. Ensure requests to the proxy server for all route targets
-//    returns the unique expected output.
-//
-exports.assertProxiedToRoutes = function (options, nested) {
-  //
-  // Assign dynamic ports to the routes to use.
-  //
-  options.routes = helpers.http.assignPortsToRoutes(options.routes);
-
-  //
-  // Parse locations from routes for making assertion requests.
-  //
-  var locations = helpers.http.parseRoutes(options),
-      port = options.pport || helpers.nextPort,
-      protocol = helpers.protocols.proxy,
-      context,
-      proxy;
-
-  if (options.filename) {
-    //
-    // If we've been passed a filename write the routes to it
-    // and setup the proxy options to use that file.
-    //
-    fs.writeFileSync(options.filename, JSON.stringify({ router: options.routes }));
-    proxy = { router: options.filename };
-  }
-  else {
-    //
-    // Otherwise just use the routes themselves.
-    //
-    proxy = {
-      hostnameOnly: options.hostnameOnly,
-      pathnameOnly: options.pathnameOnly,
-      router: options.routes
-    };
-  }
-
-  //
-  // Set the https options if necessary
-  //
-  if (helpers.protocols.target === 'https') {
-    proxy.target = { https: true };
-  }
-
-  //
-  // Create the test context which creates all target
-  // servers for all routes and a proxy server.
-  //
-  context = {
-    topic: function () {
-      var that = this;
-
-      async.waterfall([
-        //
-        // 1. Create all the target servers
-        //
-        async.apply(
-          async.forEach,
-          locations,
-          function createRouteTarget(location, next) {
-            helpers.http.createServer({
-              port: location.target.port,
-              output: 'hello from ' + location.source.href
-            }, next);
-          }
-        ),
-        //
-        // 2. Create the proxy server
-        //
-        async.apply(
-          helpers.http.createProxyServer,
-          {
-            port: port,
-            latency: options.latency,
-            routing: true,
-            proxy: proxy
-          }
-        )
-      ], function (_, server) {
-        //
-        // 3. Set the proxy server for later use
-        //
-        that.proxyServer = server;
-        that.callback();
-      });
-
-      //
-      // 4. Assign the port to the context for later use
-      //
-      this.port = port;
-    },
-    //
-    // Add an extra assertion to a route which
-    // should respond with 404
-    //
-    "a request to unknown.com": exports.assertRequest({
-      assert: { statusCode: 404 },
-      request: {
-        uri: protocol + '://127.0.0.1:' + port,
-        headers: {
-          host: 'unknown.com'
-        }
-      }
-    })
-  };
-
-  //
-  // Add test assertions for each of the route locations.
-  //
-  locations.forEach(function (location) {
-    context[location.source.href] = exports.assertRequest({
-      request: {
-        uri: protocol + '://127.0.0.1:' + port + location.source.path,
-        headers: {
-          host: location.source.hostname
-        }
-      },
-      assert: {
-        body: 'hello from ' + location.source.href
-      }
-    });
-  });
-
-  //
-  // If there are any nested vows to add to the context
-  // add them before returning the full context.
-  //
-  if (nested) {
-    Object.keys(nested).forEach(function (key) {
-      context[key] = nested[key];
-    });
-  }
-
-  return context;
-};
-
-//
-// ### function assertDynamicProxy (static, dynamic)
-// Asserts that after the `static` routes have been tested
-// and the `dynamic` routes are added / removed the appropriate
-// proxy responses are received.
-//
-exports.assertDynamicProxy = function (static, dynamic) {
-  var proxyPort = helpers.nextPort,
-      protocol = helpers.protocols.proxy,
-      context;
-
-  if (dynamic.add) {
-    dynamic.add = dynamic.add.map(function (dyn) {
-      dyn.port   = helpers.nextPort;
-      dyn.target = dyn.target + dyn.port;
-      return dyn;
-    });
-  }
-
-  context = {
-    topic: function () {
-      var that = this;
-
-      setTimeout(function () {
-        if (dynamic.drop) {
-          dynamic.drop.forEach(function (dropHost) {
-            that.proxyServer.proxy.removeHost(dropHost);
-          });
-        }
-
-        if (dynamic.add) {
-          async.forEachSeries(dynamic.add, function addOne (dyn, next) {
-            that.proxyServer.proxy.addHost(dyn.host, dyn.target);
-            helpers.http.createServer({
-              port: dyn.port,
-              output: 'hello ' + dyn.host
-            }, next);
-          }, that.callback);
-        }
-        else {
-          that.callback();
-        }
-      }, 200);
-    }
-  };
-
-  if (dynamic.drop) {
-    dynamic.drop.forEach(function (dropHost) {
-      context[dropHost] = exports.assertRequest({
-        assert: { statusCode: 404 },
-        request: {
-          uri: protocol + '://127.0.0.1:' + proxyPort,
-          headers: {
-            host: dropHost
-          }
-        }
-      });
-    });
-  }
-
-  if (dynamic.add) {
-    dynamic.add.forEach(function (dyn) {
-      context[dyn.host] = exports.assertRequest({
-        assert: { body: 'hello ' + dyn.host },
-        request: {
-          uri: protocol + '://127.0.0.1:' + proxyPort,
-          headers: {
-            host: dyn.host
-          }
-        }
-      });
-    });
-  }
-
-  static.pport = proxyPort;
-  return exports.assertProxiedToRoutes(static, {
-    "once the server has started": context
-  });
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/macros/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/macros/index.js b/web/demos/package/node_modules/http-proxy/test/macros/index.js
deleted file mode 100644
index c01f962..0000000
--- a/web/demos/package/node_modules/http-proxy/test/macros/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * index.js: Top level include for node-http-proxy macros
- *
- * (C) 2010 Nodejitsu Inc.
- * MIT LICENCE
- *
- */
-
-exports.examples = require('./examples');
-exports.http     = require('./http');
-exports.ws       = require('./ws');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/macros/ws.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/macros/ws.js b/web/demos/package/node_modules/http-proxy/test/macros/ws.js
deleted file mode 100644
index 508725a..0000000
--- a/web/demos/package/node_modules/http-proxy/test/macros/ws.js
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * ws.js: Macros for proxying Websocket requests
- *
- * (C) 2010 Nodejitsu Inc.
- * MIT LICENCE
- *
- */
-
-var assert = require('assert'),
-    fs = require('fs'),
-    async = require('async'),
-    io = require('socket.io-client'),
-    WebSocket = require('ws'),
-    helpers = require('../helpers/index');
-
-//
-// ### function assertSendRecieve (options)
-// #### @options {Object} Options for creating this assertion.
-// ####    @raw    {boolean} Enables raw `ws.WebSocket`.
-// ####    @uri    {string}  URI of the proxy server.
-// ####    @input  {string}  Input to assert sent to the target ws server.
-// ####    @output {string}  Output to assert from the taget ws server.
-//
-// Creates a `socket.io` or raw `WebSocket` connection and asserts that
-// `options.input` is sent to and `options.output` is received from the
-// connection.
-//
-exports.assertSendReceive = function (options) {
-  if (!options.raw) {
-    return {
-      topic: function () {
-        var socket = io.connect(options.uri);
-        socket.on('outgoing', this.callback.bind(this, null));
-        socket.emit('incoming', options.input);
-      },
-      "should send input and receive output": function (_, data) {
-        assert.equal(data, options.output);
-      }
-    };
-  }
-
-  return {
-    topic: function () {
-      var socket = new WebSocket(options.uri);
-      socket.on('message', this.callback.bind(this, null));
-      socket.on('open', function () {
-        socket.send(options.input);
-      });
-    },
-    "should send input and recieve output": function (_, data, flags) {
-      assert.equal(data, options.output);
-    }
-  };
-};
-
-//
-// ### function assertProxied (options)
-// #### @options {Object} Options for this test
-// ####    @latency {number}  Latency in milliseconds for the proxy server.
-// ####    @ports   {Object}  Ports for the request (target, proxy).
-// ####    @input   {string}  Input to assert sent to the target ws server.
-// ####    @output  {string}  Output to assert from the taget ws server.
-// ####    @raw     {boolean} Enables raw `ws.Server` usage.
-//
-// Creates a complete end-to-end test for requesting against an
-// http proxy.
-//
-exports.assertProxied = function (options) {
-  options = options || {};
-
-  var ports    = options.ports    || helpers.nextPortPair,
-      input    = options.input    || 'hello world to ' + ports.target,
-      output   = options.output   || 'hello world from ' + ports.target,
-      protocol = helpers.protocols.proxy;
-
-  if (options.raw) {
-    protocol = helpers.protocols.proxy === 'https'
-      ? 'wss'
-      : 'ws';
-  }
-
-  return {
-    topic: function () {
-      helpers.ws.createServerPair({
-        target: {
-          input: input,
-          output: output,
-          port: ports.target,
-          raw: options.raw
-        },
-        proxy: {
-          latency: options.latency,
-          port: ports.proxy,
-          proxy: {
-            target: {
-              https: helpers.protocols.target === 'https',
-              host: '127.0.0.1',
-              port: ports.target
-            }
-          }
-        }
-      }, this.callback);
-    },
-    "the proxy Websocket connection": exports.assertSendReceive({
-      uri: protocol + '://127.0.0.1:' + ports.proxy,
-      input: input,
-      output: output,
-      raw: options.raw
-    })
-  };
-};
-
-//
-// ### function assertProxiedtoRoutes (options, nested)
-// #### @options {Object} Options for this ProxyTable-based test
-// ####    @raw          {boolean}       Enables ws.Server usage.
-// ####    @routes       {Object|string} Routes to use for the proxy.
-// ####    @hostnameOnly {boolean}       Enables hostnameOnly routing.
-// #### @nested  {Object} Nested vows to add to the returned context.
-//
-// Creates a complete end-to-end test for requesting against an
-// http proxy using `options.routes`:
-//
-// 1. Creates target servers for all routes in `options.routes.`
-// 2. Creates a proxy server.
-// 3. Ensure Websocket connections to the proxy server for all route targets
-//    can send input and recieve output.
-//
-exports.assertProxiedToRoutes = function (options, nested) {
-  //
-  // Assign dynamic ports to the routes to use.
-  //
-  options.routes = helpers.http.assignPortsToRoutes(options.routes);
-
-  //
-  // Parse locations from routes for making assertion requests.
-  //
-  var locations = helpers.http.parseRoutes(options),
-      protocol = helpers.protocols.proxy,
-      port = helpers.nextPort,
-      context,
-      proxy;
-
-  if (options.raw) {
-    protocol = helpers.protocols.proxy === 'https'
-      ? 'wss'
-      : 'ws';
-  }
-
-  if (options.filename) {
-    //
-    // If we've been passed a filename write the routes to it
-    // and setup the proxy options to use that file.
-    //
-    fs.writeFileSync(options.filename, JSON.stringify({ router: options.routes }));
-    proxy = { router: options.filename };
-  }
-  else {
-    //
-    // Otherwise just use the routes themselves.
-    //
-    proxy = {
-      hostnameOnly: options.hostnameOnly,
-      router: options.routes
-    };
-  }
-
-  //
-  // Create the test context which creates all target
-  // servers for all routes and a proxy server.
-  //
-  context = {
-    topic: function () {
-      var that = this;
-
-      async.waterfall([
-        //
-        // 1. Create all the target servers
-        //
-        async.apply(
-          async.forEach,
-          locations,
-          function createRouteTarget(location, next) {
-            helpers.ws.createServer({
-              raw: options.raw,
-              port: location.target.port,
-              output: 'hello from ' + location.source.href,
-              input: 'hello to ' + location.source.href
-            }, next);
-          }
-        ),
-        //
-        // 2. Create the proxy server
-        //
-        async.apply(
-          helpers.http.createProxyServer,
-          {
-            port: port,
-            latency: options.latency,
-            routing: true,
-            proxy: proxy
-          }
-        )
-      ], function (_, server) {
-        //
-        // 3. Set the proxy server for later use
-        //
-        that.proxyServer = server;
-        that.callback();
-      });
-
-      //
-      // 4. Assign the port to the context for later use
-      //
-      this.port = port;
-    }
-  };
-
-  //
-  // Add test assertions for each of the route locations.
-  //
-  locations.forEach(function (location) {
-    context[location.source.href] = exports.assertSendRecieve({
-      uri: protocol + '://127.0.0.1:' + port + location.source.path,
-      output: 'hello from ' + location.source.href,
-      input: 'hello to ' + location.source.href,
-      raw: options.raw
-    });
-  });
-
-  return context;
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/ws/routing-table-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/ws/routing-table-test.js b/web/demos/package/node_modules/http-proxy/test/ws/routing-table-test.js
deleted file mode 100644
index e04d647..0000000
--- a/web/demos/package/node_modules/http-proxy/test/ws/routing-table-test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * routing-tabletest.js: Test for proxying `socket.io` and raw `WebSocket` requests using a ProxyTable.
- *
- * (C) 2010 Nodejitsu Inc.
- * MIT LICENCE
- *
- */
-
-var vows = require('vows'),
-    macros = require('../macros'),
-    helpers = require('../helpers/index');
-
-vows.describe(helpers.describe('routing-proxy', 'ws')).addBatch({
-  "With a valid target server": {
-    "and no latency": {
-      "using ws": macros.ws.assertProxied(),
-      "using socket.io": macros.ws.assertProxied({
-        raw: true
-      }),
-    },
-    // "and latency": macros.websocket.assertProxied({
-    //   latency: 2000
-    // })
-  }
-}).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/ws/socket.io-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/ws/socket.io-test.js b/web/demos/package/node_modules/http-proxy/test/ws/socket.io-test.js
deleted file mode 100644
index d833109..0000000
--- a/web/demos/package/node_modules/http-proxy/test/ws/socket.io-test.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * socket.io-test.js: Test for proxying `socket.io` requests.
- *
- * (C) 2010 Nodejitsu Inc.
- * MIT LICENCE
- *
- */
-
-var vows = require('vows'),
-    macros = require('../macros'),
-    helpers = require('../helpers/index');
-
-vows.describe(helpers.describe('socket.io', 'ws')).addBatch({
-  "With a valid target server": {
-    "and no latency": macros.ws.assertProxied(),
-    // "and latency": macros.ws.assertProxied({
-    //   latency: 2000
-    // })
-  }
-}).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/ws/ws-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/ws/ws-test.js b/web/demos/package/node_modules/http-proxy/test/ws/ws-test.js
deleted file mode 100644
index f354915..0000000
--- a/web/demos/package/node_modules/http-proxy/test/ws/ws-test.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * ws-test.js: Tests for proxying raw Websocket requests.
- *
- * (C) 2010 Nodejitsu Inc.
- * MIT LICENCE
- *
- */
-
-var vows = require('vows'),
-    macros = require('../macros'),
-    helpers = require('../helpers/index');
-
-vows.describe(helpers.describe('websocket', 'ws')).addBatch({
-  "With a valid target server": {
-    "and no latency": macros.ws.assertProxied({
-      raw: true
-    }),
-    // "and latency": macros.ws.assertProxied({
-    //   raw: true,
-    //   latency: 2000
-    // })
-  }
-}).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/jquery-deferred/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/jquery-deferred/.npmignore b/web/demos/package/node_modules/jquery-deferred/.npmignore
deleted file mode 100644
index 9533d1f..0000000
--- a/web/demos/package/node_modules/jquery-deferred/.npmignore
+++ /dev/null
@@ -1,6 +0,0 @@
-support
-test
-examples
-*.sock
-node_modules
-npm-debug.log

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/jquery-deferred/History.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/jquery-deferred/History.md b/web/demos/package/node_modules/jquery-deferred/History.md
deleted file mode 100644
index c8aa68f..0000000
--- a/web/demos/package/node_modules/jquery-deferred/History.md
+++ /dev/null
@@ -1,5 +0,0 @@
-
-0.0.1 / 2010-01-03
-==================
-
-  * Initial release

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/jquery-deferred/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/jquery-deferred/Makefile b/web/demos/package/node_modules/jquery-deferred/Makefile
deleted file mode 100644
index c618c43..0000000
--- a/web/demos/package/node_modules/jquery-deferred/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-
-test:
-	@echo "Test start"
-	node ./test/jquery-deferred.test.js
-	@echo "Test complete."
-
-.PHONY: test

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/jquery-deferred/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/jquery-deferred/Readme.md b/web/demos/package/node_modules/jquery-deferred/Readme.md
deleted file mode 100644
index 76285d6..0000000
--- a/web/demos/package/node_modules/jquery-deferred/Readme.md
+++ /dev/null
@@ -1,45 +0,0 @@
-
-jquery-deferred
-=============================
-
-jQuery deferred lib for nodeJS.
-
-jQuery.Deferred(), is a chainable utility object that can register multiple callbacks into callback queues, invoke callback queues, and relay the success or failure state of any synchronous or asynchronous function.
-
-Doc [http://api.jquery.com/category/deferred-object/](http://api.jquery.com/category/deferred-object/)
-
-Installation
------------------------------
-  
->     npm install jquery-deferred
-
-In nodeJS
-
-`var jQuery = require('jquery-deferred');`
-
-
-
-## License 
-
-(The MIT License)
-
-Copyright (c) 2011 Hidden &lt;zzdhidden@gmail.com&gt;
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/jquery-deferred/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/jquery-deferred/index.js b/web/demos/package/node_modules/jquery-deferred/index.js
deleted file mode 100644
index 1f4b92b..0000000
--- a/web/demos/package/node_modules/jquery-deferred/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-
-module.exports = require('./lib/jquery-deferred');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/jquery-deferred/lib/jquery-callbacks.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/jquery-deferred/lib/jquery-callbacks.js b/web/demos/package/node_modules/jquery-deferred/lib/jquery-callbacks.js
deleted file mode 100644
index feb959d..0000000
--- a/web/demos/package/node_modules/jquery-deferred/lib/jquery-callbacks.js
+++ /dev/null
@@ -1,206 +0,0 @@
-var jQuery = module.exports = require("./jquery-core.js"),
-	core_rspace = /\s+/;
-/**
-* jQuery Callbacks
-*
-* Code from: https://github.com/jquery/jquery/blob/master/src/callbacks.js
-*
-*/
-
-
-// String to Object options format cache
-var optionsCache = {};
-
-// Convert String-formatted options into Object-formatted ones and store in cache
-function createOptions( options ) {
-	var object = optionsCache[ options ] = {};
-	jQuery.each( options.split( core_rspace ), function( _, flag ) {
-		object[ flag ] = true;
-	});
-	return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- *	options: an optional list of space-separated options that will change how
- *			the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- *	once:			will ensure the callback list can only be fired once (like a Deferred)
- *
- *	memory:			will keep track of previous values and will call any callback added
- *					after the list has been fired right away with the latest "memorized"
- *					values (like a Deferred)
- *
- *	unique:			will ensure a callback can only be added once (no duplicate in the list)
- *
- *	stopOnFalse:	interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( options ) {
-
-	// Convert options from String-formatted to Object-formatted if needed
-	// (we check in cache first)
-	options = typeof options === "string" ?
-		( optionsCache[ options ] || createOptions( options ) ) :
-		jQuery.extend( {}, options );
-
-	var // Last fire value (for non-forgettable lists)
-		memory,
-		// Flag to know if list was already fired
-		fired,
-		// Flag to know if list is currently firing
-		firing,
-		// First callback to fire (used internally by add and fireWith)
-		firingStart,
-		// End of the loop when firing
-		firingLength,
-		// Index of currently firing callback (modified by remove if needed)
-		firingIndex,
-		// Actual callback list
-		list = [],
-		// Stack of fire calls for repeatable lists
-		stack = !options.once && [],
-		// Fire callbacks
-		fire = function( data ) {
-			memory = options.memory && data;
-			fired = true;
-			firingIndex = firingStart || 0;
-			firingStart = 0;
-			firingLength = list.length;
-			firing = true;
-			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
-				if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
-					memory = false; // To prevent further calls using add
-					break;
-				}
-			}
-			firing = false;
-			if ( list ) {
-				if ( stack ) {
-					if ( stack.length ) {
-						fire( stack.shift() );
-					}
-				} else if ( memory ) {
-					list = [];
-				} else {
-					self.disable();
-				}
-			}
-		},
-		// Actual Callbacks object
-		self = {
-			// Add a callback or a collection of callbacks to the list
-			add: function() {
-				if ( list ) {
-					// First, we save the current length
-					var start = list.length;
-					(function add( args ) {
-						jQuery.each( args, function( _, arg ) {
-							var type = jQuery.type( arg );
-							if ( type === "function" ) {
-								if ( !options.unique || !self.has( arg ) ) {
-									list.push( arg );
-								}
-							} else if ( arg && arg.length && type !== "string" ) {
-								// Inspect recursively
-								add( arg );
-							}
-						});
-					})( arguments );
-					// Do we need to add the callbacks to the
-					// current firing batch?
-					if ( firing ) {
-						firingLength = list.length;
-					// With memory, if we're not firing then
-					// we should call right away
-					} else if ( memory ) {
-						firingStart = start;
-						fire( memory );
-					}
-				}
-				return this;
-			},
-			// Remove a callback from the list
-			remove: function() {
-				if ( list ) {
-					jQuery.each( arguments, function( _, arg ) {
-						var index;
-						while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
-							list.splice( index, 1 );
-							// Handle firing indexes
-							if ( firing ) {
-								if ( index <= firingLength ) {
-									firingLength--;
-								}
-								if ( index <= firingIndex ) {
-									firingIndex--;
-								}
-							}
-						}
-					});
-				}
-				return this;
-			},
-			// Control if a given callback is in the list
-			has: function( fn ) {
-				return jQuery.inArray( fn, list ) > -1;
-			},
-			// Remove all callbacks from the list
-			empty: function() {
-				list = [];
-				return this;
-			},
-			// Have the list do nothing anymore
-			disable: function() {
-				list = stack = memory = undefined;
-				return this;
-			},
-			// Is it disabled?
-			disabled: function() {
-				return !list;
-			},
-			// Lock the list in its current state
-			lock: function() {
-				stack = undefined;
-				if ( !memory ) {
-					self.disable();
-				}
-				return this;
-			},
-			// Is it locked?
-			locked: function() {
-				return !stack;
-			},
-			// Call all callbacks with the given context and arguments
-			fireWith: function( context, args ) {
-				args = args || [];
-				args = [ context, args.slice ? args.slice() : args ];
-				if ( list && ( !fired || stack ) ) {
-					if ( firing ) {
-						stack.push( args );
-					} else {
-						fire( args );
-					}
-				}
-				return this;
-			},
-			// Call all the callbacks with the given arguments
-			fire: function() {
-				self.fireWith( this, arguments );
-				return this;
-			},
-			// To know if the callbacks have already been called at least once
-			fired: function() {
-				return !!fired;
-			}
-		};
-
-	return self;
-};
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/jquery-deferred/lib/jquery-core.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/jquery-deferred/lib/jquery-core.js b/web/demos/package/node_modules/jquery-deferred/lib/jquery-core.js
deleted file mode 100644
index bc38e88..0000000
--- a/web/demos/package/node_modules/jquery-deferred/lib/jquery-core.js
+++ /dev/null
@@ -1,155 +0,0 @@
-/**
-* jQuery core object.
-*
-* Worker with jQuery deferred
-*
-* Code from: https://github.com/jquery/jquery/blob/master/src/core.js
-*
-*/
-
-var jQuery = module.exports = {
-	type: type
-	, isArray: isArray
-	, isFunction: isFunction
-	, isPlainObject: isPlainObject
-	, each: each
-	, extend: extend
-	, noop: function() {}
-};
-
-var toString = Object.prototype.toString;
-
-var class2type = {};
-// Populate the class2type map
-"Boolean Number String Function Array Date RegExp Object".split(" ").forEach(function(name) {
-	class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-
-function type( obj ) {
-	return obj == null ?
-		String( obj ) :
-			class2type[ toString.call(obj) ] || "object";
-}
-
-function isFunction( obj ) {
-	return jQuery.type(obj) === "function";
-}
-
-function isArray( obj ) {
-	return jQuery.type(obj) === "array";
-}
-
-function each( object, callback, args ) {
-	var name, i = 0,
-	length = object.length,
-	isObj = length === undefined || isFunction( object );
-
-	if ( args ) {
-		if ( isObj ) {
-			for ( name in object ) {
-				if ( callback.apply( object[ name ], args ) === false ) {
-					break;
-				}
-			}
-		} else {
-			for ( ; i < length; ) {
-				if ( callback.apply( object[ i++ ], args ) === false ) {
-					break;
-				}
-			}
-		}
-
-		// A special, fast, case for the most common use of each
-	} else {
-		if ( isObj ) {
-			for ( name in object ) {
-				if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
-					break;
-				}
-			}
-		} else {
-			for ( ; i < length; ) {
-				if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
-					break;
-				}
-			}
-		}
-	}
-
-	return object;
-}
-
-function isPlainObject( obj ) {
-	// Must be an Object.
-	if ( !obj || jQuery.type(obj) !== "object" ) {
-		return false;
-	}
-	return true;
-}
-
-function extend() {
-	var options, name, src, copy, copyIsArray, clone,
-	target = arguments[0] || {},
-	i = 1,
-	length = arguments.length,
-	deep = false;
-
-	// Handle a deep copy situation
-	if ( typeof target === "boolean" ) {
-		deep = target;
-		target = arguments[1] || {};
-		// skip the boolean and the target
-		i = 2;
-	}
-
-	// Handle case when target is a string or something (possible in deep copy)
-	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-		target = {};
-	}
-
-	// extend jQuery itself if only one argument is passed
-	if ( length === i ) {
-		target = this;
-		--i;
-	}
-
-	for ( ; i < length; i++ ) {
-		// Only deal with non-null/undefined values
-		if ( (options = arguments[ i ]) != null ) {
-			// Extend the base object
-			for ( name in options ) {
-				src = target[ name ];
-				copy = options[ name ];
-
-				// Prevent never-ending loop
-				if ( target === copy ) {
-					continue;
-				}
-
-				// Recurse if we're merging plain objects or arrays
-				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-					if ( copyIsArray ) {
-						copyIsArray = false;
-						clone = src && jQuery.isArray(src) ? src : [];
-
-					} else {
-						clone = src && jQuery.isPlainObject(src) ? src : {};
-					}
-
-					// Never move original objects, clone them
-					target[ name ] = jQuery.extend( deep, clone, copy );
-
-					// Don't bring in undefined values
-				} else if ( copy !== undefined ) {
-					target[ name ] = copy;
-				}
-			}
-		}
-	}
-
-	// Return the modified object
-	return target;
-};
-
-


[05/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/long.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/long.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/long.js
deleted file mode 100644
index f8f37a6..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/long.js
+++ /dev/null
@@ -1,854 +0,0 @@
-// 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 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.
-//
-// Copyright 2009 Google Inc. All Rights Reserved
-
-/**
- * Defines a Long class for representing a 64-bit two's-complement
- * integer value, which faithfully simulates the behavior of a Java "Long". This
- * implementation is derived from LongLib in GWT.
- *
- * Constructs a 64-bit two's-complement integer, given its low and high 32-bit
- * values as *signed* integers.  See the from* functions below for more
- * convenient ways of constructing Longs.
- *
- * The internal representation of a Long is the two given signed, 32-bit values.
- * We use 32-bit pieces because these are the size of integers on which
- * Javascript performs bit-operations.  For operations like addition and
- * multiplication, we split each number into 16-bit pieces, which can easily be
- * multiplied within Javascript's floating-point representation without overflow
- * or change in sign.
- *
- * In the algorithms below, we frequently reduce the negative case to the
- * positive case by negating the input(s) and then post-processing the result.
- * Note that we must ALWAYS check specially whether those values are MIN_VALUE
- * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as
- * a positive number, it overflows back into a negative).  Not handling this
- * case would often result in infinite recursion.
- *
- * @class Represents the BSON Long type.
- * @param {Number} low  the low (signed) 32 bits of the Long.
- * @param {Number} high the high (signed) 32 bits of the Long.
- */
-function Long(low, high) {
-  if(!(this instanceof Long)) return new Long(low, high);
-  
-  this._bsontype = 'Long';
-  /**
-   * @type {number}
-   * @api private
-   */
-  this.low_ = low | 0;  // force into 32 signed bits.
-
-  /**
-   * @type {number}
-   * @api private
-   */
-  this.high_ = high | 0;  // force into 32 signed bits.
-};
-
-/**
- * Return the int value.
- *
- * @return {Number} the value, assuming it is a 32-bit integer.
- * @api public
- */
-Long.prototype.toInt = function() {
-  return this.low_;
-};
-
-/**
- * Return the Number value.
- *
- * @return {Number} the closest floating-point representation to this value.
- * @api public
- */
-Long.prototype.toNumber = function() {
-  return this.high_ * Long.TWO_PWR_32_DBL_ +
-         this.getLowBitsUnsigned();
-};
-
-/**
- * Return the JSON value.
- *
- * @return {String} the JSON representation.
- * @api public
- */
-Long.prototype.toJSON = function() {
-  return this.toString();
-}
-
-/**
- * Return the String value.
- *
- * @param {Number} [opt_radix] the radix in which the text should be written.
- * @return {String} the textual representation of this value.
- * @api public
- */
-Long.prototype.toString = function(opt_radix) {
-  var radix = opt_radix || 10;
-  if (radix < 2 || 36 < radix) {
-    throw Error('radix out of range: ' + radix);
-  }
-
-  if (this.isZero()) {
-    return '0';
-  }
-
-  if (this.isNegative()) {
-    if (this.equals(Long.MIN_VALUE)) {
-      // We need to change the Long value before it can be negated, so we remove
-      // the bottom-most digit in this base and then recurse to do the rest.
-      var radixLong = Long.fromNumber(radix);
-      var div = this.div(radixLong);
-      var rem = div.multiply(radixLong).subtract(this);
-      return div.toString(radix) + rem.toInt().toString(radix);
-    } else {
-      return '-' + this.negate().toString(radix);
-    }
-  }
-
-  // Do several (6) digits each time through the loop, so as to
-  // minimize the calls to the very expensive emulated div.
-  var radixToPower = Long.fromNumber(Math.pow(radix, 6));
-
-  var rem = this;
-  var result = '';
-  while (true) {
-    var remDiv = rem.div(radixToPower);
-    var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt();
-    var digits = intval.toString(radix);
-
-    rem = remDiv;
-    if (rem.isZero()) {
-      return digits + result;
-    } else {
-      while (digits.length < 6) {
-        digits = '0' + digits;
-      }
-      result = '' + digits + result;
-    }
-  }
-};
-
-/**
- * Return the high 32-bits value.
- *
- * @return {Number} the high 32-bits as a signed value.
- * @api public
- */
-Long.prototype.getHighBits = function() {
-  return this.high_;
-};
-
-/**
- * Return the low 32-bits value.
- *
- * @return {Number} the low 32-bits as a signed value.
- * @api public
- */
-Long.prototype.getLowBits = function() {
-  return this.low_;
-};
-
-/**
- * Return the low unsigned 32-bits value.
- *
- * @return {Number} the low 32-bits as an unsigned value.
- * @api public
- */
-Long.prototype.getLowBitsUnsigned = function() {
-  return (this.low_ >= 0) ?
-      this.low_ : Long.TWO_PWR_32_DBL_ + this.low_;
-};
-
-/**
- * Returns the number of bits needed to represent the absolute value of this Long.
- *
- * @return {Number} Returns the number of bits needed to represent the absolute value of this Long.
- * @api public
- */
-Long.prototype.getNumBitsAbs = function() {
-  if (this.isNegative()) {
-    if (this.equals(Long.MIN_VALUE)) {
-      return 64;
-    } else {
-      return this.negate().getNumBitsAbs();
-    }
-  } else {
-    var val = this.high_ != 0 ? this.high_ : this.low_;
-    for (var bit = 31; bit > 0; bit--) {
-      if ((val & (1 << bit)) != 0) {
-        break;
-      }
-    }
-    return this.high_ != 0 ? bit + 33 : bit + 1;
-  }
-};
-
-/**
- * Return whether this value is zero.
- *
- * @return {Boolean} whether this value is zero.
- * @api public
- */
-Long.prototype.isZero = function() {
-  return this.high_ == 0 && this.low_ == 0;
-};
-
-/**
- * Return whether this value is negative.
- *
- * @return {Boolean} whether this value is negative.
- * @api public
- */
-Long.prototype.isNegative = function() {
-  return this.high_ < 0;
-};
-
-/**
- * Return whether this value is odd.
- *
- * @return {Boolean} whether this value is odd.
- * @api public
- */
-Long.prototype.isOdd = function() {
-  return (this.low_ & 1) == 1;
-};
-
-/**
- * Return whether this Long equals the other
- *
- * @param {Long} other Long to compare against.
- * @return {Boolean} whether this Long equals the other
- * @api public
- */
-Long.prototype.equals = function(other) {
-  return (this.high_ == other.high_) && (this.low_ == other.low_);
-};
-
-/**
- * Return whether this Long does not equal the other.
- *
- * @param {Long} other Long to compare against.
- * @return {Boolean} whether this Long does not equal the other.
- * @api public
- */
-Long.prototype.notEquals = function(other) {
-  return (this.high_ != other.high_) || (this.low_ != other.low_);
-};
-
-/**
- * Return whether this Long is less than the other.
- *
- * @param {Long} other Long to compare against.
- * @return {Boolean} whether this Long is less than the other.
- * @api public
- */
-Long.prototype.lessThan = function(other) {
-  return this.compare(other) < 0;
-};
-
-/**
- * Return whether this Long is less than or equal to the other.
- *
- * @param {Long} other Long to compare against.
- * @return {Boolean} whether this Long is less than or equal to the other.
- * @api public
- */
-Long.prototype.lessThanOrEqual = function(other) {
-  return this.compare(other) <= 0;
-};
-
-/**
- * Return whether this Long is greater than the other.
- *
- * @param {Long} other Long to compare against.
- * @return {Boolean} whether this Long is greater than the other.
- * @api public
- */
-Long.prototype.greaterThan = function(other) {
-  return this.compare(other) > 0;
-};
-
-/**
- * Return whether this Long is greater than or equal to the other.
- *
- * @param {Long} other Long to compare against.
- * @return {Boolean} whether this Long is greater than or equal to the other.
- * @api public
- */
-Long.prototype.greaterThanOrEqual = function(other) {
-  return this.compare(other) >= 0;
-};
-
-/**
- * Compares this Long with the given one.
- *
- * @param {Long} other Long to compare against.
- * @return {Boolean} 0 if they are the same, 1 if the this is greater, and -1 if the given one is greater.
- * @api public
- */
-Long.prototype.compare = function(other) {
-  if (this.equals(other)) {
-    return 0;
-  }
-
-  var thisNeg = this.isNegative();
-  var otherNeg = other.isNegative();
-  if (thisNeg && !otherNeg) {
-    return -1;
-  }
-  if (!thisNeg && otherNeg) {
-    return 1;
-  }
-
-  // at this point, the signs are the same, so subtraction will not overflow
-  if (this.subtract(other).isNegative()) {
-    return -1;
-  } else {
-    return 1;
-  }
-};
-
-/**
- * The negation of this value.
- *
- * @return {Long} the negation of this value.
- * @api public
- */
-Long.prototype.negate = function() {
-  if (this.equals(Long.MIN_VALUE)) {
-    return Long.MIN_VALUE;
-  } else {
-    return this.not().add(Long.ONE);
-  }
-};
-
-/**
- * Returns the sum of this and the given Long.
- *
- * @param {Long} other Long to add to this one.
- * @return {Long} the sum of this and the given Long.
- * @api public
- */
-Long.prototype.add = function(other) {
-  // Divide each number into 4 chunks of 16 bits, and then sum the chunks.
-
-  var a48 = this.high_ >>> 16;
-  var a32 = this.high_ & 0xFFFF;
-  var a16 = this.low_ >>> 16;
-  var a00 = this.low_ & 0xFFFF;
-
-  var b48 = other.high_ >>> 16;
-  var b32 = other.high_ & 0xFFFF;
-  var b16 = other.low_ >>> 16;
-  var b00 = other.low_ & 0xFFFF;
-
-  var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
-  c00 += a00 + b00;
-  c16 += c00 >>> 16;
-  c00 &= 0xFFFF;
-  c16 += a16 + b16;
-  c32 += c16 >>> 16;
-  c16 &= 0xFFFF;
-  c32 += a32 + b32;
-  c48 += c32 >>> 16;
-  c32 &= 0xFFFF;
-  c48 += a48 + b48;
-  c48 &= 0xFFFF;
-  return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);
-};
-
-/**
- * Returns the difference of this and the given Long.
- *
- * @param {Long} other Long to subtract from this.
- * @return {Long} the difference of this and the given Long.
- * @api public
- */
-Long.prototype.subtract = function(other) {
-  return this.add(other.negate());
-};
-
-/**
- * Returns the product of this and the given Long.
- *
- * @param {Long} other Long to multiply with this.
- * @return {Long} the product of this and the other.
- * @api public
- */
-Long.prototype.multiply = function(other) {
-  if (this.isZero()) {
-    return Long.ZERO;
-  } else if (other.isZero()) {
-    return Long.ZERO;
-  }
-
-  if (this.equals(Long.MIN_VALUE)) {
-    return other.isOdd() ? Long.MIN_VALUE : Long.ZERO;
-  } else if (other.equals(Long.MIN_VALUE)) {
-    return this.isOdd() ? Long.MIN_VALUE : Long.ZERO;
-  }
-
-  if (this.isNegative()) {
-    if (other.isNegative()) {
-      return this.negate().multiply(other.negate());
-    } else {
-      return this.negate().multiply(other).negate();
-    }
-  } else if (other.isNegative()) {
-    return this.multiply(other.negate()).negate();
-  }
-
-  // If both Longs are small, use float multiplication
-  if (this.lessThan(Long.TWO_PWR_24_) &&
-      other.lessThan(Long.TWO_PWR_24_)) {
-    return Long.fromNumber(this.toNumber() * other.toNumber());
-  }
-
-  // Divide each Long into 4 chunks of 16 bits, and then add up 4x4 products.
-  // We can skip products that would overflow.
-
-  var a48 = this.high_ >>> 16;
-  var a32 = this.high_ & 0xFFFF;
-  var a16 = this.low_ >>> 16;
-  var a00 = this.low_ & 0xFFFF;
-
-  var b48 = other.high_ >>> 16;
-  var b32 = other.high_ & 0xFFFF;
-  var b16 = other.low_ >>> 16;
-  var b00 = other.low_ & 0xFFFF;
-
-  var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
-  c00 += a00 * b00;
-  c16 += c00 >>> 16;
-  c00 &= 0xFFFF;
-  c16 += a16 * b00;
-  c32 += c16 >>> 16;
-  c16 &= 0xFFFF;
-  c16 += a00 * b16;
-  c32 += c16 >>> 16;
-  c16 &= 0xFFFF;
-  c32 += a32 * b00;
-  c48 += c32 >>> 16;
-  c32 &= 0xFFFF;
-  c32 += a16 * b16;
-  c48 += c32 >>> 16;
-  c32 &= 0xFFFF;
-  c32 += a00 * b32;
-  c48 += c32 >>> 16;
-  c32 &= 0xFFFF;
-  c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
-  c48 &= 0xFFFF;
-  return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);
-};
-
-/**
- * Returns this Long divided by the given one.
- *
- * @param {Long} other Long by which to divide.
- * @return {Long} this Long divided by the given one.
- * @api public
- */
-Long.prototype.div = function(other) {
-  if (other.isZero()) {
-    throw Error('division by zero');
-  } else if (this.isZero()) {
-    return Long.ZERO;
-  }
-
-  if (this.equals(Long.MIN_VALUE)) {
-    if (other.equals(Long.ONE) ||
-        other.equals(Long.NEG_ONE)) {
-      return Long.MIN_VALUE;  // recall that -MIN_VALUE == MIN_VALUE
-    } else if (other.equals(Long.MIN_VALUE)) {
-      return Long.ONE;
-    } else {
-      // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.
-      var halfThis = this.shiftRight(1);
-      var approx = halfThis.div(other).shiftLeft(1);
-      if (approx.equals(Long.ZERO)) {
-        return other.isNegative() ? Long.ONE : Long.NEG_ONE;
-      } else {
-        var rem = this.subtract(other.multiply(approx));
-        var result = approx.add(rem.div(other));
-        return result;
-      }
-    }
-  } else if (other.equals(Long.MIN_VALUE)) {
-    return Long.ZERO;
-  }
-
-  if (this.isNegative()) {
-    if (other.isNegative()) {
-      return this.negate().div(other.negate());
-    } else {
-      return this.negate().div(other).negate();
-    }
-  } else if (other.isNegative()) {
-    return this.div(other.negate()).negate();
-  }
-
-  // Repeat the following until the remainder is less than other:  find a
-  // floating-point that approximates remainder / other *from below*, add this
-  // into the result, and subtract it from the remainder.  It is critical that
-  // the approximate value is less than or equal to the real value so that the
-  // remainder never becomes negative.
-  var res = Long.ZERO;
-  var rem = this;
-  while (rem.greaterThanOrEqual(other)) {
-    // Approximate the result of division. This may be a little greater or
-    // smaller than the actual value.
-    var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber()));
-
-    // We will tweak the approximate result by changing it in the 48-th digit or
-    // the smallest non-fractional digit, whichever is larger.
-    var log2 = Math.ceil(Math.log(approx) / Math.LN2);
-    var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48);
-
-    // Decrease the approximation until it is smaller than the remainder.  Note
-    // that if it is too large, the product overflows and is negative.
-    var approxRes = Long.fromNumber(approx);
-    var approxRem = approxRes.multiply(other);
-    while (approxRem.isNegative() || approxRem.greaterThan(rem)) {
-      approx -= delta;
-      approxRes = Long.fromNumber(approx);
-      approxRem = approxRes.multiply(other);
-    }
-
-    // We know the answer can't be zero... and actually, zero would cause
-    // infinite recursion since we would make no progress.
-    if (approxRes.isZero()) {
-      approxRes = Long.ONE;
-    }
-
-    res = res.add(approxRes);
-    rem = rem.subtract(approxRem);
-  }
-  return res;
-};
-
-/**
- * Returns this Long modulo the given one.
- *
- * @param {Long} other Long by which to mod.
- * @return {Long} this Long modulo the given one.
- * @api public
- */
-Long.prototype.modulo = function(other) {
-  return this.subtract(this.div(other).multiply(other));
-};
-
-/**
- * The bitwise-NOT of this value.
- *
- * @return {Long} the bitwise-NOT of this value.
- * @api public
- */
-Long.prototype.not = function() {
-  return Long.fromBits(~this.low_, ~this.high_);
-};
-
-/**
- * Returns the bitwise-AND of this Long and the given one.
- *
- * @param {Long} other the Long with which to AND.
- * @return {Long} the bitwise-AND of this and the other.
- * @api public
- */
-Long.prototype.and = function(other) {
-  return Long.fromBits(this.low_ & other.low_, this.high_ & other.high_);
-};
-
-/**
- * Returns the bitwise-OR of this Long and the given one.
- *
- * @param {Long} other the Long with which to OR.
- * @return {Long} the bitwise-OR of this and the other.
- * @api public
- */
-Long.prototype.or = function(other) {
-  return Long.fromBits(this.low_ | other.low_, this.high_ | other.high_);
-};
-
-/**
- * Returns the bitwise-XOR of this Long and the given one.
- *
- * @param {Long} other the Long with which to XOR.
- * @return {Long} the bitwise-XOR of this and the other.
- * @api public
- */
-Long.prototype.xor = function(other) {
-  return Long.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_);
-};
-
-/**
- * Returns this Long with bits shifted to the left by the given amount.
- *
- * @param {Number} numBits the number of bits by which to shift.
- * @return {Long} this shifted to the left by the given amount.
- * @api public
- */
-Long.prototype.shiftLeft = function(numBits) {
-  numBits &= 63;
-  if (numBits == 0) {
-    return this;
-  } else {
-    var low = this.low_;
-    if (numBits < 32) {
-      var high = this.high_;
-      return Long.fromBits(
-                 low << numBits,
-                 (high << numBits) | (low >>> (32 - numBits)));
-    } else {
-      return Long.fromBits(0, low << (numBits - 32));
-    }
-  }
-};
-
-/**
- * Returns this Long with bits shifted to the right by the given amount.
- *
- * @param {Number} numBits the number of bits by which to shift.
- * @return {Long} this shifted to the right by the given amount.
- * @api public
- */
-Long.prototype.shiftRight = function(numBits) {
-  numBits &= 63;
-  if (numBits == 0) {
-    return this;
-  } else {
-    var high = this.high_;
-    if (numBits < 32) {
-      var low = this.low_;
-      return Long.fromBits(
-                 (low >>> numBits) | (high << (32 - numBits)),
-                 high >> numBits);
-    } else {
-      return Long.fromBits(
-                 high >> (numBits - 32),
-                 high >= 0 ? 0 : -1);
-    }
-  }
-};
-
-/**
- * Returns this Long with bits shifted to the right by the given amount, with the new top bits matching the current sign bit.
- *
- * @param {Number} numBits the number of bits by which to shift.
- * @return {Long} this shifted to the right by the given amount, with zeros placed into the new leading bits.
- * @api public
- */
-Long.prototype.shiftRightUnsigned = function(numBits) {
-  numBits &= 63;
-  if (numBits == 0) {
-    return this;
-  } else {
-    var high = this.high_;
-    if (numBits < 32) {
-      var low = this.low_;
-      return Long.fromBits(
-                 (low >>> numBits) | (high << (32 - numBits)),
-                 high >>> numBits);
-    } else if (numBits == 32) {
-      return Long.fromBits(high, 0);
-    } else {
-      return Long.fromBits(high >>> (numBits - 32), 0);
-    }
-  }
-};
-
-/**
- * Returns a Long representing the given (32-bit) integer value.
- *
- * @param {Number} value the 32-bit integer in question.
- * @return {Long} the corresponding Long value.
- * @api public
- */
-Long.fromInt = function(value) {
-  if (-128 <= value && value < 128) {
-    var cachedObj = Long.INT_CACHE_[value];
-    if (cachedObj) {
-      return cachedObj;
-    }
-  }
-
-  var obj = new Long(value | 0, value < 0 ? -1 : 0);
-  if (-128 <= value && value < 128) {
-    Long.INT_CACHE_[value] = obj;
-  }
-  return obj;
-};
-
-/**
- * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.
- *
- * @param {Number} value the number in question.
- * @return {Long} the corresponding Long value.
- * @api public
- */
-Long.fromNumber = function(value) {
-  if (isNaN(value) || !isFinite(value)) {
-    return Long.ZERO;
-  } else if (value <= -Long.TWO_PWR_63_DBL_) {
-    return Long.MIN_VALUE;
-  } else if (value + 1 >= Long.TWO_PWR_63_DBL_) {
-    return Long.MAX_VALUE;
-  } else if (value < 0) {
-    return Long.fromNumber(-value).negate();
-  } else {
-    return new Long(
-               (value % Long.TWO_PWR_32_DBL_) | 0,
-               (value / Long.TWO_PWR_32_DBL_) | 0);
-  }
-};
-
-/**
- * Returns a Long representing the 64-bit integer that comes by concatenating the given high and low bits. Each is assumed to use 32 bits.
- *
- * @param {Number} lowBits the low 32-bits.
- * @param {Number} highBits the high 32-bits.
- * @return {Long} the corresponding Long value.
- * @api public
- */
-Long.fromBits = function(lowBits, highBits) {
-  return new Long(lowBits, highBits);
-};
-
-/**
- * Returns a Long representation of the given string, written using the given radix.
- *
- * @param {String} str the textual representation of the Long.
- * @param {Number} opt_radix the radix in which the text is written.
- * @return {Long} the corresponding Long value.
- * @api public
- */
-Long.fromString = function(str, opt_radix) {
-  if (str.length == 0) {
-    throw Error('number format error: empty string');
-  }
-
-  var radix = opt_radix || 10;
-  if (radix < 2 || 36 < radix) {
-    throw Error('radix out of range: ' + radix);
-  }
-
-  if (str.charAt(0) == '-') {
-    return Long.fromString(str.substring(1), radix).negate();
-  } else if (str.indexOf('-') >= 0) {
-    throw Error('number format error: interior "-" character: ' + str);
-  }
-
-  // Do several (8) digits each time through the loop, so as to
-  // minimize the calls to the very expensive emulated div.
-  var radixToPower = Long.fromNumber(Math.pow(radix, 8));
-
-  var result = Long.ZERO;
-  for (var i = 0; i < str.length; i += 8) {
-    var size = Math.min(8, str.length - i);
-    var value = parseInt(str.substring(i, i + size), radix);
-    if (size < 8) {
-      var power = Long.fromNumber(Math.pow(radix, size));
-      result = result.multiply(power).add(Long.fromNumber(value));
-    } else {
-      result = result.multiply(radixToPower);
-      result = result.add(Long.fromNumber(value));
-    }
-  }
-  return result;
-};
-
-// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the
-// from* methods on which they depend.
-
-
-/**
- * A cache of the Long representations of small integer values.
- * @type {Object}
- * @api private
- */
-Long.INT_CACHE_ = {};
-
-// NOTE: the compiler should inline these constant values below and then remove
-// these variables, so there should be no runtime penalty for these.
-
-/**
- * Number used repeated below in calculations.  This must appear before the
- * first call to any from* function below.
- * @type {number}
- * @api private
- */
-Long.TWO_PWR_16_DBL_ = 1 << 16;
-
-/**
- * @type {number}
- * @api private
- */
-Long.TWO_PWR_24_DBL_ = 1 << 24;
-
-/**
- * @type {number}
- * @api private
- */
-Long.TWO_PWR_32_DBL_ = Long.TWO_PWR_16_DBL_ * Long.TWO_PWR_16_DBL_;
-
-/**
- * @type {number}
- * @api private
- */
-Long.TWO_PWR_31_DBL_ = Long.TWO_PWR_32_DBL_ / 2;
-
-/**
- * @type {number}
- * @api private
- */
-Long.TWO_PWR_48_DBL_ = Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_16_DBL_;
-
-/**
- * @type {number}
- * @api private
- */
-Long.TWO_PWR_64_DBL_ = Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_32_DBL_;
-
-/**
- * @type {number}
- * @api private
- */
-Long.TWO_PWR_63_DBL_ = Long.TWO_PWR_64_DBL_ / 2;
-
-/** @type {Long} */
-Long.ZERO = Long.fromInt(0);
-
-/** @type {Long} */
-Long.ONE = Long.fromInt(1);
-
-/** @type {Long} */
-Long.NEG_ONE = Long.fromInt(-1);
-
-/** @type {Long} */
-Long.MAX_VALUE =
-    Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0);
-
-/** @type {Long} */
-Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0);
-
-/**
- * @type {Long}
- * @api private
- */
-Long.TWO_PWR_24_ = Long.fromInt(1 << 24);
-
-/**
- * Expose.
- */
-exports.Long = Long;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/max_key.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/max_key.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/max_key.js
deleted file mode 100644
index 0825408..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/max_key.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * A class representation of the BSON MaxKey type.
- *
- * @class Represents the BSON MaxKey type.
- * @return {MaxKey}
- */
-function MaxKey() {
-  if(!(this instanceof MaxKey)) return new MaxKey();
-  
-  this._bsontype = 'MaxKey';  
-}
-
-exports.MaxKey = MaxKey;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/min_key.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/min_key.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/min_key.js
deleted file mode 100644
index 230c2e6..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/min_key.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * A class representation of the BSON MinKey type.
- *
- * @class Represents the BSON MinKey type.
- * @return {MinKey}
- */
-function MinKey() {
-  if(!(this instanceof MinKey)) return new MinKey();
-  
-  this._bsontype = 'MinKey';
-}
-
-exports.MinKey = MinKey;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js
deleted file mode 100644
index 844763c..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js
+++ /dev/null
@@ -1,249 +0,0 @@
-/**
- * Module dependencies.
- */
-var BinaryParser = require('./binary_parser').BinaryParser;
-
-/**
- * Machine id.
- *
- * Create a random 3-byte value (i.e. unique for this
- * process). Other drivers use a md5 of the machine id here, but
- * that would mean an asyc call to gethostname, so we don't bother.
- */
-var MACHINE_ID = parseInt(Math.random() * 0xFFFFFF, 10);
-
-// Regular expression that checks for hex value
-var checkForHexRegExp = new RegExp("^[0-9a-fA-F]{24}$");
-
-/**
-* Create a new ObjectID instance
-*
-* @class Represents the BSON ObjectID type
-* @param {String|Number} id Can be a 24 byte hex string, 12 byte binary string or a Number.
-* @return {Object} instance of ObjectID.
-*/
-var ObjectID = function ObjectID(id) {
-  if(!(this instanceof ObjectID)) return new ObjectID(id);
-
-  this._bsontype = 'ObjectID';
-  var __id = null;
-
-  // Throw an error if it's not a valid setup
-  if(id != null && 'number' != typeof id && (id.length != 12 && id.length != 24))
-    throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters");
-
-  // Generate id based on the input
-  if(id == null || typeof id == 'number') {
-    // convert to 12 byte binary string
-    this.id = this.generate(id);
-  } else if(id != null && id.length === 12) {
-    // assume 12 byte string
-    this.id = id;
-  } else if(checkForHexRegExp.test(id)) {
-    return ObjectID.createFromHexString(id);
-  } else {
-    throw new Error("Value passed in is not a valid 24 character hex string");
-  }
-
-  if(ObjectID.cacheHexString) this.__id = this.toHexString();
-};
-
-// Allow usage of ObjectId aswell as ObjectID
-var ObjectId = ObjectID;
-
-/**
-* Return the ObjectID id as a 24 byte hex string representation
-*
-* @return {String} return the 24 byte hex string representation.
-* @api public
-*/
-ObjectID.prototype.toHexString = function() {
-  if(ObjectID.cacheHexString && this.__id) return this.__id;
-
-  var hexString = ''
-    , number
-    , value;
-
-  for (var index = 0, len = this.id.length; index < len; index++) {
-    value = BinaryParser.toByte(this.id[index]);
-    number = value <= 15
-      ? '0' + value.toString(16)
-      : value.toString(16);
-    hexString = hexString + number;
-  }
-
-  if(ObjectID.cacheHexString) this.__id = hexString;
-  return hexString;
-};
-
-/**
-* Update the ObjectID index used in generating new ObjectID's on the driver
-*
-* @return {Number} returns next index value.
-* @api private
-*/
-ObjectID.prototype.get_inc = function() {
-  return ObjectID.index = (ObjectID.index + 1) % 0xFFFFFF;
-};
-
-/**
-* Update the ObjectID index used in generating new ObjectID's on the driver
-*
-* @return {Number} returns next index value.
-* @api private
-*/
-ObjectID.prototype.getInc = function() {
-  return this.get_inc();
-};
-
-/**
-* Generate a 12 byte id string used in ObjectID's
-*
-* @param {Number} [time] optional parameter allowing to pass in a second based timestamp.
-* @return {String} return the 12 byte id binary string.
-* @api private
-*/
-ObjectID.prototype.generate = function(time) {
-  if ('number' != typeof time) {
-    time = parseInt(Date.now()/1000,10);
-  }
-  
-  var time4Bytes = BinaryParser.encodeInt(time, 32, true, true);
-  /* for time-based ObjectID the bytes following the time will be zeroed */
-  var machine3Bytes = BinaryParser.encodeInt(MACHINE_ID, 24, false);
-  var pid2Bytes = BinaryParser.fromShort(typeof process === 'undefined' ? Math.floor(Math.random() * 100000) : process.pid);
-  var index3Bytes = BinaryParser.encodeInt(this.get_inc(), 24, false, true);
-
-  return time4Bytes + machine3Bytes + pid2Bytes + index3Bytes;
-};
-
-/**
-* Converts the id into a 24 byte hex string for printing
-*
-* @return {String} return the 24 byte hex string representation.
-* @api private
-*/
-ObjectID.prototype.toString = function() {
-  return this.toHexString();
-};
-
-/**
-* Converts to a string representation of this Id.
-*
-* @return {String} return the 24 byte hex string representation.
-* @api private
-*/
-ObjectID.prototype.inspect = ObjectID.prototype.toString;
-
-/**
-* Converts to its JSON representation.
-*
-* @return {String} return the 24 byte hex string representation.
-* @api private
-*/
-ObjectID.prototype.toJSON = function() {
-  return this.toHexString();
-};
-
-/**
-* Compares the equality of this ObjectID with `otherID`.
-*
-* @param {Object} otherID ObjectID instance to compare against.
-* @return {Bool} the result of comparing two ObjectID's
-* @api public
-*/
-ObjectID.prototype.equals = function equals (otherID) {
-  var id = (otherID instanceof ObjectID || otherID.toHexString)
-    ? otherID.id
-    : ObjectID.createFromHexString(otherID).id;
-
-  return this.id === id;
-}
-
-/**
-* Returns the generation date (accurate up to the second) that this ID was generated.
-*
-* @return {Date} the generation date
-* @api public
-*/
-ObjectID.prototype.getTimestamp = function() {
-  var timestamp = new Date();
-  timestamp.setTime(Math.floor(BinaryParser.decodeInt(this.id.substring(0,4), 32, true, true)) * 1000);
-  return timestamp;
-}
-
-/**
-* @ignore
-* @api private
-*/
-ObjectID.index = parseInt(Math.random() * 0xFFFFFF, 10);
-
-ObjectID.createPk = function createPk () {
-  return new ObjectID();
-};
-
-/**
-* Creates an ObjectID from a second based number, with the rest of the ObjectID zeroed out. Used for comparisons or sorting the ObjectID.
-*
-* @param {Number} time an integer number representing a number of seconds.
-* @return {ObjectID} return the created ObjectID
-* @api public
-*/
-ObjectID.createFromTime = function createFromTime (time) {
-  var id = BinaryParser.encodeInt(time, 32, true, true) +
-           BinaryParser.encodeInt(0, 64, true, true);
-  return new ObjectID(id);
-};
-
-/**
-* Creates an ObjectID from a hex string representation of an ObjectID.
-*
-* @param {String} hexString create a ObjectID from a passed in 24 byte hexstring.
-* @return {ObjectID} return the created ObjectID
-* @api public
-*/
-ObjectID.createFromHexString = function createFromHexString (hexString) {
-  // Throw an error if it's not a valid setup
-  if(typeof hexString === 'undefined' || hexString != null && hexString.length != 24)
-    throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters");
-
-  var len = hexString.length;
-
-  if(len > 12*2) {
-    throw new Error('Id cannot be longer than 12 bytes');
-  }
-
-  var result = ''
-    , string
-    , number;
-
-  for (var index = 0; index < len; index += 2) {
-    string = hexString.substr(index, 2);
-    number = parseInt(string, 16);
-    result += BinaryParser.fromByte(number);
-  }
-
-  return new ObjectID(result, hexString);
-};
-
-/**
-* @ignore
-*/
-Object.defineProperty(ObjectID.prototype, "generationTime", {
-   enumerable: true
- , get: function () {
-     return Math.floor(BinaryParser.decodeInt(this.id.substring(0,4), 32, true, true));
-   }
- , set: function (value) {
-     var value = BinaryParser.encodeInt(value, 32, true, true);
-     this.id = value + this.id.substr(4);
-     // delete this.__id;
-     this.toHexString();
-   }
-});
-
-/**
- * Expose.
- */
-exports.ObjectID = ObjectID;
-exports.ObjectId = ObjectID;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/symbol.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/symbol.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/symbol.js
deleted file mode 100644
index 8e2838d..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/symbol.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * A class representation of the BSON Symbol type.
- *
- * @class Represents the BSON Symbol type.
- * @param {String} value the string representing the symbol.
- * @return {Symbol}
- */
-function Symbol(value) {
-  if(!(this instanceof Symbol)) return new Symbol(value);
-  this._bsontype = 'Symbol';
-  this.value = value;
-}
-
-/**
- * Access the wrapped string value.
- *
- * @return {String} returns the wrapped string.
- * @api public
- */
-Symbol.prototype.valueOf = function() {
-  return this.value;
-};
-
-/**
- * @ignore
- * @api private
- */
-Symbol.prototype.toString = function() {
-  return this.value;
-}
-
-/**
- * @ignore
- * @api private
- */
-Symbol.prototype.inspect = function() {
-  return this.value;
-}
-
-/**
- * @ignore
- * @api private
- */
-Symbol.prototype.toJSON = function() {
-  return this.value;
-}
-
-exports.Symbol = Symbol;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/timestamp.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/timestamp.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/timestamp.js
deleted file mode 100644
index c650d15..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/timestamp.js
+++ /dev/null
@@ -1,853 +0,0 @@
-// 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 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.
-//
-// Copyright 2009 Google Inc. All Rights Reserved
-
-/**
- * Defines a Timestamp class for representing a 64-bit two's-complement
- * integer value, which faithfully simulates the behavior of a Java "Timestamp". This
- * implementation is derived from TimestampLib in GWT.
- *
- * Constructs a 64-bit two's-complement integer, given its low and high 32-bit
- * values as *signed* integers.  See the from* functions below for more
- * convenient ways of constructing Timestamps.
- *
- * The internal representation of a Timestamp is the two given signed, 32-bit values.
- * We use 32-bit pieces because these are the size of integers on which
- * Javascript performs bit-operations.  For operations like addition and
- * multiplication, we split each number into 16-bit pieces, which can easily be
- * multiplied within Javascript's floating-point representation without overflow
- * or change in sign.
- *
- * In the algorithms below, we frequently reduce the negative case to the
- * positive case by negating the input(s) and then post-processing the result.
- * Note that we must ALWAYS check specially whether those values are MIN_VALUE
- * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as
- * a positive number, it overflows back into a negative).  Not handling this
- * case would often result in infinite recursion.
- *
- * @class Represents the BSON Timestamp type.
- * @param {Number} low  the low (signed) 32 bits of the Timestamp.
- * @param {Number} high the high (signed) 32 bits of the Timestamp.
- */
-function Timestamp(low, high) {
-  if(!(this instanceof Timestamp)) return new Timestamp(low, high);
-  this._bsontype = 'Timestamp';
-  /**
-   * @type {number}
-   * @api private
-   */
-  this.low_ = low | 0;  // force into 32 signed bits.
-
-  /**
-   * @type {number}
-   * @api private
-   */
-  this.high_ = high | 0;  // force into 32 signed bits.
-};
-
-/**
- * Return the int value.
- *
- * @return {Number} the value, assuming it is a 32-bit integer.
- * @api public
- */
-Timestamp.prototype.toInt = function() {
-  return this.low_;
-};
-
-/**
- * Return the Number value.
- *
- * @return {Number} the closest floating-point representation to this value.
- * @api public
- */
-Timestamp.prototype.toNumber = function() {
-  return this.high_ * Timestamp.TWO_PWR_32_DBL_ +
-         this.getLowBitsUnsigned();
-};
-
-/**
- * Return the JSON value.
- *
- * @return {String} the JSON representation.
- * @api public
- */
-Timestamp.prototype.toJSON = function() {
-  return this.toString();
-}
-
-/**
- * Return the String value.
- *
- * @param {Number} [opt_radix] the radix in which the text should be written.
- * @return {String} the textual representation of this value.
- * @api public
- */
-Timestamp.prototype.toString = function(opt_radix) {
-  var radix = opt_radix || 10;
-  if (radix < 2 || 36 < radix) {
-    throw Error('radix out of range: ' + radix);
-  }
-
-  if (this.isZero()) {
-    return '0';
-  }
-
-  if (this.isNegative()) {
-    if (this.equals(Timestamp.MIN_VALUE)) {
-      // We need to change the Timestamp value before it can be negated, so we remove
-      // the bottom-most digit in this base and then recurse to do the rest.
-      var radixTimestamp = Timestamp.fromNumber(radix);
-      var div = this.div(radixTimestamp);
-      var rem = div.multiply(radixTimestamp).subtract(this);
-      return div.toString(radix) + rem.toInt().toString(radix);
-    } else {
-      return '-' + this.negate().toString(radix);
-    }
-  }
-
-  // Do several (6) digits each time through the loop, so as to
-  // minimize the calls to the very expensive emulated div.
-  var radixToPower = Timestamp.fromNumber(Math.pow(radix, 6));
-
-  var rem = this;
-  var result = '';
-  while (true) {
-    var remDiv = rem.div(radixToPower);
-    var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt();
-    var digits = intval.toString(radix);
-
-    rem = remDiv;
-    if (rem.isZero()) {
-      return digits + result;
-    } else {
-      while (digits.length < 6) {
-        digits = '0' + digits;
-      }
-      result = '' + digits + result;
-    }
-  }
-};
-
-/**
- * Return the high 32-bits value.
- *
- * @return {Number} the high 32-bits as a signed value.
- * @api public
- */
-Timestamp.prototype.getHighBits = function() {
-  return this.high_;
-};
-
-/**
- * Return the low 32-bits value.
- *
- * @return {Number} the low 32-bits as a signed value.
- * @api public
- */
-Timestamp.prototype.getLowBits = function() {
-  return this.low_;
-};
-
-/**
- * Return the low unsigned 32-bits value.
- *
- * @return {Number} the low 32-bits as an unsigned value.
- * @api public
- */
-Timestamp.prototype.getLowBitsUnsigned = function() {
-  return (this.low_ >= 0) ?
-      this.low_ : Timestamp.TWO_PWR_32_DBL_ + this.low_;
-};
-
-/**
- * Returns the number of bits needed to represent the absolute value of this Timestamp.
- *
- * @return {Number} Returns the number of bits needed to represent the absolute value of this Timestamp.
- * @api public
- */
-Timestamp.prototype.getNumBitsAbs = function() {
-  if (this.isNegative()) {
-    if (this.equals(Timestamp.MIN_VALUE)) {
-      return 64;
-    } else {
-      return this.negate().getNumBitsAbs();
-    }
-  } else {
-    var val = this.high_ != 0 ? this.high_ : this.low_;
-    for (var bit = 31; bit > 0; bit--) {
-      if ((val & (1 << bit)) != 0) {
-        break;
-      }
-    }
-    return this.high_ != 0 ? bit + 33 : bit + 1;
-  }
-};
-
-/**
- * Return whether this value is zero.
- *
- * @return {Boolean} whether this value is zero.
- * @api public
- */
-Timestamp.prototype.isZero = function() {
-  return this.high_ == 0 && this.low_ == 0;
-};
-
-/**
- * Return whether this value is negative.
- *
- * @return {Boolean} whether this value is negative.
- * @api public
- */
-Timestamp.prototype.isNegative = function() {
-  return this.high_ < 0;
-};
-
-/**
- * Return whether this value is odd.
- *
- * @return {Boolean} whether this value is odd.
- * @api public
- */
-Timestamp.prototype.isOdd = function() {
-  return (this.low_ & 1) == 1;
-};
-
-/**
- * Return whether this Timestamp equals the other
- *
- * @param {Timestamp} other Timestamp to compare against.
- * @return {Boolean} whether this Timestamp equals the other
- * @api public
- */
-Timestamp.prototype.equals = function(other) {
-  return (this.high_ == other.high_) && (this.low_ == other.low_);
-};
-
-/**
- * Return whether this Timestamp does not equal the other.
- *
- * @param {Timestamp} other Timestamp to compare against.
- * @return {Boolean} whether this Timestamp does not equal the other.
- * @api public
- */
-Timestamp.prototype.notEquals = function(other) {
-  return (this.high_ != other.high_) || (this.low_ != other.low_);
-};
-
-/**
- * Return whether this Timestamp is less than the other.
- *
- * @param {Timestamp} other Timestamp to compare against.
- * @return {Boolean} whether this Timestamp is less than the other.
- * @api public
- */
-Timestamp.prototype.lessThan = function(other) {
-  return this.compare(other) < 0;
-};
-
-/**
- * Return whether this Timestamp is less than or equal to the other.
- *
- * @param {Timestamp} other Timestamp to compare against.
- * @return {Boolean} whether this Timestamp is less than or equal to the other.
- * @api public
- */
-Timestamp.prototype.lessThanOrEqual = function(other) {
-  return this.compare(other) <= 0;
-};
-
-/**
- * Return whether this Timestamp is greater than the other.
- *
- * @param {Timestamp} other Timestamp to compare against.
- * @return {Boolean} whether this Timestamp is greater than the other.
- * @api public
- */
-Timestamp.prototype.greaterThan = function(other) {
-  return this.compare(other) > 0;
-};
-
-/**
- * Return whether this Timestamp is greater than or equal to the other.
- *
- * @param {Timestamp} other Timestamp to compare against.
- * @return {Boolean} whether this Timestamp is greater than or equal to the other.
- * @api public
- */
-Timestamp.prototype.greaterThanOrEqual = function(other) {
-  return this.compare(other) >= 0;
-};
-
-/**
- * Compares this Timestamp with the given one.
- *
- * @param {Timestamp} other Timestamp to compare against.
- * @return {Boolean} 0 if they are the same, 1 if the this is greater, and -1 if the given one is greater.
- * @api public
- */
-Timestamp.prototype.compare = function(other) {
-  if (this.equals(other)) {
-    return 0;
-  }
-
-  var thisNeg = this.isNegative();
-  var otherNeg = other.isNegative();
-  if (thisNeg && !otherNeg) {
-    return -1;
-  }
-  if (!thisNeg && otherNeg) {
-    return 1;
-  }
-
-  // at this point, the signs are the same, so subtraction will not overflow
-  if (this.subtract(other).isNegative()) {
-    return -1;
-  } else {
-    return 1;
-  }
-};
-
-/**
- * The negation of this value.
- *
- * @return {Timestamp} the negation of this value.
- * @api public
- */
-Timestamp.prototype.negate = function() {
-  if (this.equals(Timestamp.MIN_VALUE)) {
-    return Timestamp.MIN_VALUE;
-  } else {
-    return this.not().add(Timestamp.ONE);
-  }
-};
-
-/**
- * Returns the sum of this and the given Timestamp.
- *
- * @param {Timestamp} other Timestamp to add to this one.
- * @return {Timestamp} the sum of this and the given Timestamp.
- * @api public
- */
-Timestamp.prototype.add = function(other) {
-  // Divide each number into 4 chunks of 16 bits, and then sum the chunks.
-
-  var a48 = this.high_ >>> 16;
-  var a32 = this.high_ & 0xFFFF;
-  var a16 = this.low_ >>> 16;
-  var a00 = this.low_ & 0xFFFF;
-
-  var b48 = other.high_ >>> 16;
-  var b32 = other.high_ & 0xFFFF;
-  var b16 = other.low_ >>> 16;
-  var b00 = other.low_ & 0xFFFF;
-
-  var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
-  c00 += a00 + b00;
-  c16 += c00 >>> 16;
-  c00 &= 0xFFFF;
-  c16 += a16 + b16;
-  c32 += c16 >>> 16;
-  c16 &= 0xFFFF;
-  c32 += a32 + b32;
-  c48 += c32 >>> 16;
-  c32 &= 0xFFFF;
-  c48 += a48 + b48;
-  c48 &= 0xFFFF;
-  return Timestamp.fromBits((c16 << 16) | c00, (c48 << 16) | c32);
-};
-
-/**
- * Returns the difference of this and the given Timestamp.
- *
- * @param {Timestamp} other Timestamp to subtract from this.
- * @return {Timestamp} the difference of this and the given Timestamp.
- * @api public
- */
-Timestamp.prototype.subtract = function(other) {
-  return this.add(other.negate());
-};
-
-/**
- * Returns the product of this and the given Timestamp.
- *
- * @param {Timestamp} other Timestamp to multiply with this.
- * @return {Timestamp} the product of this and the other.
- * @api public
- */
-Timestamp.prototype.multiply = function(other) {
-  if (this.isZero()) {
-    return Timestamp.ZERO;
-  } else if (other.isZero()) {
-    return Timestamp.ZERO;
-  }
-
-  if (this.equals(Timestamp.MIN_VALUE)) {
-    return other.isOdd() ? Timestamp.MIN_VALUE : Timestamp.ZERO;
-  } else if (other.equals(Timestamp.MIN_VALUE)) {
-    return this.isOdd() ? Timestamp.MIN_VALUE : Timestamp.ZERO;
-  }
-
-  if (this.isNegative()) {
-    if (other.isNegative()) {
-      return this.negate().multiply(other.negate());
-    } else {
-      return this.negate().multiply(other).negate();
-    }
-  } else if (other.isNegative()) {
-    return this.multiply(other.negate()).negate();
-  }
-
-  // If both Timestamps are small, use float multiplication
-  if (this.lessThan(Timestamp.TWO_PWR_24_) &&
-      other.lessThan(Timestamp.TWO_PWR_24_)) {
-    return Timestamp.fromNumber(this.toNumber() * other.toNumber());
-  }
-
-  // Divide each Timestamp into 4 chunks of 16 bits, and then add up 4x4 products.
-  // We can skip products that would overflow.
-
-  var a48 = this.high_ >>> 16;
-  var a32 = this.high_ & 0xFFFF;
-  var a16 = this.low_ >>> 16;
-  var a00 = this.low_ & 0xFFFF;
-
-  var b48 = other.high_ >>> 16;
-  var b32 = other.high_ & 0xFFFF;
-  var b16 = other.low_ >>> 16;
-  var b00 = other.low_ & 0xFFFF;
-
-  var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
-  c00 += a00 * b00;
-  c16 += c00 >>> 16;
-  c00 &= 0xFFFF;
-  c16 += a16 * b00;
-  c32 += c16 >>> 16;
-  c16 &= 0xFFFF;
-  c16 += a00 * b16;
-  c32 += c16 >>> 16;
-  c16 &= 0xFFFF;
-  c32 += a32 * b00;
-  c48 += c32 >>> 16;
-  c32 &= 0xFFFF;
-  c32 += a16 * b16;
-  c48 += c32 >>> 16;
-  c32 &= 0xFFFF;
-  c32 += a00 * b32;
-  c48 += c32 >>> 16;
-  c32 &= 0xFFFF;
-  c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
-  c48 &= 0xFFFF;
-  return Timestamp.fromBits((c16 << 16) | c00, (c48 << 16) | c32);
-};
-
-/**
- * Returns this Timestamp divided by the given one.
- *
- * @param {Timestamp} other Timestamp by which to divide.
- * @return {Timestamp} this Timestamp divided by the given one.
- * @api public
- */
-Timestamp.prototype.div = function(other) {
-  if (other.isZero()) {
-    throw Error('division by zero');
-  } else if (this.isZero()) {
-    return Timestamp.ZERO;
-  }
-
-  if (this.equals(Timestamp.MIN_VALUE)) {
-    if (other.equals(Timestamp.ONE) ||
-        other.equals(Timestamp.NEG_ONE)) {
-      return Timestamp.MIN_VALUE;  // recall that -MIN_VALUE == MIN_VALUE
-    } else if (other.equals(Timestamp.MIN_VALUE)) {
-      return Timestamp.ONE;
-    } else {
-      // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.
-      var halfThis = this.shiftRight(1);
-      var approx = halfThis.div(other).shiftLeft(1);
-      if (approx.equals(Timestamp.ZERO)) {
-        return other.isNegative() ? Timestamp.ONE : Timestamp.NEG_ONE;
-      } else {
-        var rem = this.subtract(other.multiply(approx));
-        var result = approx.add(rem.div(other));
-        return result;
-      }
-    }
-  } else if (other.equals(Timestamp.MIN_VALUE)) {
-    return Timestamp.ZERO;
-  }
-
-  if (this.isNegative()) {
-    if (other.isNegative()) {
-      return this.negate().div(other.negate());
-    } else {
-      return this.negate().div(other).negate();
-    }
-  } else if (other.isNegative()) {
-    return this.div(other.negate()).negate();
-  }
-
-  // Repeat the following until the remainder is less than other:  find a
-  // floating-point that approximates remainder / other *from below*, add this
-  // into the result, and subtract it from the remainder.  It is critical that
-  // the approximate value is less than or equal to the real value so that the
-  // remainder never becomes negative.
-  var res = Timestamp.ZERO;
-  var rem = this;
-  while (rem.greaterThanOrEqual(other)) {
-    // Approximate the result of division. This may be a little greater or
-    // smaller than the actual value.
-    var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber()));
-
-    // We will tweak the approximate result by changing it in the 48-th digit or
-    // the smallest non-fractional digit, whichever is larger.
-    var log2 = Math.ceil(Math.log(approx) / Math.LN2);
-    var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48);
-
-    // Decrease the approximation until it is smaller than the remainder.  Note
-    // that if it is too large, the product overflows and is negative.
-    var approxRes = Timestamp.fromNumber(approx);
-    var approxRem = approxRes.multiply(other);
-    while (approxRem.isNegative() || approxRem.greaterThan(rem)) {
-      approx -= delta;
-      approxRes = Timestamp.fromNumber(approx);
-      approxRem = approxRes.multiply(other);
-    }
-
-    // We know the answer can't be zero... and actually, zero would cause
-    // infinite recursion since we would make no progress.
-    if (approxRes.isZero()) {
-      approxRes = Timestamp.ONE;
-    }
-
-    res = res.add(approxRes);
-    rem = rem.subtract(approxRem);
-  }
-  return res;
-};
-
-/**
- * Returns this Timestamp modulo the given one.
- *
- * @param {Timestamp} other Timestamp by which to mod.
- * @return {Timestamp} this Timestamp modulo the given one.
- * @api public
- */
-Timestamp.prototype.modulo = function(other) {
-  return this.subtract(this.div(other).multiply(other));
-};
-
-/**
- * The bitwise-NOT of this value.
- *
- * @return {Timestamp} the bitwise-NOT of this value.
- * @api public
- */
-Timestamp.prototype.not = function() {
-  return Timestamp.fromBits(~this.low_, ~this.high_);
-};
-
-/**
- * Returns the bitwise-AND of this Timestamp and the given one.
- *
- * @param {Timestamp} other the Timestamp with which to AND.
- * @return {Timestamp} the bitwise-AND of this and the other.
- * @api public
- */
-Timestamp.prototype.and = function(other) {
-  return Timestamp.fromBits(this.low_ & other.low_, this.high_ & other.high_);
-};
-
-/**
- * Returns the bitwise-OR of this Timestamp and the given one.
- *
- * @param {Timestamp} other the Timestamp with which to OR.
- * @return {Timestamp} the bitwise-OR of this and the other.
- * @api public
- */
-Timestamp.prototype.or = function(other) {
-  return Timestamp.fromBits(this.low_ | other.low_, this.high_ | other.high_);
-};
-
-/**
- * Returns the bitwise-XOR of this Timestamp and the given one.
- *
- * @param {Timestamp} other the Timestamp with which to XOR.
- * @return {Timestamp} the bitwise-XOR of this and the other.
- * @api public
- */
-Timestamp.prototype.xor = function(other) {
-  return Timestamp.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_);
-};
-
-/**
- * Returns this Timestamp with bits shifted to the left by the given amount.
- *
- * @param {Number} numBits the number of bits by which to shift.
- * @return {Timestamp} this shifted to the left by the given amount.
- * @api public
- */
-Timestamp.prototype.shiftLeft = function(numBits) {
-  numBits &= 63;
-  if (numBits == 0) {
-    return this;
-  } else {
-    var low = this.low_;
-    if (numBits < 32) {
-      var high = this.high_;
-      return Timestamp.fromBits(
-                 low << numBits,
-                 (high << numBits) | (low >>> (32 - numBits)));
-    } else {
-      return Timestamp.fromBits(0, low << (numBits - 32));
-    }
-  }
-};
-
-/**
- * Returns this Timestamp with bits shifted to the right by the given amount.
- *
- * @param {Number} numBits the number of bits by which to shift.
- * @return {Timestamp} this shifted to the right by the given amount.
- * @api public
- */
-Timestamp.prototype.shiftRight = function(numBits) {
-  numBits &= 63;
-  if (numBits == 0) {
-    return this;
-  } else {
-    var high = this.high_;
-    if (numBits < 32) {
-      var low = this.low_;
-      return Timestamp.fromBits(
-                 (low >>> numBits) | (high << (32 - numBits)),
-                 high >> numBits);
-    } else {
-      return Timestamp.fromBits(
-                 high >> (numBits - 32),
-                 high >= 0 ? 0 : -1);
-    }
-  }
-};
-
-/**
- * Returns this Timestamp with bits shifted to the right by the given amount, with the new top bits matching the current sign bit.
- *
- * @param {Number} numBits the number of bits by which to shift.
- * @return {Timestamp} this shifted to the right by the given amount, with zeros placed into the new leading bits.
- * @api public
- */
-Timestamp.prototype.shiftRightUnsigned = function(numBits) {
-  numBits &= 63;
-  if (numBits == 0) {
-    return this;
-  } else {
-    var high = this.high_;
-    if (numBits < 32) {
-      var low = this.low_;
-      return Timestamp.fromBits(
-                 (low >>> numBits) | (high << (32 - numBits)),
-                 high >>> numBits);
-    } else if (numBits == 32) {
-      return Timestamp.fromBits(high, 0);
-    } else {
-      return Timestamp.fromBits(high >>> (numBits - 32), 0);
-    }
-  }
-};
-
-/**
- * Returns a Timestamp representing the given (32-bit) integer value.
- *
- * @param {Number} value the 32-bit integer in question.
- * @return {Timestamp} the corresponding Timestamp value.
- * @api public
- */
-Timestamp.fromInt = function(value) {
-  if (-128 <= value && value < 128) {
-    var cachedObj = Timestamp.INT_CACHE_[value];
-    if (cachedObj) {
-      return cachedObj;
-    }
-  }
-
-  var obj = new Timestamp(value | 0, value < 0 ? -1 : 0);
-  if (-128 <= value && value < 128) {
-    Timestamp.INT_CACHE_[value] = obj;
-  }
-  return obj;
-};
-
-/**
- * Returns a Timestamp representing the given value, provided that it is a finite number. Otherwise, zero is returned.
- *
- * @param {Number} value the number in question.
- * @return {Timestamp} the corresponding Timestamp value.
- * @api public
- */
-Timestamp.fromNumber = function(value) {
-  if (isNaN(value) || !isFinite(value)) {
-    return Timestamp.ZERO;
-  } else if (value <= -Timestamp.TWO_PWR_63_DBL_) {
-    return Timestamp.MIN_VALUE;
-  } else if (value + 1 >= Timestamp.TWO_PWR_63_DBL_) {
-    return Timestamp.MAX_VALUE;
-  } else if (value < 0) {
-    return Timestamp.fromNumber(-value).negate();
-  } else {
-    return new Timestamp(
-               (value % Timestamp.TWO_PWR_32_DBL_) | 0,
-               (value / Timestamp.TWO_PWR_32_DBL_) | 0);
-  }
-};
-
-/**
- * Returns a Timestamp representing the 64-bit integer that comes by concatenating the given high and low bits. Each is assumed to use 32 bits.
- *
- * @param {Number} lowBits the low 32-bits.
- * @param {Number} highBits the high 32-bits.
- * @return {Timestamp} the corresponding Timestamp value.
- * @api public
- */
-Timestamp.fromBits = function(lowBits, highBits) {
-  return new Timestamp(lowBits, highBits);
-};
-
-/**
- * Returns a Timestamp representation of the given string, written using the given radix.
- *
- * @param {String} str the textual representation of the Timestamp.
- * @param {Number} opt_radix the radix in which the text is written.
- * @return {Timestamp} the corresponding Timestamp value.
- * @api public
- */
-Timestamp.fromString = function(str, opt_radix) {
-  if (str.length == 0) {
-    throw Error('number format error: empty string');
-  }
-
-  var radix = opt_radix || 10;
-  if (radix < 2 || 36 < radix) {
-    throw Error('radix out of range: ' + radix);
-  }
-
-  if (str.charAt(0) == '-') {
-    return Timestamp.fromString(str.substring(1), radix).negate();
-  } else if (str.indexOf('-') >= 0) {
-    throw Error('number format error: interior "-" character: ' + str);
-  }
-
-  // Do several (8) digits each time through the loop, so as to
-  // minimize the calls to the very expensive emulated div.
-  var radixToPower = Timestamp.fromNumber(Math.pow(radix, 8));
-
-  var result = Timestamp.ZERO;
-  for (var i = 0; i < str.length; i += 8) {
-    var size = Math.min(8, str.length - i);
-    var value = parseInt(str.substring(i, i + size), radix);
-    if (size < 8) {
-      var power = Timestamp.fromNumber(Math.pow(radix, size));
-      result = result.multiply(power).add(Timestamp.fromNumber(value));
-    } else {
-      result = result.multiply(radixToPower);
-      result = result.add(Timestamp.fromNumber(value));
-    }
-  }
-  return result;
-};
-
-// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the
-// from* methods on which they depend.
-
-
-/**
- * A cache of the Timestamp representations of small integer values.
- * @type {Object}
- * @api private
- */
-Timestamp.INT_CACHE_ = {};
-
-// NOTE: the compiler should inline these constant values below and then remove
-// these variables, so there should be no runtime penalty for these.
-
-/**
- * Number used repeated below in calculations.  This must appear before the
- * first call to any from* function below.
- * @type {number}
- * @api private
- */
-Timestamp.TWO_PWR_16_DBL_ = 1 << 16;
-
-/**
- * @type {number}
- * @api private
- */
-Timestamp.TWO_PWR_24_DBL_ = 1 << 24;
-
-/**
- * @type {number}
- * @api private
- */
-Timestamp.TWO_PWR_32_DBL_ = Timestamp.TWO_PWR_16_DBL_ * Timestamp.TWO_PWR_16_DBL_;
-
-/**
- * @type {number}
- * @api private
- */
-Timestamp.TWO_PWR_31_DBL_ = Timestamp.TWO_PWR_32_DBL_ / 2;
-
-/**
- * @type {number}
- * @api private
- */
-Timestamp.TWO_PWR_48_DBL_ = Timestamp.TWO_PWR_32_DBL_ * Timestamp.TWO_PWR_16_DBL_;
-
-/**
- * @type {number}
- * @api private
- */
-Timestamp.TWO_PWR_64_DBL_ = Timestamp.TWO_PWR_32_DBL_ * Timestamp.TWO_PWR_32_DBL_;
-
-/**
- * @type {number}
- * @api private
- */
-Timestamp.TWO_PWR_63_DBL_ = Timestamp.TWO_PWR_64_DBL_ / 2;
-
-/** @type {Timestamp} */
-Timestamp.ZERO = Timestamp.fromInt(0);
-
-/** @type {Timestamp} */
-Timestamp.ONE = Timestamp.fromInt(1);
-
-/** @type {Timestamp} */
-Timestamp.NEG_ONE = Timestamp.fromInt(-1);
-
-/** @type {Timestamp} */
-Timestamp.MAX_VALUE =
-    Timestamp.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0);
-
-/** @type {Timestamp} */
-Timestamp.MIN_VALUE = Timestamp.fromBits(0, 0x80000000 | 0);
-
-/**
- * @type {Timestamp}
- * @api private
- */
-Timestamp.TWO_PWR_24_ = Timestamp.fromInt(1 << 24);
-
-/**
- * Expose.
- */
-exports.Timestamp = Timestamp;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/package.json b/web/demos/package/node_modules/mongodb/node_modules/bson/package.json
deleted file mode 100644
index 3deae22..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/package.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "name": "bson",
-  "description": "A bson parser for node.js and the browser",
-  "keywords": [
-    "mongodb",
-    "bson",
-    "parser"
-  ],
-  "version": "0.2.5",
-  "author": {
-    "name": "Christian Amor Kvalheim",
-    "email": "christkv@gmail.com"
-  },
-  "contributors": [],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/mongodb/js-bson.git"
-  },
-  "bugs": {
-    "url": "https://github.com/mongodb/js-bson/issues"
-  },
-  "devDependencies": {
-    "nodeunit": "0.8.2",
-    "gleak": "0.2.3",
-    "one": "2.X.X"
-  },
-  "config": {
-    "native": false
-  },
-  "main": "./lib/bson/index",
-  "directories": {
-    "lib": "./lib/bson"
-  },
-  "engines": {
-    "node": ">=0.6.19"
-  },
-  "scripts": {
-    "install": "(node-gyp rebuild 2> builderror.log) || (exit 0)",
-    "test": "nodeunit ./test/node && TEST_NATIVE=TRUE nodeunit ./test/node"
-  },
-  "browser": "lib/bson/bson.js",
-  "licenses": [
-    {
-      "type": "Apache License, Version 2.0",
-      "url": "http://www.apache.org/licenses/LICENSE-2.0"
-    }
-  ],
-  "readme": "Javascript + C++ BSON parser\n============================\n\nThis BSON parser is primarily meant for usage with the `mongodb` node.js driver. However thanks to such wonderful tools at `onejs` we are able to package up a BSON parser that will work in the browser aswell. The current build is located in the `browser_build/bson.js` file.\n\nA simple example on how to use it\n\n    <head>\n      <script src=\"https://raw.github.com/mongodb/js-bson/master/browser_build/bson.js\">\n      </script>\n    </head>\n    <body onload=\"start();\">\n    <script>\n      function start() {\n        var BSON = bson().BSON;\n        var Long = bson().Long;\n\n        var doc = {long: Long.fromNumber(100)}\n\n        // Serialize a document\n        var data = BSON.serialize(doc, false, true, false);\n        // De serialize it again\n        var doc_2 = BSON.deserialize(data);\n      }\n    </script>\n    </body>\n\n  It's got two simple methods to use in your application.\n\n  * BSON.s
 erialize(object, checkKeys, asBuffer, serializeFunctions)\n     * @param {Object} object the Javascript object to serialize.\n     * @param {Boolean} checkKeys the serializer will check if keys are valid.\n     * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**.\n     * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**\n     * @return {TypedArray/Array} returns a TypedArray or Array depending on what your browser supports\n \n  * BSON.deserialize(buffer, options, isArray)\n     * Options\n       * **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized.\n       * **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse.\n       * **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function.\n     * @param {TypedArray/Array} a TypedArray/Array containing the BSON
  data\n     * @param {Object} [options] additional options used for the deserialization.\n     * @param {Boolean} [isArray] ignore used for recursive parsing.\n     * @return {Object} returns the deserialized Javascript Object.\n",
-  "readmeFilename": "README.md",
-  "homepage": "https://github.com/mongodb/js-bson",
-  "_id": "bson@0.2.5",
-  "dist": {
-    "shasum": "01ce9af4f5f255012d4fa1df23c10a6313d82ccd"
-  },
-  "_from": "bson@0.2.5",
-  "_resolved": "https://registry.npmjs.org/bson/-/bson-0.2.5.tgz"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/tools/gleak.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/tools/gleak.js b/web/demos/package/node_modules/mongodb/node_modules/bson/tools/gleak.js
deleted file mode 100644
index c707cfc..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/tools/gleak.js
+++ /dev/null
@@ -1,21 +0,0 @@
-
-var gleak = require('gleak')();
-gleak.ignore('AssertionError');
-gleak.ignore('testFullSpec_param_found');
-gleak.ignore('events');
-gleak.ignore('Uint8Array');
-gleak.ignore('Uint8ClampedArray');
-gleak.ignore('TAP_Global_Harness');
-gleak.ignore('setImmediate');
-gleak.ignore('clearImmediate');
-
-gleak.ignore('DTRACE_NET_SERVER_CONNECTION');
-gleak.ignore('DTRACE_NET_STREAM_END');
-gleak.ignore('DTRACE_NET_SOCKET_READ');
-gleak.ignore('DTRACE_NET_SOCKET_WRITE');
-gleak.ignore('DTRACE_HTTP_SERVER_REQUEST');
-gleak.ignore('DTRACE_HTTP_SERVER_RESPONSE');
-gleak.ignore('DTRACE_HTTP_CLIENT_REQUEST');
-gleak.ignore('DTRACE_HTTP_CLIENT_RESPONSE');
-
-module.exports = gleak;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/MIT.LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/MIT.LICENSE b/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/MIT.LICENSE
deleted file mode 100644
index 7c435ba..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/MIT.LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2008-2011 Pivotal Labs
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine-html.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine-html.js b/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine-html.js
deleted file mode 100644
index 7383401..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine-html.js
+++ /dev/null
@@ -1,190 +0,0 @@
-jasmine.TrivialReporter = function(doc) {
-  this.document = doc || document;
-  this.suiteDivs = {};
-  this.logRunningSpecs = false;
-};
-
-jasmine.TrivialReporter.prototype.createDom = function(type, attrs, childrenVarArgs) {
-  var el = document.createElement(type);
-
-  for (var i = 2; i < arguments.length; i++) {
-    var child = arguments[i];
-
-    if (typeof child === 'string') {
-      el.appendChild(document.createTextNode(child));
-    } else {
-      if (child) { el.appendChild(child); }
-    }
-  }
-
-  for (var attr in attrs) {
-    if (attr == "className") {
-      el[attr] = attrs[attr];
-    } else {
-      el.setAttribute(attr, attrs[attr]);
-    }
-  }
-
-  return el;
-};
-
-jasmine.TrivialReporter.prototype.reportRunnerStarting = function(runner) {
-  var showPassed, showSkipped;
-
-  this.outerDiv = this.createDom('div', { className: 'jasmine_reporter' },
-      this.createDom('div', { className: 'banner' },
-        this.createDom('div', { className: 'logo' },
-            this.createDom('span', { className: 'title' }, "Jasmine"),
-            this.createDom('span', { className: 'version' }, runner.env.versionString())),
-        this.createDom('div', { className: 'options' },
-            "Show ",
-            showPassed = this.createDom('input', { id: "__jasmine_TrivialReporter_showPassed__", type: 'checkbox' }),
-            this.createDom('label', { "for": "__jasmine_TrivialReporter_showPassed__" }, " passed "),
-            showSkipped = this.createDom('input', { id: "__jasmine_TrivialReporter_showSkipped__", type: 'checkbox' }),
-            this.createDom('label', { "for": "__jasmine_TrivialReporter_showSkipped__" }, " skipped")
-            )
-          ),
-
-      this.runnerDiv = this.createDom('div', { className: 'runner running' },
-          this.createDom('a', { className: 'run_spec', href: '?' }, "run all"),
-          this.runnerMessageSpan = this.createDom('span', {}, "Running..."),
-          this.finishedAtSpan = this.createDom('span', { className: 'finished-at' }, ""))
-      );
-
-  this.document.body.appendChild(this.outerDiv);
-
-  var suites = runner.suites();
-  for (var i = 0; i < suites.length; i++) {
-    var suite = suites[i];
-    var suiteDiv = this.createDom('div', { className: 'suite' },
-        this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, "run"),
-        this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, suite.description));
-    this.suiteDivs[suite.id] = suiteDiv;
-    var parentDiv = this.outerDiv;
-    if (suite.parentSuite) {
-      parentDiv = this.suiteDivs[suite.parentSuite.id];
-    }
-    parentDiv.appendChild(suiteDiv);
-  }
-
-  this.startedAt = new Date();
-
-  var self = this;
-  showPassed.onclick = function(evt) {
-    if (showPassed.checked) {
-      self.outerDiv.className += ' show-passed';
-    } else {
-      self.outerDiv.className = self.outerDiv.className.replace(/ show-passed/, '');
-    }
-  };
-
-  showSkipped.onclick = function(evt) {
-    if (showSkipped.checked) {
-      self.outerDiv.className += ' show-skipped';
-    } else {
-      self.outerDiv.className = self.outerDiv.className.replace(/ show-skipped/, '');
-    }
-  };
-};
-
-jasmine.TrivialReporter.prototype.reportRunnerResults = function(runner) {
-  var results = runner.results();
-  var className = (results.failedCount > 0) ? "runner failed" : "runner passed";
-  this.runnerDiv.setAttribute("class", className);
-  //do it twice for IE
-  this.runnerDiv.setAttribute("className", className);
-  var specs = runner.specs();
-  var specCount = 0;
-  for (var i = 0; i < specs.length; i++) {
-    if (this.specFilter(specs[i])) {
-      specCount++;
-    }
-  }
-  var message = "" + specCount + " spec" + (specCount == 1 ? "" : "s" ) + ", " + results.failedCount + " failure" + ((results.failedCount == 1) ? "" : "s");
-  message += " in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s";
-  this.runnerMessageSpan.replaceChild(this.createDom('a', { className: 'description', href: '?'}, message), this.runnerMessageSpan.firstChild);
-
-  this.finishedAtSpan.appendChild(document.createTextNode("Finished at " + new Date().toString()));
-};
-
-jasmine.TrivialReporter.prototype.reportSuiteResults = function(suite) {
-  var results = suite.results();
-  var status = results.passed() ? 'passed' : 'failed';
-  if (results.totalCount === 0) { // todo: change this to check results.skipped
-    status = 'skipped';
-  }
-  this.suiteDivs[suite.id].className += " " + status;
-};
-
-jasmine.TrivialReporter.prototype.reportSpecStarting = function(spec) {
-  if (this.logRunningSpecs) {
-    this.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...');
-  }
-};
-
-jasmine.TrivialReporter.prototype.reportSpecResults = function(spec) {
-  var results = spec.results();
-  var status = results.passed() ? 'passed' : 'failed';
-  if (results.skipped) {
-    status = 'skipped';
-  }
-  var specDiv = this.createDom('div', { className: 'spec '  + status },
-      this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(spec.getFullName()) }, "run"),
-      this.createDom('a', {
-        className: 'description',
-        href: '?spec=' + encodeURIComponent(spec.getFullName()),
-        title: spec.getFullName()
-      }, spec.description));
-
-
-  var resultItems = results.getItems();
-  var messagesDiv = this.createDom('div', { className: 'messages' });
-  for (var i = 0; i < resultItems.length; i++) {
-    var result = resultItems[i];
-
-    if (result.type == 'log') {
-      messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString()));
-    } else if (result.type == 'expect' && result.passed && !result.passed()) {
-      messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message));
-
-      if (result.trace.stack) {
-        messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack));
-      }
-    }
-  }
-
-  if (messagesDiv.childNodes.length > 0) {
-    specDiv.appendChild(messagesDiv);
-  }
-
-  this.suiteDivs[spec.suite.id].appendChild(specDiv);
-};
-
-jasmine.TrivialReporter.prototype.log = function() {
-  var console = jasmine.getGlobal().console;
-  if (console && console.log) {
-    if (console.log.apply) {
-      console.log.apply(console, arguments);
-    } else {
-      console.log(arguments); // ie fix: console.log.apply doesn't exist on ie
-    }
-  }
-};
-
-jasmine.TrivialReporter.prototype.getLocation = function() {
-  return this.document.location;
-};
-
-jasmine.TrivialReporter.prototype.specFilter = function(spec) {
-  var paramMap = {};
-  var params = this.getLocation().search.substring(1).split('&');
-  for (var i = 0; i < params.length; i++) {
-    var p = params[i].split('=');
-    paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
-  }
-
-  if (!paramMap.spec) {
-    return true;
-  }
-  return spec.getFullName().indexOf(paramMap.spec) === 0;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.css
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.css b/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.css
deleted file mode 100644
index 6583fe7c..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.css
+++ /dev/null
@@ -1,166 +0,0 @@
-body {
-  font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif;
-}
-
-
-.jasmine_reporter a:visited, .jasmine_reporter a {
-  color: #303; 
-}
-
-.jasmine_reporter a:hover, .jasmine_reporter a:active {
-  color: blue; 
-}
-
-.run_spec {
-  float:right;
-  padding-right: 5px;
-  font-size: .8em;
-  text-decoration: none;
-}
-
-.jasmine_reporter {
-  margin: 0 5px;
-}
-
-.banner {
-  color: #303;
-  background-color: #fef;
-  padding: 5px;
-}
-
-.logo {
-  float: left;
-  font-size: 1.1em;
-  padding-left: 5px;
-}
-
-.logo .version {
-  font-size: .6em;
-  padding-left: 1em;
-}
-
-.runner.running {
-  background-color: yellow;
-}
-
-
-.options {
-  text-align: right;
-  font-size: .8em;
-}
-
-
-
-
-.suite {
-  border: 1px outset gray;
-  margin: 5px 0;
-  padding-left: 1em;
-}
-
-.suite .suite {
-  margin: 5px; 
-}
-
-.suite.passed {
-  background-color: #dfd;
-}
-
-.suite.failed {
-  background-color: #fdd;
-}
-
-.spec {
-  margin: 5px;
-  padding-left: 1em;
-  clear: both;
-}
-
-.spec.failed, .spec.passed, .spec.skipped {
-  padding-bottom: 5px;
-  border: 1px solid gray;
-}
-
-.spec.failed {
-  background-color: #fbb;
-  border-color: red;
-}
-
-.spec.passed {
-  background-color: #bfb;
-  border-color: green;
-}
-
-.spec.skipped {
-  background-color: #bbb;
-}
-
-.messages {
-  border-left: 1px dashed gray;
-  padding-left: 1em;
-  padding-right: 1em;
-}
-
-.passed {
-  background-color: #cfc;
-  display: none;
-}
-
-.failed {
-  background-color: #fbb;
-}
-
-.skipped {
-  color: #777;
-  background-color: #eee;
-  display: none;
-}
-
-
-/*.resultMessage {*/
-  /*white-space: pre;*/
-/*}*/
-
-.resultMessage span.result {
-  display: block;
-  line-height: 2em;
-  color: black;
-}
-
-.resultMessage .mismatch {
-  color: black;
-}
-
-.stackTrace {
-  white-space: pre;
-  font-size: .8em;
-  margin-left: 10px;
-  max-height: 5em;
-  overflow: auto;
-  border: 1px inset red;
-  padding: 1em;
-  background: #eef;
-}
-
-.finished-at {
-  padding-left: 1em;
-  font-size: .6em;
-}
-
-.show-passed .passed,
-.show-skipped .skipped {
-  display: block;
-}
-
-
-#jasmine_content {
-  position:fixed;
-  right: 100%;
-}
-
-.runner {
-  border: 1px solid gray;
-  display: block;
-  margin: 5px 0;
-  padding: 2px 0 2px 10px;
-}


[08/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/browser_build/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/browser_build/package.json b/web/demos/package/node_modules/mongodb/node_modules/bson/browser_build/package.json
deleted file mode 100644
index 3ebb587..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/browser_build/package.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{ "name" :            "bson"
-, "description" :     "A bson parser for node.js and the browser"
-, "main":             "../lib/bson/bson"
-, "directories" :   { "lib" : "../lib/bson" }
-, "engines" :       { "node" : ">=0.6.0" }
-, "licenses" :    [ { "type" :  "Apache License, Version 2.0"
-                    , "url" :   "http://www.apache.org/licenses/LICENSE-2.0" } ]
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/build/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/build/Makefile b/web/demos/package/node_modules/mongodb/node_modules/bson/build/Makefile
deleted file mode 100644
index 56ec7ba..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/build/Makefile
+++ /dev/null
@@ -1,350 +0,0 @@
-# We borrow heavily from the kernel build setup, though we are simpler since
-# we don't have Kconfig tweaking settings on us.
-
-# The implicit make rules have it looking for RCS files, among other things.
-# We instead explicitly write all the rules we care about.
-# It's even quicker (saves ~200ms) to pass -r on the command line.
-MAKEFLAGS=-r
-
-# The source directory tree.
-srcdir := ..
-abs_srcdir := $(abspath $(srcdir))
-
-# The name of the builddir.
-builddir_name ?= .
-
-# The V=1 flag on command line makes us verbosely print command lines.
-ifdef V
-  quiet=
-else
-  quiet=quiet_
-endif
-
-# Specify BUILDTYPE=Release on the command line for a release build.
-BUILDTYPE ?= Release
-
-# Directory all our build output goes into.
-# Note that this must be two directories beneath src/ for unit tests to pass,
-# as they reach into the src/ directory for data with relative paths.
-builddir ?= $(builddir_name)/$(BUILDTYPE)
-abs_builddir := $(abspath $(builddir))
-depsdir := $(builddir)/.deps
-
-# Object output directory.
-obj := $(builddir)/obj
-abs_obj := $(abspath $(obj))
-
-# We build up a list of every single one of the targets so we can slurp in the
-# generated dependency rule Makefiles in one pass.
-all_deps :=
-
-
-
-CC.target ?= $(CC)
-CFLAGS.target ?= $(CFLAGS)
-CXX.target ?= $(CXX)
-CXXFLAGS.target ?= $(CXXFLAGS)
-LINK.target ?= $(LINK)
-LDFLAGS.target ?= $(LDFLAGS)
-AR.target ?= $(AR)
-
-# C++ apps need to be linked with g++.
-#
-# Note: flock is used to seralize linking. Linking is a memory-intensive
-# process so running parallel links can often lead to thrashing.  To disable
-# the serialization, override LINK via an envrionment variable as follows:
-#
-#   export LINK=g++
-#
-# This will allow make to invoke N linker processes as specified in -jN.
-LINK ?= ./gyp-mac-tool flock $(builddir)/linker.lock $(CXX.target)
-
-# TODO(evan): move all cross-compilation logic to gyp-time so we don't need
-# to replicate this environment fallback in make as well.
-CC.host ?= gcc
-CFLAGS.host ?=
-CXX.host ?= g++
-CXXFLAGS.host ?=
-LINK.host ?= $(CXX.host)
-LDFLAGS.host ?=
-AR.host ?= ar
-
-# Define a dir function that can handle spaces.
-# http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions
-# "leading spaces cannot appear in the text of the first argument as written.
-# These characters can be put into the argument value by variable substitution."
-empty :=
-space := $(empty) $(empty)
-
-# http://stackoverflow.com/questions/1189781/using-make-dir-or-notdir-on-a-path-with-spaces
-replace_spaces = $(subst $(space),?,$1)
-unreplace_spaces = $(subst ?,$(space),$1)
-dirx = $(call unreplace_spaces,$(dir $(call replace_spaces,$1)))
-
-# Flags to make gcc output dependency info.  Note that you need to be
-# careful here to use the flags that ccache and distcc can understand.
-# We write to a dep file on the side first and then rename at the end
-# so we can't end up with a broken dep file.
-depfile = $(depsdir)/$(call replace_spaces,$@).d
-DEPFLAGS = -MMD -MF $(depfile).raw
-
-# We have to fixup the deps output in a few ways.
-# (1) the file output should mention the proper .o file.
-# ccache or distcc lose the path to the target, so we convert a rule of
-# the form:
-#   foobar.o: DEP1 DEP2
-# into
-#   path/to/foobar.o: DEP1 DEP2
-# (2) we want missing files not to cause us to fail to build.
-# We want to rewrite
-#   foobar.o: DEP1 DEP2 \
-#               DEP3
-# to
-#   DEP1:
-#   DEP2:
-#   DEP3:
-# so if the files are missing, they're just considered phony rules.
-# We have to do some pretty insane escaping to get those backslashes
-# and dollar signs past make, the shell, and sed at the same time.
-# Doesn't work with spaces, but that's fine: .d files have spaces in
-# their names replaced with other characters.
-define fixup_dep
-# The depfile may not exist if the input file didn't have any #includes.
-touch $(depfile).raw
-# Fixup path as in (1).
-sed -e "s|^$(notdir $@)|$@|" $(depfile).raw >> $(depfile)
-# Add extra rules as in (2).
-# We remove slashes and replace spaces with new lines;
-# remove blank lines;
-# delete the first line and append a colon to the remaining lines.
-sed -e 's|\\||' -e 'y| |\n|' $(depfile).raw |\
-  grep -v '^$$'                             |\
-  sed -e 1d -e 's|$$|:|'                     \
-    >> $(depfile)
-rm $(depfile).raw
-endef
-
-# Command definitions:
-# - cmd_foo is the actual command to run;
-# - quiet_cmd_foo is the brief-output summary of the command.
-
-quiet_cmd_cc = CC($(TOOLSET)) $@
-cmd_cc = $(CC.$(TOOLSET)) $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c -o $@ $<
-
-quiet_cmd_cxx = CXX($(TOOLSET)) $@
-cmd_cxx = $(CXX.$(TOOLSET)) $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $<
-
-quiet_cmd_objc = CXX($(TOOLSET)) $@
-cmd_objc = $(CC.$(TOOLSET)) $(GYP_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $<
-
-quiet_cmd_objcxx = CXX($(TOOLSET)) $@
-cmd_objcxx = $(CXX.$(TOOLSET)) $(GYP_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $<
-
-# Commands for precompiled header files.
-quiet_cmd_pch_c = CXX($(TOOLSET)) $@
-cmd_pch_c = $(CC.$(TOOLSET)) $(GYP_PCH_CFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $<
-quiet_cmd_pch_cc = CXX($(TOOLSET)) $@
-cmd_pch_cc = $(CC.$(TOOLSET)) $(GYP_PCH_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $<
-quiet_cmd_pch_m = CXX($(TOOLSET)) $@
-cmd_pch_m = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $<
-quiet_cmd_pch_mm = CXX($(TOOLSET)) $@
-cmd_pch_mm = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $<
-
-# gyp-mac-tool is written next to the root Makefile by gyp.
-# Use $(4) for the command, since $(2) and $(3) are used as flag by do_cmd
-# already.
-quiet_cmd_mac_tool = MACTOOL $(4) $<
-cmd_mac_tool = ./gyp-mac-tool $(4) $< "$@"
-
-quiet_cmd_mac_package_framework = PACKAGE FRAMEWORK $@
-cmd_mac_package_framework = ./gyp-mac-tool package-framework "$@" $(4)
-
-quiet_cmd_infoplist = INFOPLIST $@
-cmd_infoplist = $(CC.$(TOOLSET)) -E -P -Wno-trigraphs -x c $(INFOPLIST_DEFINES) "$<" -o "$@"
-
-quiet_cmd_touch = TOUCH $@
-cmd_touch = touch $@
-
-quiet_cmd_copy = COPY $@
-# send stderr to /dev/null to ignore messages when linking directories.
-cmd_copy = rm -rf "$@" && cp -af "$<" "$@"
-
-quiet_cmd_alink = LIBTOOL-STATIC $@
-cmd_alink = rm -f $@ && ./gyp-mac-tool filter-libtool libtool $(GYP_LIBTOOLFLAGS) -static -o $@ $(filter %.o,$^)
-
-quiet_cmd_link = LINK($(TOOLSET)) $@
-cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS)
-
-quiet_cmd_solink = SOLINK($(TOOLSET)) $@
-cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS)
-
-quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@
-cmd_solink_module = $(LINK.$(TOOLSET)) -bundle $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS)
-
-
-# Define an escape_quotes function to escape single quotes.
-# This allows us to handle quotes properly as long as we always use
-# use single quotes and escape_quotes.
-escape_quotes = $(subst ','\'',$(1))
-# This comment is here just to include a ' to unconfuse syntax highlighting.
-# Define an escape_vars function to escape '$' variable syntax.
-# This allows us to read/write command lines with shell variables (e.g.
-# $LD_LIBRARY_PATH), without triggering make substitution.
-escape_vars = $(subst $$,$$$$,$(1))
-# Helper that expands to a shell command to echo a string exactly as it is in
-# make. This uses printf instead of echo because printf's behaviour with respect
-# to escape sequences is more portable than echo's across different shells
-# (e.g., dash, bash).
-exact_echo = printf '%s\n' '$(call escape_quotes,$(1))'
-
-# Helper to compare the command we're about to run against the command
-# we logged the last time we ran the command.  Produces an empty
-# string (false) when the commands match.
-# Tricky point: Make has no string-equality test function.
-# The kernel uses the following, but it seems like it would have false
-# positives, where one string reordered its arguments.
-#   arg_check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \
-#                       $(filter-out $(cmd_$@), $(cmd_$(1))))
-# We instead substitute each for the empty string into the other, and
-# say they're equal if both substitutions produce the empty string.
-# .d files contain ? instead of spaces, take that into account.
-command_changed = $(or $(subst $(cmd_$(1)),,$(cmd_$(call replace_spaces,$@))),\
-                       $(subst $(cmd_$(call replace_spaces,$@)),,$(cmd_$(1))))
-
-# Helper that is non-empty when a prerequisite changes.
-# Normally make does this implicitly, but we force rules to always run
-# so we can check their command lines.
-#   $? -- new prerequisites
-#   $| -- order-only dependencies
-prereq_changed = $(filter-out FORCE_DO_CMD,$(filter-out $|,$?))
-
-# Helper that executes all postbuilds until one fails.
-define do_postbuilds
-  @E=0;\
-  for p in $(POSTBUILDS); do\
-    eval $$p;\
-    E=$$?;\
-    if [ $$E -ne 0 ]; then\
-      break;\
-    fi;\
-  done;\
-  if [ $$E -ne 0 ]; then\
-    rm -rf "$@";\
-    exit $$E;\
-  fi
-endef
-
-# do_cmd: run a command via the above cmd_foo names, if necessary.
-# Should always run for a given target to handle command-line changes.
-# Second argument, if non-zero, makes it do asm/C/C++ dependency munging.
-# Third argument, if non-zero, makes it do POSTBUILDS processing.
-# Note: We intentionally do NOT call dirx for depfile, since it contains ? for
-# spaces already and dirx strips the ? characters.
-define do_cmd
-$(if $(or $(command_changed),$(prereq_changed)),
-  @$(call exact_echo,  $($(quiet)cmd_$(1)))
-  @mkdir -p "$(call dirx,$@)" "$(dir $(depfile))"
-  $(if $(findstring flock,$(word 2,$(cmd_$1))),
-    @$(cmd_$(1))
-    @echo "  $(quiet_cmd_$(1)): Finished",
-    @$(cmd_$(1))
-  )
-  @$(call exact_echo,$(call escape_vars,cmd_$(call replace_spaces,$@) := $(cmd_$(1)))) > $(depfile)
-  @$(if $(2),$(fixup_dep))
-  $(if $(and $(3), $(POSTBUILDS)),
-    $(call do_postbuilds)
-  )
-)
-endef
-
-# Declare the "all" target first so it is the default,
-# even though we don't have the deps yet.
-.PHONY: all
-all:
-
-# make looks for ways to re-generate included makefiles, but in our case, we
-# don't have a direct way. Explicitly telling make that it has nothing to do
-# for them makes it go faster.
-%.d: ;
-
-# Use FORCE_DO_CMD to force a target to run.  Should be coupled with
-# do_cmd.
-.PHONY: FORCE_DO_CMD
-FORCE_DO_CMD:
-
-TOOLSET := target
-# Suffix rules, putting all outputs into $(obj).
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.c FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cpp FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cxx FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.m FORCE_DO_CMD
-	@$(call do_cmd,objc,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.mm FORCE_DO_CMD
-	@$(call do_cmd,objcxx,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.S FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-$(obj).$(TOOLSET)/%.o: $(srcdir)/%.s FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-
-# Try building from generated source, too.
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cpp FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cxx FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.m FORCE_DO_CMD
-	@$(call do_cmd,objc,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.mm FORCE_DO_CMD
-	@$(call do_cmd,objcxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.S FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.s FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-
-$(obj).$(TOOLSET)/%.o: $(obj)/%.c FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.cc FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.cpp FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.cxx FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.m FORCE_DO_CMD
-	@$(call do_cmd,objc,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.mm FORCE_DO_CMD
-	@$(call do_cmd,objcxx,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.S FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-$(obj).$(TOOLSET)/%.o: $(obj)/%.s FORCE_DO_CMD
-	@$(call do_cmd,cc,1)
-
-
-ifeq ($(strip $(foreach prefix,$(NO_LOAD),\
-    $(findstring $(join ^,$(prefix)),\
-                 $(join ^,bson.target.mk)))),)
-  include bson.target.mk
-endif
-
-quiet_cmd_regen_makefile = ACTION Regenerating $@
-cmd_regen_makefile = cd $(srcdir); /usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "--toplevel-dir=." -I/Users/nick/github/malharwebapps/webapps/package/node_modules/mongodb/node_modules/bson/build/config.gypi -I/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/Users/nick/.node-gyp/0.10.24/common.gypi "--depth=." "-Goutput_dir=." "--generator-output=build" "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/nick/.node-gyp/0.10.24" "-Dmodule_root_dir=/Users/nick/github/malharwebapps/webapps/package/node_modules/mongodb/node_modules/bson" binding.gyp
-Makefile: $(srcdir)/../../../../../../../../.node-gyp/0.10.24/common.gypi $(srcdir)/build/config.gypi $(srcdir)/binding.gyp $(srcdir)/../../../../../../../../../../usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi
-	$(call do_cmd,regen_makefile)
-
-# "all" is a concatenation of the "all" targets from all the included
-# sub-makefiles. This is just here to clarify.
-all:
-
-# Add in dependency-tracking rules.  $(all_deps) is the list of every single
-# target in our tree. Only consider the ones with .d (dependency) info:
-d_files := $(wildcard $(foreach f,$(all_deps),$(depsdir)/$(f).d))
-ifneq ($(d_files),)
-  include $(d_files)
-endif

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/.deps/Release/bson.node.d
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/.deps/Release/bson.node.d b/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/.deps/Release/bson.node.d
deleted file mode 100644
index b3465a6..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/.deps/Release/bson.node.d
+++ /dev/null
@@ -1 +0,0 @@
-cmd_Release/bson.node := ./gyp-mac-tool flock ./Release/linker.lock c++ -bundle -Wl,-search_paths_first -mmacosx-version-min=10.5 -arch x86_64 -L./Release  -o Release/bson.node Release/obj.target/bson/ext/bson.o -undefined dynamic_lookup

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/.deps/Release/obj.target/bson/ext/bson.o.d
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/.deps/Release/obj.target/bson/ext/bson.o.d b/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/.deps/Release/obj.target/bson/ext/bson.o.d
deleted file mode 100644
index c4a64f5..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/.deps/Release/obj.target/bson/ext/bson.o.d
+++ /dev/null
@@ -1,26 +0,0 @@
-cmd_Release/obj.target/bson/ext/bson.o := c++ '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/Users/nick/.node-gyp/0.10.24/src -I/Users/nick/.node-gyp/0.10.24/deps/uv/include -I/Users/nick/.node-gyp/0.10.24/deps/v8/include  -Os -gdwarf-2 -mmacosx-version-min=10.5 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-rtti -fno-threadsafe-statics -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/bson/ext/bson.o.d.raw  -c -o Release/obj.target/bson/ext/bson.o ../ext/bson.cc
-Release/obj.target/bson/ext/bson.o: ../ext/bson.cc \
-  /Users/nick/.node-gyp/0.10.24/deps/v8/include/v8.h \
-  /Users/nick/.node-gyp/0.10.24/deps/v8/include/v8stdint.h \
-  /Users/nick/.node-gyp/0.10.24/src/node.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-unix.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/ngx-queue.h \
-  /Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-darwin.h \
-  /Users/nick/.node-gyp/0.10.24/src/node_object_wrap.h \
-  /Users/nick/.node-gyp/0.10.24/src/node_version.h \
-  /Users/nick/.node-gyp/0.10.24/src/node_buffer.h ../ext/bson.h \
-  ../ext/nan.h
-../ext/bson.cc:
-/Users/nick/.node-gyp/0.10.24/deps/v8/include/v8.h:
-/Users/nick/.node-gyp/0.10.24/deps/v8/include/v8stdint.h:
-/Users/nick/.node-gyp/0.10.24/src/node.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-unix.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/ngx-queue.h:
-/Users/nick/.node-gyp/0.10.24/deps/uv/include/uv-private/uv-darwin.h:
-/Users/nick/.node-gyp/0.10.24/src/node_object_wrap.h:
-/Users/nick/.node-gyp/0.10.24/src/node_version.h:
-/Users/nick/.node-gyp/0.10.24/src/node_buffer.h:
-../ext/bson.h:
-../ext/nan.h:

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/bson.node
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/bson.node b/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/bson.node
deleted file mode 100755
index acaf70d..0000000
Binary files a/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/bson.node and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/linker.lock
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/linker.lock b/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/linker.lock
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/obj.target/bson/ext/bson.o
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/obj.target/bson/ext/bson.o b/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/obj.target/bson/ext/bson.o
deleted file mode 100644
index 4b20985..0000000
Binary files a/web/demos/package/node_modules/mongodb/node_modules/bson/build/Release/obj.target/bson/ext/bson.o and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/build/binding.Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/build/binding.Makefile b/web/demos/package/node_modules/mongodb/node_modules/bson/build/binding.Makefile
deleted file mode 100644
index 90bf824..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/build/binding.Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file is generated by gyp; do not edit.
-
-export builddir_name ?= build/./.
-.PHONY: all
-all:
-	$(MAKE) bson

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/build/bson.target.mk
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/build/bson.target.mk b/web/demos/package/node_modules/mongodb/node_modules/bson/build/bson.target.mk
deleted file mode 100644
index 41c7c8e..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/build/bson.target.mk
+++ /dev/null
@@ -1,152 +0,0 @@
-# This file is generated by gyp; do not edit.
-
-TOOLSET := target
-TARGET := bson
-DEFS_Debug := \
-	'-D_DARWIN_USE_64_BIT_INODE=1' \
-	'-D_LARGEFILE_SOURCE' \
-	'-D_FILE_OFFSET_BITS=64' \
-	'-DBUILDING_NODE_EXTENSION' \
-	'-DDEBUG' \
-	'-D_DEBUG'
-
-# Flags passed to all source files.
-CFLAGS_Debug := \
-	-O0 \
-	-gdwarf-2 \
-	-mmacosx-version-min=10.5 \
-	-arch x86_64 \
-	-Wall \
-	-Wendif-labels \
-	-W \
-	-Wno-unused-parameter
-
-# Flags passed to only C files.
-CFLAGS_C_Debug := \
-	-fno-strict-aliasing
-
-# Flags passed to only C++ files.
-CFLAGS_CC_Debug := \
-	-fno-rtti \
-	-fno-threadsafe-statics \
-	-fno-strict-aliasing
-
-# Flags passed to only ObjC files.
-CFLAGS_OBJC_Debug :=
-
-# Flags passed to only ObjC++ files.
-CFLAGS_OBJCC_Debug :=
-
-INCS_Debug := \
-	-I/Users/nick/.node-gyp/0.10.24/src \
-	-I/Users/nick/.node-gyp/0.10.24/deps/uv/include \
-	-I/Users/nick/.node-gyp/0.10.24/deps/v8/include
-
-DEFS_Release := \
-	'-D_DARWIN_USE_64_BIT_INODE=1' \
-	'-D_LARGEFILE_SOURCE' \
-	'-D_FILE_OFFSET_BITS=64' \
-	'-DBUILDING_NODE_EXTENSION'
-
-# Flags passed to all source files.
-CFLAGS_Release := \
-	-Os \
-	-gdwarf-2 \
-	-mmacosx-version-min=10.5 \
-	-arch x86_64 \
-	-Wall \
-	-Wendif-labels \
-	-W \
-	-Wno-unused-parameter
-
-# Flags passed to only C files.
-CFLAGS_C_Release := \
-	-fno-strict-aliasing
-
-# Flags passed to only C++ files.
-CFLAGS_CC_Release := \
-	-fno-rtti \
-	-fno-threadsafe-statics \
-	-fno-strict-aliasing
-
-# Flags passed to only ObjC files.
-CFLAGS_OBJC_Release :=
-
-# Flags passed to only ObjC++ files.
-CFLAGS_OBJCC_Release :=
-
-INCS_Release := \
-	-I/Users/nick/.node-gyp/0.10.24/src \
-	-I/Users/nick/.node-gyp/0.10.24/deps/uv/include \
-	-I/Users/nick/.node-gyp/0.10.24/deps/v8/include
-
-OBJS := \
-	$(obj).target/$(TARGET)/ext/bson.o
-
-# Add to the list of files we specially track dependencies for.
-all_deps += $(OBJS)
-
-# CFLAGS et al overrides must be target-local.
-# See "Target-specific Variable Values" in the GNU Make manual.
-$(OBJS): TOOLSET := $(TOOLSET)
-$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE))  $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE))
-$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE))  $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE))
-$(OBJS): GYP_OBJCFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE))  $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE))
-$(OBJS): GYP_OBJCXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE))  $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE))
-
-# Suffix rules, putting all outputs into $(obj).
-
-$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-
-# Try building from generated source, too.
-
-$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-
-$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cc FORCE_DO_CMD
-	@$(call do_cmd,cxx,1)
-
-# End of this set of suffix rules
-### Rules for final target.
-LDFLAGS_Debug := \
-	-Wl,-search_paths_first \
-	-mmacosx-version-min=10.5 \
-	-arch x86_64 \
-	-L$(builddir)
-
-LIBTOOLFLAGS_Debug := \
-	-Wl,-search_paths_first
-
-LDFLAGS_Release := \
-	-Wl,-search_paths_first \
-	-mmacosx-version-min=10.5 \
-	-arch x86_64 \
-	-L$(builddir)
-
-LIBTOOLFLAGS_Release := \
-	-Wl,-search_paths_first
-
-LIBS := \
-	-undefined dynamic_lookup
-
-$(builddir)/bson.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE))
-$(builddir)/bson.node: LIBS := $(LIBS)
-$(builddir)/bson.node: GYP_LIBTOOLFLAGS := $(LIBTOOLFLAGS_$(BUILDTYPE))
-$(builddir)/bson.node: TOOLSET := $(TOOLSET)
-$(builddir)/bson.node: $(OBJS) FORCE_DO_CMD
-	$(call do_cmd,solink_module)
-
-all_deps += $(builddir)/bson.node
-# Add target alias
-.PHONY: bson
-bson: $(builddir)/bson.node
-
-# Short alias for building this executable.
-.PHONY: bson.node
-bson.node: $(builddir)/bson.node
-
-# Add executable to "all" target.
-.PHONY: all
-all: $(builddir)/bson.node
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/build/config.gypi
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/build/config.gypi b/web/demos/package/node_modules/mongodb/node_modules/bson/build/config.gypi
deleted file mode 100644
index 02cd216..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/build/config.gypi
+++ /dev/null
@@ -1,113 +0,0 @@
-# Do not edit. File was generated by node-gyp's "configure" step
-{
-  "target_defaults": {
-    "cflags": [],
-    "default_configuration": "Release",
-    "defines": [],
-    "include_dirs": [],
-    "libraries": []
-  },
-  "variables": {
-    "clang": 1,
-    "host_arch": "x64",
-    "node_install_npm": "true",
-    "node_prefix": "",
-    "node_shared_cares": "false",
-    "node_shared_http_parser": "false",
-    "node_shared_libuv": "false",
-    "node_shared_openssl": "false",
-    "node_shared_v8": "false",
-    "node_shared_zlib": "false",
-    "node_tag": "",
-    "node_unsafe_optimizations": 0,
-    "node_use_dtrace": "true",
-    "node_use_etw": "false",
-    "node_use_openssl": "true",
-    "node_use_perfctr": "false",
-    "python": "/usr/bin/python",
-    "target_arch": "x64",
-    "v8_enable_gdbjit": 0,
-    "v8_no_strict_aliasing": 1,
-    "v8_use_snapshot": "false",
-    "nodedir": "/Users/nick/.node-gyp/0.10.24",
-    "copy_dev_lib": "true",
-    "standalone_static_library": 1,
-    "save_dev": "",
-    "browser": "",
-    "viewer": "man",
-    "rollback": "true",
-    "usage": "",
-    "globalignorefile": "/usr/local/etc/npmignore",
-    "init_author_url": "",
-    "shell": "/bin/bash",
-    "parseable": "",
-    "shrinkwrap": "true",
-    "email": "",
-    "init_license": "ISC",
-    "cache_max": "null",
-    "init_author_email": "",
-    "sign_git_tag": "",
-    "cert": "",
-    "git_tag_version": "true",
-    "local_address": "",
-    "long": "",
-    "registry": "https://registry.npmjs.org/",
-    "fetch_retries": "2",
-    "npat": "",
-    "key": "",
-    "message": "%s",
-    "versions": "",
-    "globalconfig": "/usr/local/etc/npmrc",
-    "always_auth": "",
-    "cache_lock_retries": "10",
-    "heading": "npm",
-    "fetch_retry_mintimeout": "10000",
-    "proprietary_attribs": "true",
-    "json": "",
-    "description": "true",
-    "engine_strict": "",
-    "https_proxy": "",
-    "init_module": "/Users/nick/.npm-init.js",
-    "userconfig": "/Users/nick/.npmrc",
-    "node_version": "v0.10.24",
-    "user": "",
-    "editor": "vi",
-    "save": "",
-    "tag": "latest",
-    "global": "",
-    "optional": "true",
-    "username": "",
-    "bin_links": "true",
-    "force": "",
-    "searchopts": "",
-    "depth": "null",
-    "rebuild_bundle": "true",
-    "searchsort": "name",
-    "unicode": "true",
-    "fetch_retry_maxtimeout": "60000",
-    "strict_ssl": "true",
-    "dev": "",
-    "fetch_retry_factor": "10",
-    "group": "20",
-    "cache_lock_stale": "60000",
-    "version": "",
-    "cache_min": "10",
-    "cache": "/Users/nick/.npm",
-    "searchexclude": "",
-    "color": "true",
-    "save_optional": "",
-    "ignore_scripts": "",
-    "user_agent": "node/v0.10.24 darwin x64",
-    "cache_lock_wait": "10000",
-    "production": "true",
-    "save_bundle": "",
-    "umask": "18",
-    "git": "git",
-    "init_author_name": "",
-    "onload_script": "",
-    "tmp": "/var/folders/xt/30wz0tn505j5ksg84l_d76jw0000gn/T/",
-    "unsafe_perm": "true",
-    "link": "",
-    "prefix": "/usr/local"
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/build/gyp-mac-tool
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/build/gyp-mac-tool b/web/demos/package/node_modules/mongodb/node_modules/bson/build/gyp-mac-tool
deleted file mode 100755
index 12edee9..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/build/gyp-mac-tool
+++ /dev/null
@@ -1,265 +0,0 @@
-#!/usr/bin/env python
-# Generated by gyp. Do not edit.
-# Copyright (c) 2012 Google Inc. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Utility functions to perform Xcode-style build steps.
-
-These functions are executed via gyp-mac-tool when using the Makefile generator.
-"""
-
-import fcntl
-import json
-import os
-import plistlib
-import re
-import shutil
-import string
-import subprocess
-import sys
-
-
-def main(args):
-  executor = MacTool()
-  exit_code = executor.Dispatch(args)
-  if exit_code is not None:
-    sys.exit(exit_code)
-
-
-class MacTool(object):
-  """This class performs all the Mac tooling steps. The methods can either be
-  executed directly, or dispatched from an argument list."""
-
-  def Dispatch(self, args):
-    """Dispatches a string command to a method."""
-    if len(args) < 1:
-      raise Exception("Not enough arguments")
-
-    method = "Exec%s" % self._CommandifyName(args[0])
-    return getattr(self, method)(*args[1:])
-
-  def _CommandifyName(self, name_string):
-    """Transforms a tool name like copy-info-plist to CopyInfoPlist"""
-    return name_string.title().replace('-', '')
-
-  def ExecCopyBundleResource(self, source, dest):
-    """Copies a resource file to the bundle/Resources directory, performing any
-    necessary compilation on each resource."""
-    extension = os.path.splitext(source)[1].lower()
-    if os.path.isdir(source):
-      # Copy tree.
-      # TODO(thakis): This copies file attributes like mtime, while the
-      # single-file branch below doesn't. This should probably be changed to
-      # be consistent with the single-file branch.
-      if os.path.exists(dest):
-        shutil.rmtree(dest)
-      shutil.copytree(source, dest)
-    elif extension == '.xib':
-      return self._CopyXIBFile(source, dest)
-    elif extension == '.storyboard':
-      return self._CopyXIBFile(source, dest)
-    elif extension == '.strings':
-      self._CopyStringsFile(source, dest)
-    else:
-      shutil.copy(source, dest)
-
-  def _CopyXIBFile(self, source, dest):
-    """Compiles a XIB file with ibtool into a binary plist in the bundle."""
-
-    # ibtool sometimes crashes with relative paths. See crbug.com/314728.
-    base = os.path.dirname(os.path.realpath(__file__))
-    if os.path.relpath(source):
-      source = os.path.join(base, source)
-    if os.path.relpath(dest):
-      dest = os.path.join(base, dest)
-
-    args = ['xcrun', 'ibtool', '--errors', '--warnings', '--notices',
-        '--output-format', 'human-readable-text', '--compile', dest, source]
-    ibtool_section_re = re.compile(r'/\*.*\*/')
-    ibtool_re = re.compile(r'.*note:.*is clipping its content')
-    ibtoolout = subprocess.Popen(args, stdout=subprocess.PIPE)
-    current_section_header = None
-    for line in ibtoolout.stdout:
-      if ibtool_section_re.match(line):
-        current_section_header = line
-      elif not ibtool_re.match(line):
-        if current_section_header:
-          sys.stdout.write(current_section_header)
-          current_section_header = None
-        sys.stdout.write(line)
-    return ibtoolout.returncode
-
-  def _CopyStringsFile(self, source, dest):
-    """Copies a .strings file using iconv to reconvert the input into UTF-16."""
-    input_code = self._DetectInputEncoding(source) or "UTF-8"
-
-    # Xcode's CpyCopyStringsFile / builtin-copyStrings seems to call
-    # CFPropertyListCreateFromXMLData() behind the scenes; at least it prints
-    #     CFPropertyListCreateFromXMLData(): Old-style plist parser: missing
-    #     semicolon in dictionary.
-    # on invalid files. Do the same kind of validation.
-    import CoreFoundation
-    s = open(source, 'rb').read()
-    d = CoreFoundation.CFDataCreate(None, s, len(s))
-    _, error = CoreFoundation.CFPropertyListCreateFromXMLData(None, d, 0, None)
-    if error:
-      return
-
-    fp = open(dest, 'wb')
-    fp.write(s.decode(input_code).encode('UTF-16'))
-    fp.close()
-
-  def _DetectInputEncoding(self, file_name):
-    """Reads the first few bytes from file_name and tries to guess the text
-    encoding. Returns None as a guess if it can't detect it."""
-    fp = open(file_name, 'rb')
-    try:
-      header = fp.read(3)
-    except e:
-      fp.close()
-      return None
-    fp.close()
-    if header.startswith("\xFE\xFF"):
-      return "UTF-16"
-    elif header.startswith("\xFF\xFE"):
-      return "UTF-16"
-    elif header.startswith("\xEF\xBB\xBF"):
-      return "UTF-8"
-    else:
-      return None
-
-  def ExecCopyInfoPlist(self, source, dest, *keys):
-    """Copies the |source| Info.plist to the destination directory |dest|."""
-    # Read the source Info.plist into memory.
-    fd = open(source, 'r')
-    lines = fd.read()
-    fd.close()
-
-    # Insert synthesized key/value pairs (e.g. BuildMachineOSBuild).
-    plist = plistlib.readPlistFromString(lines)
-    if keys:
-      plist = dict(plist.items() + json.loads(keys[0]).items())
-    lines = plistlib.writePlistToString(plist)
-
-    # Go through all the environment variables and replace them as variables in
-    # the file.
-    IDENT_RE = re.compile('[/\s]')
-    for key in os.environ:
-      if key.startswith('_'):
-        continue
-      evar = '${%s}' % key
-      evalue = os.environ[key]
-      lines = string.replace(lines, evar, evalue)
-
-      # Xcode supports various suffices on environment variables, which are
-      # all undocumented. :rfc1034identifier is used in the standard project
-      # template these days, and :identifier was used earlier. They are used to
-      # convert non-url characters into things that look like valid urls --
-      # except that the replacement character for :identifier, '_' isn't valid
-      # in a URL either -- oops, hence :rfc1034identifier was born.
-      evar = '${%s:identifier}' % key
-      evalue = IDENT_RE.sub('_', os.environ[key])
-      lines = string.replace(lines, evar, evalue)
-
-      evar = '${%s:rfc1034identifier}' % key
-      evalue = IDENT_RE.sub('-', os.environ[key])
-      lines = string.replace(lines, evar, evalue)
-
-    # Remove any keys with values that haven't been replaced.
-    lines = lines.split('\n')
-    for i in range(len(lines)):
-      if lines[i].strip().startswith("<string>${"):
-        lines[i] = None
-        lines[i - 1] = None
-    lines = '\n'.join(filter(lambda x: x is not None, lines))
-
-    # Write out the file with variables replaced.
-    fd = open(dest, 'w')
-    fd.write(lines)
-    fd.close()
-
-    # Now write out PkgInfo file now that the Info.plist file has been
-    # "compiled".
-    self._WritePkgInfo(dest)
-
-  def _WritePkgInfo(self, info_plist):
-    """This writes the PkgInfo file from the data stored in Info.plist."""
-    plist = plistlib.readPlist(info_plist)
-    if not plist:
-      return
-
-    # Only create PkgInfo for executable types.
-    package_type = plist['CFBundlePackageType']
-    if package_type != 'APPL':
-      return
-
-    # The format of PkgInfo is eight characters, representing the bundle type
-    # and bundle signature, each four characters. If that is missing, four
-    # '?' characters are used instead.
-    signature_code = plist.get('CFBundleSignature', '????')
-    if len(signature_code) != 4:  # Wrong length resets everything, too.
-      signature_code = '?' * 4
-
-    dest = os.path.join(os.path.dirname(info_plist), 'PkgInfo')
-    fp = open(dest, 'w')
-    fp.write('%s%s' % (package_type, signature_code))
-    fp.close()
-
-  def ExecFlock(self, lockfile, *cmd_list):
-    """Emulates the most basic behavior of Linux's flock(1)."""
-    # Rely on exception handling to report errors.
-    fd = os.open(lockfile, os.O_RDONLY|os.O_NOCTTY|os.O_CREAT, 0o666)
-    fcntl.flock(fd, fcntl.LOCK_EX)
-    return subprocess.call(cmd_list)
-
-  def ExecFilterLibtool(self, *cmd_list):
-    """Calls libtool and filters out '/path/to/libtool: file: foo.o has no
-    symbols'."""
-    libtool_re = re.compile(r'^.*libtool: file: .* has no symbols$')
-    libtoolout = subprocess.Popen(cmd_list, stderr=subprocess.PIPE)
-    _, err = libtoolout.communicate()
-    for line in err.splitlines():
-      if not libtool_re.match(line):
-        print >>sys.stderr, line
-    return libtoolout.returncode
-
-  def ExecPackageFramework(self, framework, version):
-    """Takes a path to Something.framework and the Current version of that and
-    sets up all the symlinks."""
-    # Find the name of the binary based on the part before the ".framework".
-    binary = os.path.basename(framework).split('.')[0]
-
-    CURRENT = 'Current'
-    RESOURCES = 'Resources'
-    VERSIONS = 'Versions'
-
-    if not os.path.exists(os.path.join(framework, VERSIONS, version, binary)):
-      # Binary-less frameworks don't seem to contain symlinks (see e.g.
-      # chromium's out/Debug/org.chromium.Chromium.manifest/ bundle).
-      return
-
-    # Move into the framework directory to set the symlinks correctly.
-    pwd = os.getcwd()
-    os.chdir(framework)
-
-    # Set up the Current version.
-    self._Relink(version, os.path.join(VERSIONS, CURRENT))
-
-    # Set up the root symlinks.
-    self._Relink(os.path.join(VERSIONS, CURRENT, binary), binary)
-    self._Relink(os.path.join(VERSIONS, CURRENT, RESOURCES), RESOURCES)
-
-    # Back to where we were before!
-    os.chdir(pwd)
-
-  def _Relink(self, dest, link):
-    """Creates a symlink to |dest| named |link|. If |link| already exists,
-    it is overwritten."""
-    if os.path.lexists(link):
-      os.remove(link)
-    os.symlink(dest, link)
-
-
-if __name__ == '__main__':
-  sys.exit(main(sys.argv[1:]))

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/build_browser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/build_browser.js b/web/demos/package/node_modules/mongodb/node_modules/bson/build_browser.js
deleted file mode 100644
index bb80238..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/build_browser.js
+++ /dev/null
@@ -1,7 +0,0 @@
-require('one');
-
-one('./package.json')
-  .tie('bson', BSON)
-  // .exclude('buffer')
-  .tie('buffer', {})
-  .save('./browser_build/bson.js')
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/builderror.log
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/builderror.log b/web/demos/package/node_modules/mongodb/node_modules/bson/builderror.log
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/ext/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/Makefile b/web/demos/package/node_modules/mongodb/node_modules/bson/ext/Makefile
deleted file mode 100644
index 435999e..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-NODE = node
-name = all
-JOBS = 1
-
-all:
-	rm -rf build .lock-wscript bson.node
-	node-waf configure build
-	cp -R ./build/Release/bson.node . || true
-
-all_debug:
-	rm -rf build .lock-wscript bson.node
-	node-waf --debug configure build
-	cp -R ./build/Release/bson.node . || true
-
-clang:
-	rm -rf build .lock-wscript bson.node
-	CXX=clang node-waf configure build
-	cp -R ./build/Release/bson.node . || true
-
-clang_debug:
-	rm -rf build .lock-wscript bson.node
-	CXX=clang node-waf --debug configure build
-	cp -R ./build/Release/bson.node . || true
-
-clean:
-	rm -rf build .lock-wscript bson.node
-
-.PHONY: all
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/ext/bson.cc
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/bson.cc b/web/demos/package/node_modules/mongodb/node_modules/bson/ext/bson.cc
deleted file mode 100644
index 1ec3031..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/ext/bson.cc
+++ /dev/null
@@ -1,1045 +0,0 @@
-//===========================================================================
-
-#include <stdarg.h>
-#include <cstdlib>
-#include <cstring>
-#include <string.h>
-#include <stdlib.h>
-
-#ifdef __clang__
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunused-parameter"
-#endif
-
-#include <v8.h>
-
-// this and the above block must be around the v8.h header otherwise
-// v8 is not happy
-#ifdef __clang__
-#pragma clang diagnostic pop
-#endif
-
-#include <node.h>
-#include <node_version.h>
-#include <node_buffer.h>
-
-#include <cmath>
-#include <iostream>
-#include <limits>
-#include <vector>
-
-#ifdef __sun
-	#include <alloca.h>
-#endif
-
-#include "bson.h"
-
-using namespace v8;
-using namespace node;
-
-//===========================================================================
-
-void DataStream::WriteObjectId(const Handle<Object>& object, const Handle<String>& key)
-{
-	uint16_t buffer[12];
-	object->Get(key)->ToString()->Write(buffer, 0, 12);
-	for(uint32_t i = 0; i < 12; ++i)
-	{
-		*p++ = (char) buffer[i];
-	}
-}
-
-void ThrowAllocatedStringException(size_t allocationSize, const char* format, ...)
-{
-	va_list args;
-	va_start(args, format);
-	char* string = (char*) malloc(allocationSize);
-	vsprintf(string, format, args);
-	va_end(args);
-
-	throw string;
-}
-
-void DataStream::CheckKey(const Local<String>& keyName)
-{
-	size_t keyLength = keyName->Utf8Length();
-	if(keyLength == 0) return;
-
-	// Allocate space for the key, do not need to zero terminate as WriteUtf8 does it
-	char* keyStringBuffer = (char*) alloca(keyLength + 1);
-	// Write the key to the allocated buffer
-	keyName->WriteUtf8(keyStringBuffer);
-	// Check for the zero terminator
-	char* terminator = strchr(keyStringBuffer, 0x00);
-
-	// If the location is not at the end of the string we've got an illegal 0x00 byte somewhere
-	if(terminator != &keyStringBuffer[keyLength]) {
-		ThrowAllocatedStringException(64+keyLength, "key %s must not contain null bytes", keyStringBuffer);
-	}
-
-	if(keyStringBuffer[0] == '$')
-	{
-		ThrowAllocatedStringException(64+keyLength, "key %s must not start with '$'", keyStringBuffer);
-	}
-
-	if(strchr(keyStringBuffer, '.') != NULL)
-	{
-		ThrowAllocatedStringException(64+keyLength, "key %s must not contain '.'", keyStringBuffer);
-	}
-}
-
-template<typename T> void BSONSerializer<T>::SerializeDocument(const Handle<Value>& value)
-{
-	void* documentSize = this->BeginWriteSize();
-	Local<Object> object = bson->GetSerializeObject(value);
-
-	// Get the object property names
-	#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 6
-    Local<Array> propertyNames = object->GetPropertyNames();
-  #else
-    Local<Array> propertyNames = object->GetOwnPropertyNames();
-  #endif
-
-	// Length of the property
-	int propertyLength = propertyNames->Length();
-	for(int i = 0;  i < propertyLength; ++i)
-	{
-		const Local<String>& propertyName = propertyNames->Get(i)->ToString();
-		if(checkKeys) this->CheckKey(propertyName);
-
-		const Local<Value>& propertyValue = object->Get(propertyName);
-
-		if(serializeFunctions || !propertyValue->IsFunction())
-		{
-			void* typeLocation = this->BeginWriteType();
-			this->WriteString(propertyName);
-			SerializeValue(typeLocation, propertyValue);
-		}
-	}
-
-	this->WriteByte(0);
-	this->CommitSize(documentSize);
-}
-
-template<typename T> void BSONSerializer<T>::SerializeArray(const Handle<Value>& value)
-{
-	void* documentSize = this->BeginWriteSize();
-
-	Local<Array> array = Local<Array>::Cast(value->ToObject());
-	uint32_t arrayLength = array->Length();
-
-	for(uint32_t i = 0;  i < arrayLength; ++i)
-	{
-		void* typeLocation = this->BeginWriteType();
-		this->WriteUInt32String(i);
-		SerializeValue(typeLocation, array->Get(i));
-	}
-
-	this->WriteByte(0);
-	this->CommitSize(documentSize);
-}
-
-// This is templated so that we can use this function to both count the number of bytes, and to serialize those bytes.
-// The template approach eliminates almost all of the inspection of values unless they're required (eg. string lengths)
-// and ensures that there is always consistency between bytes counted and bytes written by design.
-template<typename T> void BSONSerializer<T>::SerializeValue(void* typeLocation, const Handle<Value>& value)
-{
-	if(value->IsNumber())
-	{
-		double doubleValue = value->NumberValue();
-		int intValue = (int) doubleValue;
-		if(intValue == doubleValue)
-		{
-			this->CommitType(typeLocation, BSON_TYPE_INT);
-			this->WriteInt32(intValue);
-		}
-		else
-		{
-			this->CommitType(typeLocation, BSON_TYPE_NUMBER);
-			this->WriteDouble(doubleValue);
-		}
-	}
-	else if(value->IsString())
-	{
-		this->CommitType(typeLocation, BSON_TYPE_STRING);
-		this->WriteLengthPrefixedString(value->ToString());
-	}
-	else if(value->IsBoolean())
-	{
-		this->CommitType(typeLocation, BSON_TYPE_BOOLEAN);
-		this->WriteBool(value);
-	}
-	else if(value->IsArray())
-	{
-		this->CommitType(typeLocation, BSON_TYPE_ARRAY);
-		SerializeArray(value);
-	}
-	else if(value->IsDate())
-	{
-		this->CommitType(typeLocation, BSON_TYPE_DATE);
-		this->WriteInt64(value);
-	}
-	else if(value->IsRegExp())
-	{
-		this->CommitType(typeLocation, BSON_TYPE_REGEXP);
-		const Handle<RegExp>& regExp = Handle<RegExp>::Cast(value);
-
-		this->WriteString(regExp->GetSource());
-
-		int flags = regExp->GetFlags();
-		if(flags & RegExp::kGlobal) this->WriteByte('s');
-		if(flags & RegExp::kIgnoreCase) this->WriteByte('i');
-		if(flags & RegExp::kMultiline) this->WriteByte('m');
-		this->WriteByte(0);
-	}
-	else if(value->IsFunction())
-	{
-		this->CommitType(typeLocation, BSON_TYPE_CODE);
-		this->WriteLengthPrefixedString(value->ToString());
-	}
-	else if(value->IsObject())
-	{
-		const Local<Object>& object = value->ToObject();
-		if(object->Has(NanPersistentToLocal(bson->_bsontypeString)))
-		{
-			const Local<String>& constructorString = object->GetConstructorName();
-			if(NanPersistentToLocal(bson->longString)->StrictEquals(constructorString))
-			{
-				this->CommitType(typeLocation, BSON_TYPE_LONG);
-				this->WriteInt32(object, NanPersistentToLocal(bson->_longLowString));
-				this->WriteInt32(object, NanPersistentToLocal(bson->_longHighString));
-			}
-			else if(NanPersistentToLocal(bson->timestampString)->StrictEquals(constructorString))
-			{
-				this->CommitType(typeLocation, BSON_TYPE_TIMESTAMP);
-				this->WriteInt32(object, NanPersistentToLocal(bson->_longLowString));
-				this->WriteInt32(object, NanPersistentToLocal(bson->_longHighString));
-			}
-			else if(NanPersistentToLocal(bson->objectIDString)->StrictEquals(constructorString))
-			{
-				this->CommitType(typeLocation, BSON_TYPE_OID);
-				this->WriteObjectId(object, NanPersistentToLocal(bson->_objectIDidString));
-			}
-			else if(NanPersistentToLocal(bson->binaryString)->StrictEquals(constructorString))
-			{
-				this->CommitType(typeLocation, BSON_TYPE_BINARY);
-
-				uint32_t length = object->Get(NanPersistentToLocal(bson->_binaryPositionString))->Uint32Value();
-				Local<Object> bufferObj = object->Get(NanPersistentToLocal(bson->_binaryBufferString))->ToObject();
-
-				this->WriteInt32(length);
-				this->WriteByte(object, NanPersistentToLocal(bson->_binarySubTypeString));	// write subtype
-				// If type 0x02 write the array length aswell
-				if(object->Get(NanPersistentToLocal(bson->_binarySubTypeString))->Int32Value() == 0x02) {
-					this->WriteInt32(length);
-				}
-				// Write the actual data
-				this->WriteData(Buffer::Data(bufferObj), length);
-			}
-			else if(NanPersistentToLocal(bson->doubleString)->StrictEquals(constructorString))
-			{
-				this->CommitType(typeLocation, BSON_TYPE_NUMBER);
-				this->WriteDouble(object, NanPersistentToLocal(bson->_doubleValueString));
-			}
-			else if(NanPersistentToLocal(bson->symbolString)->StrictEquals(constructorString))
-			{
-				this->CommitType(typeLocation, BSON_TYPE_SYMBOL);
-				this->WriteLengthPrefixedString(object->Get(NanPersistentToLocal(bson->_symbolValueString))->ToString());
-			}
-			else if(NanPersistentToLocal(bson->codeString)->StrictEquals(constructorString))
-			{
-				const Local<String>& function = object->Get(NanPersistentToLocal(bson->_codeCodeString))->ToString();
-				const Local<Object>& scope = object->Get(NanPersistentToLocal(bson->_codeScopeString))->ToObject();
-
-				// For Node < 0.6.X use the GetPropertyNames
-	      #if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 6
-	        uint32_t propertyNameLength = scope->GetPropertyNames()->Length();
-	      #else
-	        uint32_t propertyNameLength = scope->GetOwnPropertyNames()->Length();
-	      #endif
-
-				if(propertyNameLength > 0)
-				{
-					this->CommitType(typeLocation, BSON_TYPE_CODE_W_SCOPE);
-					void* codeWidthScopeSize = this->BeginWriteSize();
-					this->WriteLengthPrefixedString(function->ToString());
-					SerializeDocument(scope);
-					this->CommitSize(codeWidthScopeSize);
-				}
-				else
-				{
-					this->CommitType(typeLocation, BSON_TYPE_CODE);
-					this->WriteLengthPrefixedString(function->ToString());
-				}
-			}
-			else if(NanPersistentToLocal(bson->dbrefString)->StrictEquals(constructorString))
-			{
-				this->CommitType(typeLocation, BSON_TYPE_OBJECT);
-
-				void* dbRefSize = this->BeginWriteSize();
-
-				void* refType = this->BeginWriteType();
-				this->WriteData("$ref", 5);
-				SerializeValue(refType, object->Get(NanPersistentToLocal(bson->_dbRefNamespaceString)));
-
-				void* idType = this->BeginWriteType();
-				this->WriteData("$id", 4);
-				SerializeValue(idType, object->Get(NanPersistentToLocal(bson->_dbRefOidString)));
-
-				const Local<Value>& refDbValue = object->Get(NanPersistentToLocal(bson->_dbRefDbString));
-				if(!refDbValue->IsUndefined())
-				{
-					void* dbType = this->BeginWriteType();
-					this->WriteData("$db", 4);
-					SerializeValue(dbType, refDbValue);
-				}
-
-				this->WriteByte(0);
-				this->CommitSize(dbRefSize);
-			}
-			else if(NanPersistentToLocal(bson->minKeyString)->StrictEquals(constructorString))
-			{
-				this->CommitType(typeLocation, BSON_TYPE_MIN_KEY);
-			}
-			else if(NanPersistentToLocal(bson->maxKeyString)->StrictEquals(constructorString))
-			{
-				this->CommitType(typeLocation, BSON_TYPE_MAX_KEY);
-			}
-		}
-		else if(Buffer::HasInstance(value))
-		{
-			this->CommitType(typeLocation, BSON_TYPE_BINARY);
-
-	    #if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 3
-       Local<Object> buffer = ObjectWrap::Unwrap<Buffer>(value->ToObject());
-			 uint32_t length = object->length();
-	    #else
-			 uint32_t length = Buffer::Length(value->ToObject());
-	    #endif
-
-			this->WriteInt32(length);
-			this->WriteByte(0);
-			this->WriteData(Buffer::Data(value->ToObject()), length);
-		}
-		else
-		{
-			this->CommitType(typeLocation, BSON_TYPE_OBJECT);
-			SerializeDocument(value);
-		}
-	}
-	else if(value->IsNull() || value->IsUndefined())
-	{
-		this->CommitType(typeLocation, BSON_TYPE_NULL);
-	}
-}
-
-// Data points to start of element list, length is length of entire document including '\0' but excluding initial size
-BSONDeserializer::BSONDeserializer(BSON* aBson, char* data, size_t length)
-: bson(aBson),
-  pStart(data),
-  p(data),
-  pEnd(data + length - 1)
-{
-	if(*pEnd != '\0') ThrowAllocatedStringException(64, "Missing end of document marker '\\0'");
-}
-
-BSONDeserializer::BSONDeserializer(BSONDeserializer& parentSerializer, size_t length)
-: bson(parentSerializer.bson),
-  pStart(parentSerializer.p),
-  p(parentSerializer.p),
-  pEnd(parentSerializer.p + length - 1)
-{
-	parentSerializer.p += length;
-	if(pEnd > parentSerializer.pEnd) ThrowAllocatedStringException(64, "Child document exceeds parent's bounds");
-	if(*pEnd != '\0') ThrowAllocatedStringException(64, "Missing end of document marker '\\0'");
-}
-
-Handle<Value> BSONDeserializer::ReadCString()
-{
-	char* start = p;
-	while(*p++ && (p < pEnd)) { }
-	if(p > pEnd) {
-		return Null();
-	}
-	return String::New(start, (int32_t) (p-start-1) );
-}
-
-int32_t BSONDeserializer::ReadRegexOptions()
-{
-	int32_t options = 0;
-	for(;;)
-	{
-		switch(*p++)
-		{
-		case '\0': return options;
-		case 's': options |= RegExp::kGlobal; break;
-		case 'i': options |= RegExp::kIgnoreCase; break;
-		case 'm': options |= RegExp::kMultiline; break;
-		}
-	}
-}
-
-uint32_t BSONDeserializer::ReadIntegerString()
-{
-	uint32_t value = 0;
-	while(*p)
-	{
-		if(*p < '0' || *p > '9') ThrowAllocatedStringException(64, "Invalid key for array");
-		value = value * 10 + *p++ - '0';
-	}
-	++p;
-	return value;
-}
-
-Local<String> BSONDeserializer::ReadString()
-{
-	uint32_t length = ReadUInt32();
-	char* start = p;
-	p += length;
-	return String::New(start, length-1);
-}
-
-Local<String> BSONDeserializer::ReadObjectId()
-{
-	uint16_t objectId[12];
-	for(size_t i = 0; i < 12; ++i)
-	{
-		objectId[i] = *reinterpret_cast<unsigned char*>(p++);
-	}
-	return String::New(objectId, 12);
-}
-
-Handle<Value> BSONDeserializer::DeserializeDocument(bool promoteLongs)
-{
-	uint32_t length = ReadUInt32();
-	if(length < 5) ThrowAllocatedStringException(64, "Bad BSON: Document is less than 5 bytes");
-
-	BSONDeserializer documentDeserializer(*this, length-4);
-	return documentDeserializer.DeserializeDocumentInternal(promoteLongs);
-}
-
-Handle<Value> BSONDeserializer::DeserializeDocumentInternal(bool promoteLongs)
-{
-	Local<Object> returnObject = Object::New();
-
-	while(HasMoreData())
-	{
-		BsonType type = (BsonType) ReadByte();
-		const Handle<Value>& name = ReadCString();
-		if(name->IsNull()) ThrowAllocatedStringException(64, "Bad BSON Document: illegal CString");
-		// name->Is
-		const Handle<Value>& value = DeserializeValue(type, promoteLongs);
-		returnObject->ForceSet(name, value);
-	}
-	if(p != pEnd) ThrowAllocatedStringException(64, "Bad BSON Document: Serialize consumed unexpected number of bytes");
-
-	// From JavaScript:
-	// if(object['$id'] != null) object = new DBRef(object['$ref'], object['$id'], object['$db']);
-	if(returnObject->Has(NanPersistentToLocal(bson->_dbRefIdRefString)))
-	{
-		Local<Value> argv[] = { returnObject->Get(NanPersistentToLocal(bson->_dbRefRefString)), returnObject->Get(NanPersistentToLocal(bson->_dbRefIdRefString)), returnObject->Get(NanPersistentToLocal(bson->_dbRefDbRefString)) };
-		return NanPersistentToLocal(bson->dbrefConstructor)->NewInstance(3, argv);
-	}
-	else
-	{
-		return returnObject;
-	}
-}
-
-Handle<Value> BSONDeserializer::DeserializeArray(bool promoteLongs)
-{
-	uint32_t length = ReadUInt32();
-	if(length < 5) ThrowAllocatedStringException(64, "Bad BSON: Array Document is less than 5 bytes");
-
-	BSONDeserializer documentDeserializer(*this, length-4);
-	return documentDeserializer.DeserializeArrayInternal(promoteLongs);
-}
-
-Handle<Value> BSONDeserializer::DeserializeArrayInternal(bool promoteLongs)
-{
-	Local<Array> returnArray = Array::New();
-
-	while(HasMoreData())
-	{
-		BsonType type = (BsonType) ReadByte();
-		uint32_t index = ReadIntegerString();
-		const Handle<Value>& value = DeserializeValue(type, promoteLongs);
-		returnArray->Set(index, value);
-	}
-	if(p != pEnd) ThrowAllocatedStringException(64, "Bad BSON Array: Serialize consumed unexpected number of bytes");
-
-	return returnArray;
-}
-
-Handle<Value> BSONDeserializer::DeserializeValue(BsonType type, bool promoteLongs)
-{
-	switch(type)
-	{
-	case BSON_TYPE_STRING:
-		return ReadString();
-
-	case BSON_TYPE_INT:
-		return Integer::New(ReadInt32());
-
-	case BSON_TYPE_NUMBER:
-		return Number::New(ReadDouble());
-
-	case BSON_TYPE_NULL:
-		return Null();
-
-	case BSON_TYPE_UNDEFINED:
-		return Undefined();
-
-	case BSON_TYPE_TIMESTAMP:
-		{
-			int32_t lowBits = ReadInt32();
-			int32_t highBits = ReadInt32();
-			Local<Value> argv[] = { Int32::New(lowBits), Int32::New(highBits) };
-			return NanPersistentToLocal(bson->timestampConstructor)->NewInstance(2, argv);
-		}
-
-	case BSON_TYPE_BOOLEAN:
-		return (ReadByte() != 0) ? True() : False();
-
-	case BSON_TYPE_REGEXP:
-		{
-			const Handle<Value>& regex = ReadCString();
-			if(regex->IsNull()) ThrowAllocatedStringException(64, "Bad BSON Document: illegal CString");
-			int32_t options = ReadRegexOptions();
-			return RegExp::New(regex->ToString(), (RegExp::Flags) options);
-		}
-
-	case BSON_TYPE_CODE:
-		{
-			const Local<Value>& code = ReadString();
-			const Local<Value>& scope = Object::New();
-			Local<Value> argv[] = { code, scope };
-			return NanPersistentToLocal(bson->codeConstructor)->NewInstance(2, argv);
-		}
-
-	case BSON_TYPE_CODE_W_SCOPE:
-		{
-			ReadUInt32();
-			const Local<Value>& code = ReadString();
-			const Handle<Value>& scope = DeserializeDocument(promoteLongs);
-			Local<Value> argv[] = { code, scope->ToObject() };
-			return NanPersistentToLocal(bson->codeConstructor)->NewInstance(2, argv);
-		}
-
-	case BSON_TYPE_OID:
-		{
-			Local<Value> argv[] = { ReadObjectId() };
-			return NanPersistentToLocal(bson->objectIDConstructor)->NewInstance(1, argv);
-		}
-
-	case BSON_TYPE_BINARY:
-		{
-			uint32_t length = ReadUInt32();
-			uint32_t subType = ReadByte();
-			if(subType == 0x02) {
-				length = ReadInt32();
-			}
-
-			Local<Object> buffer = NanNewBufferHandle(p, length);
-			p += length;
-
-			Handle<Value> argv[] = { buffer, Uint32::New(subType) };
-			return NanPersistentToLocal(bson->binaryConstructor)->NewInstance(2, argv);
-		}
-
-	case BSON_TYPE_LONG:
-		{
-			// Read 32 bit integers
-			int32_t lowBits = (int32_t) ReadInt32();
-			int32_t highBits = (int32_t) ReadInt32();
-
-			// Promote long is enabled
-			if(promoteLongs) {
-				// If value is < 2^53 and >-2^53
-				if((highBits < 0x200000 || (highBits == 0x200000 && lowBits == 0)) && highBits >= -0x200000) {
-					// Adjust the pointer and read as 64 bit value
-					p -= 8;
-					// Read the 64 bit value
-					int64_t finalValue = (int64_t) ReadInt64();
-					return Number::New(finalValue);
-				}
-			}
-
-			// Decode the Long value
-			Local<Value> argv[] = { Int32::New(lowBits), Int32::New(highBits) };
-			return NanPersistentToLocal(bson->longConstructor)->NewInstance(2, argv);
-		}
-
-	case BSON_TYPE_DATE:
-		return Date::New((double) ReadInt64());
-
-	case BSON_TYPE_ARRAY:
-		return DeserializeArray(promoteLongs);
-
-	case BSON_TYPE_OBJECT:
-		return DeserializeDocument(promoteLongs);
-
-	case BSON_TYPE_SYMBOL:
-		{
-			const Local<String>& string = ReadString();
-			Local<Value> argv[] = { string };
-			return NanPersistentToLocal(bson->symbolConstructor)->NewInstance(1, argv);
-		}
-
-	case BSON_TYPE_MIN_KEY:
-		return NanPersistentToLocal(bson->minKeyConstructor)->NewInstance();
-
-	case BSON_TYPE_MAX_KEY:
-		return NanPersistentToLocal(bson->maxKeyConstructor)->NewInstance();
-
-	default:
-		ThrowAllocatedStringException(64, "Unhandled BSON Type: %d", type);
-	}
-
-	return v8::Null();
-}
-
-Persistent<FunctionTemplate> BSON::constructor_template;
-
-BSON::BSON() : ObjectWrap()
-{
-	// Setup pre-allocated comparision objects
-        NanAssignPersistent(String, _bsontypeString, String::New("_bsontype"));
-        NanAssignPersistent(String, _longLowString, String::New("low_"));
-        NanAssignPersistent(String, _longHighString, String::New("high_"));
-        NanAssignPersistent(String, _objectIDidString, String::New("id"));
-        NanAssignPersistent(String, _binaryPositionString, String::New("position"));
-        NanAssignPersistent(String, _binarySubTypeString, String::New("sub_type"));
-        NanAssignPersistent(String, _binaryBufferString, String::New("buffer"));
-        NanAssignPersistent(String, _doubleValueString, String::New("value"));
-        NanAssignPersistent(String, _symbolValueString, String::New("value"));
-        NanAssignPersistent(String, _dbRefRefString, String::New("$ref"));
-        NanAssignPersistent(String, _dbRefIdRefString, String::New("$id"));
-        NanAssignPersistent(String, _dbRefDbRefString, String::New("$db"));
-        NanAssignPersistent(String, _dbRefNamespaceString, String::New("namespace"));
-        NanAssignPersistent(String, _dbRefDbString, String::New("db"));
-        NanAssignPersistent(String, _dbRefOidString, String::New("oid"));
-        NanAssignPersistent(String, _codeCodeString, String::New("code"));
-        NanAssignPersistent(String, _codeScopeString, String::New("scope"));
-        NanAssignPersistent(String, _toBSONString, String::New("toBSON"));
-
-        NanAssignPersistent(String, longString, String::New("Long"));
-        NanAssignPersistent(String, objectIDString, String::New("ObjectID"));
-        NanAssignPersistent(String, binaryString, String::New("Binary"));
-        NanAssignPersistent(String, codeString, String::New("Code"));
-        NanAssignPersistent(String, dbrefString, String::New("DBRef"));
-        NanAssignPersistent(String, symbolString, String::New("Symbol"));
-        NanAssignPersistent(String, doubleString, String::New("Double"));
-        NanAssignPersistent(String, timestampString, String::New("Timestamp"));
-        NanAssignPersistent(String, minKeyString, String::New("MinKey"));
-        NanAssignPersistent(String, maxKeyString, String::New("MaxKey"));
-}
-
-void BSON::Initialize(v8::Handle<v8::Object> target)
-{
-	// Grab the scope of the call from Node
-	NanScope();
-	// Define a new function template
-	Local<FunctionTemplate> t = FunctionTemplate::New(New);
-	t->InstanceTemplate()->SetInternalFieldCount(1);
-	t->SetClassName(String::NewSymbol("BSON"));
-
-	// Instance methods
-	NODE_SET_PROTOTYPE_METHOD(t, "calculateObjectSize", CalculateObjectSize);
-	NODE_SET_PROTOTYPE_METHOD(t, "serialize", BSONSerialize);
-	NODE_SET_PROTOTYPE_METHOD(t, "serializeWithBufferAndIndex", SerializeWithBufferAndIndex);
-	NODE_SET_PROTOTYPE_METHOD(t, "deserialize", BSONDeserialize);
-	NODE_SET_PROTOTYPE_METHOD(t, "deserializeStream", BSONDeserializeStream);
-
-	NanAssignPersistent(FunctionTemplate, constructor_template, t);
-
-	target->ForceSet(String::NewSymbol("BSON"), t->GetFunction());
-}
-
-// Create a new instance of BSON and passing it the existing context
-NAN_METHOD(BSON::New)
-{
-	NanScope();
-
-	// Check that we have an array
-	if(args.Length() == 1 && args[0]->IsArray())
-	{
-		// Cast the array to a local reference
-		Local<Array> array = Local<Array>::Cast(args[0]);
-
-		if(array->Length() > 0)
-		{
-			// Create a bson object instance and return it
-			BSON *bson = new BSON();
-
-			uint32_t foundClassesMask = 0;
-
-			// Iterate over all entries to save the instantiate funtions
-			for(uint32_t i = 0; i < array->Length(); i++) {
-				// Let's get a reference to the function
-				Local<Function> func = Local<Function>::Cast(array->Get(i));
-				Local<String> functionName = func->GetName()->ToString();
-
-				// Save the functions making them persistant handles (they don't get collected)
-				if(functionName->StrictEquals(NanPersistentToLocal(bson->longString))) {
-					NanAssignPersistent(Function, bson->longConstructor, func);
-					foundClassesMask |= 1;
-				} else if(functionName->StrictEquals(NanPersistentToLocal(bson->objectIDString))) {
-					NanAssignPersistent(Function, bson->objectIDConstructor, func);
-					foundClassesMask |= 2;
-				} else if(functionName->StrictEquals(NanPersistentToLocal(bson->binaryString))) {
-					NanAssignPersistent(Function, bson->binaryConstructor, func);
-					foundClassesMask |= 4;
-				} else if(functionName->StrictEquals(NanPersistentToLocal(bson->codeString))) {
-					NanAssignPersistent(Function, bson->codeConstructor, func);
-					foundClassesMask |= 8;
-				} else if(functionName->StrictEquals(NanPersistentToLocal(bson->dbrefString))) {
-					NanAssignPersistent(Function, bson->dbrefConstructor, func);
-					foundClassesMask |= 0x10;
-				} else if(functionName->StrictEquals(NanPersistentToLocal(bson->symbolString))) {
-					NanAssignPersistent(Function, bson->symbolConstructor, func);
-					foundClassesMask |= 0x20;
-				} else if(functionName->StrictEquals(NanPersistentToLocal(bson->doubleString))) {
-					NanAssignPersistent(Function, bson->doubleConstructor, func);
-					foundClassesMask |= 0x40;
-				} else if(functionName->StrictEquals(NanPersistentToLocal(bson->timestampString))) {
-					NanAssignPersistent(Function, bson->timestampConstructor, func);
-					foundClassesMask |= 0x80;
-				} else if(functionName->StrictEquals(NanPersistentToLocal(bson->minKeyString))) {
-					NanAssignPersistent(Function, bson->minKeyConstructor, func);
-					foundClassesMask |= 0x100;
-				} else if(functionName->StrictEquals(NanPersistentToLocal(bson->maxKeyString))) {
-					NanAssignPersistent(Function, bson->maxKeyConstructor, func);
-					foundClassesMask |= 0x200;
-				}
-			}
-
-			// Check if we have the right number of constructors otherwise throw an error
-			if(foundClassesMask != 0x3ff) {
-				delete bson;
-				return NanThrowError("Missing function constructor for either [Long/ObjectID/Binary/Code/DbRef/Symbol/Double/Timestamp/MinKey/MaxKey]");
-			} else {
-				bson->Wrap(args.This());
-				NanReturnValue(args.This());
-			}
-		}
-		else
-		{
-			return NanThrowError("No types passed in");
-		}
-	}
-	else
-	{
-		return NanThrowTypeError("Argument passed in must be an array of types");
-	}
-}
-
-//------------------------------------------------------------------------------------------------
-//------------------------------------------------------------------------------------------------
-//------------------------------------------------------------------------------------------------
-//------------------------------------------------------------------------------------------------
-
-NAN_METHOD(BSON::BSONDeserialize)
-{
-	NanScope();
-
-	// Fail if the first argument is not a string or a buffer
-	if(args.Length() > 1 && !args[0]->IsString() && !Buffer::HasInstance(args[0]))
-		return NanThrowError("First Argument must be a Buffer or String.");
-
-	// Promote longs
-	bool promoteLongs = true;
-
-	// If we have an options object
-	if(args.Length() == 2 && args[1]->IsObject()) {
-		Local<Object> options = args[1]->ToObject();
-
-		if(options->Has(String::New("promoteLongs"))) {
-			promoteLongs = options->Get(String::New("promoteLongs"))->ToBoolean()->Value();
-		}
-	}
-
-	// Define pointer to data
-	Local<Object> obj = args[0]->ToObject();
-
-	// Unpack the BSON parser instance
-	BSON *bson = ObjectWrap::Unwrap<BSON>(args.This());
-
-	// If we passed in a buffer, let's unpack it, otherwise let's unpack the string
-	if(Buffer::HasInstance(obj))
-	{
-#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 3
-		Local<Object> buffer = ObjectWrap::Unwrap<Buffer>(obj);
-		char* data = buffer->data();
-		size_t length = buffer->length();
-#else
-		char* data = Buffer::Data(obj);
-		size_t length = Buffer::Length(obj);
-#endif
-
-		// Validate that we have at least 5 bytes
-		if(length < 5) return NanThrowError("corrupt bson message < 5 bytes long");
-
-		try
-		{
-			BSONDeserializer deserializer(bson, data, length);
-			// deserializer.promoteLongs = promoteLongs;
-			NanReturnValue(deserializer.DeserializeDocument(promoteLongs));
-		}
-		catch(char* exception)
-		{
-			Local<String> error = String::New(exception);
-			free(exception);
-			return NanThrowError(error);
-		}
-
-	}
-	else
-	{
-		// The length of the data for this encoding
-		ssize_t len = DecodeBytes(args[0], BINARY);
-
-		// Validate that we have at least 5 bytes
-		if(len < 5) return NanThrowError("corrupt bson message < 5 bytes long");
-
-		// Let's define the buffer size
-		char* data = (char *)malloc(len);
-		DecodeWrite(data, len, args[0], BINARY);
-
-		try
-		{
-			BSONDeserializer deserializer(bson, data, len);
-			// deserializer.promoteLongs = promoteLongs;
-			Handle<Value> result = deserializer.DeserializeDocument(promoteLongs);
-			free(data);
-			NanReturnValue(result);
-
-		}
-		catch(char* exception)
-		{
-			Local<String> error = String::New(exception);
-			free(exception);
-			free(data);
-			return NanThrowError(error);
-		}
-	}
-}
-
-Local<Object> BSON::GetSerializeObject(const Handle<Value>& argValue)
-{
-	Local<Object> object = argValue->ToObject();
-	if(object->Has(NanPersistentToLocal(_toBSONString)))
-	{
-		const Local<Value>& toBSON = object->Get(NanPersistentToLocal(_toBSONString));
-		if(!toBSON->IsFunction()) ThrowAllocatedStringException(64, "toBSON is not a function");
-
-		Local<Value> result = Local<Function>::Cast(toBSON)->Call(object, 0, NULL);
-		if(!result->IsObject()) ThrowAllocatedStringException(64, "toBSON function did not return an object");
-		return result->ToObject();
-	}
-	else
-	{
-		return object;
-	}
-}
-
-NAN_METHOD(BSON::BSONSerialize)
-{
-	NanScope();
-
-	if(args.Length() == 1 && !args[0]->IsObject()) return NanThrowError("One, two or tree arguments required - [object] or [object, boolean] or [object, boolean, boolean]");
-	if(args.Length() == 2 && !args[0]->IsObject() && !args[1]->IsBoolean()) return NanThrowError("One, two or tree arguments required - [object] or [object, boolean] or [object, boolean, boolean]");
-	if(args.Length() == 3 && !args[0]->IsObject() && !args[1]->IsBoolean() && !args[2]->IsBoolean()) return NanThrowError("One, two or tree arguments required - [object] or [object, boolean] or [object, boolean, boolean]");
-	if(args.Length() == 4 && !args[0]->IsObject() && !args[1]->IsBoolean() && !args[2]->IsBoolean() && !args[3]->IsBoolean()) return NanThrowError("One, two or tree arguments required - [object] or [object, boolean] or [object, boolean, boolean] or [object, boolean, boolean, boolean]");
-	if(args.Length() > 4) return NanThrowError("One, two, tree or four arguments required - [object] or [object, boolean] or [object, boolean, boolean] or [object, boolean, boolean, boolean]");
-
-	// Check if we have an array as the object
-	if(args[0]->IsArray()) return NanThrowError("Only javascript objects supported");
-
-	// Unpack the BSON parser instance
-	BSON *bson = ObjectWrap::Unwrap<BSON>(args.This());
-
-	// Calculate the total size of the document in binary form to ensure we only allocate memory once
-	// With serialize function
-	bool serializeFunctions = (args.Length() >= 4) && args[3]->BooleanValue();
-
-	char *serialized_object = NULL;
-	size_t object_size;
-	try
-	{
-		Local<Object> object = bson->GetSerializeObject(args[0]);
-
-		BSONSerializer<CountStream> counter(bson, false, serializeFunctions);
-		counter.SerializeDocument(object);
-		object_size = counter.GetSerializeSize();
-
-		// Allocate the memory needed for the serialization
-		serialized_object = (char *)malloc(object_size);
-
-		// Check if we have a boolean value
-		bool checkKeys = args.Length() >= 3 && args[1]->IsBoolean() && args[1]->BooleanValue();
-		BSONSerializer<DataStream> data(bson, checkKeys, serializeFunctions, serialized_object);
-		data.SerializeDocument(object);
-	}
-	catch(char *err_msg)
-	{
-		free(serialized_object);
-		Local<String> error = String::New(err_msg);
-		free(err_msg);
-		return NanThrowError(error);
-	}
-
-	// If we have 3 arguments
-	if(args.Length() == 3 || args.Length() == 4)
-	{
-		Local<Object> buffer = NanNewBufferHandle(serialized_object, object_size);
-		free(serialized_object);
-		NanReturnValue(buffer);
-	}
-	else
-	{
-		Local<Value> bin_value = Encode(serialized_object, object_size, BINARY)->ToString();
-		free(serialized_object);
-		NanReturnValue(bin_value);
-	}
-}
-
-NAN_METHOD(BSON::CalculateObjectSize)
-{
-	NanScope();
-	// Ensure we have a valid object
-	if(args.Length() == 1 && !args[0]->IsObject()) return NanThrowError("One argument required - [object]");
-	if(args.Length() == 2 && !args[0]->IsObject() && !args[1]->IsBoolean())  return NanThrowError("Two arguments required - [object, boolean]");
-	if(args.Length() > 3) return NanThrowError("One or two arguments required - [object] or [object, boolean]");
-
-	// Unpack the BSON parser instance
-	BSON *bson = ObjectWrap::Unwrap<BSON>(args.This());
-	bool serializeFunctions = (args.Length() >= 2) && args[1]->BooleanValue();
-	BSONSerializer<CountStream> countSerializer(bson, false, serializeFunctions);
-	countSerializer.SerializeDocument(args[0]);
-
-	// Return the object size
-	NanReturnValue(Uint32::New((uint32_t) countSerializer.GetSerializeSize()));
-}
-
-NAN_METHOD(BSON::SerializeWithBufferAndIndex)
-{
-	NanScope();
-
-	//BSON.serializeWithBufferAndIndex = function serializeWithBufferAndIndex(object, ->, buffer, index) {
-	// Ensure we have the correct values
-	if(args.Length() > 5) return NanThrowError("Four or five parameters required [object, boolean, Buffer, int] or [object, boolean, Buffer, int, boolean]");
-	if(args.Length() == 4 && !args[0]->IsObject() && !args[1]->IsBoolean() && !Buffer::HasInstance(args[2]) && !args[3]->IsUint32()) return NanThrowError("Four parameters required [object, boolean, Buffer, int]");
-	if(args.Length() == 5 && !args[0]->IsObject() && !args[1]->IsBoolean() && !Buffer::HasInstance(args[2]) && !args[3]->IsUint32() && !args[4]->IsBoolean()) return NanThrowError("Four parameters required [object, boolean, Buffer, int, boolean]");
-
-	uint32_t index;
-	size_t object_size;
-
-	try
-	{
-		BSON *bson = ObjectWrap::Unwrap<BSON>(args.This());
-
-		Local<Object> obj = args[2]->ToObject();
-		char* data = Buffer::Data(obj);
-		size_t length = Buffer::Length(obj);
-
-		index = args[3]->Uint32Value();
-		bool checkKeys = args.Length() >= 4 && args[1]->IsBoolean() && args[1]->BooleanValue();
-		bool serializeFunctions = (args.Length() == 5) && args[4]->BooleanValue();
-
-		BSONSerializer<DataStream> dataSerializer(bson, checkKeys, serializeFunctions, data+index);
-		dataSerializer.SerializeDocument(bson->GetSerializeObject(args[0]));
-		object_size = dataSerializer.GetSerializeSize();
-
-		if(object_size + index > length) return NanThrowError("Serious error - overflowed buffer!!");
-	}
-	catch(char *exception)
-	{
-		Local<String> error = String::New(exception);
-		free(exception);
-                return NanThrowError(error);
-	}
-
-	NanReturnValue(Uint32::New((uint32_t) (index + object_size - 1)));
-}
-
-NAN_METHOD(BSON::BSONDeserializeStream)
-{
-	NanScope();
-
-	// At least 3 arguments required
-	if(args.Length() < 5) return NanThrowError("Arguments required (Buffer(data), Number(index in data), Number(number of documents to deserialize), Array(results), Number(index in the array), Object(optional))");
-
-	// If the number of argumets equals 3
-	if(args.Length() >= 5)
-	{
-		if(!Buffer::HasInstance(args[0])) return NanThrowError("First argument must be Buffer instance");
-		if(!args[1]->IsUint32()) return NanThrowError("Second argument must be a positive index number");
-		if(!args[2]->IsUint32()) return NanThrowError("Third argument must be a positive number of documents to deserialize");
-		if(!args[3]->IsArray()) return NanThrowError("Fourth argument must be an array the size of documents to deserialize");
-		if(!args[4]->IsUint32()) return NanThrowError("Sixth argument must be a positive index number");
-	}
-
-	// If we have 4 arguments
-	if(args.Length() == 6 && !args[5]->IsObject()) return NanThrowError("Fifth argument must be an object with options");
-
-	// Define pointer to data
-	Local<Object> obj = args[0]->ToObject();
-	uint32_t numberOfDocuments = args[2]->Uint32Value();
-	uint32_t index = args[1]->Uint32Value();
-	uint32_t resultIndex = args[4]->Uint32Value();
-	bool promoteLongs = true;
-
-	// Check for the value promoteLongs in the options object
-	if(args.Length() == 6) {
-		Local<Object> options = args[5]->ToObject();
-
-		// Check if we have the promoteLong variable
-		if(options->Has(String::New("promoteLongs"))) {
-			promoteLongs = options->Get(String::New("promoteLongs"))->ToBoolean()->Value();
-		}
-	}
-
-	// Unpack the BSON parser instance
-	BSON *bson = ObjectWrap::Unwrap<BSON>(args.This());
-
-	// Unpack the buffer variable
-#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 3
-	Local<Object> buffer = ObjectWrap::Unwrap<Buffer>(obj);
-	char* data = buffer->data();
-	size_t length = buffer->length();
-#else
-	char* data = Buffer::Data(obj);
-	size_t length = Buffer::Length(obj);
-#endif
-
-	// Fetch the documents
-	Local<Object> documents = args[3]->ToObject();
-
-	BSONDeserializer deserializer(bson, data+index, length-index);
-	for(uint32_t i = 0; i < numberOfDocuments; i++)
-	{
-		try
-		{
-			documents->Set(i + resultIndex, deserializer.DeserializeDocument(promoteLongs));
-		}
-		catch (char* exception)
-		{
-		        Local<String> error = String::New(exception);
-			free(exception);
-			return NanThrowError(error);
-		}
-	}
-
-	// Return new index of parsing
-	NanReturnValue(Uint32::New((uint32_t) (index + deserializer.GetSerializeSize())));
-}
-
-// Exporting function
-extern "C" void init(Handle<Object> target)
-{
-	NanScope();
-	BSON::Initialize(target);
-}
-
-NODE_MODULE(bson, BSON::Initialize);


[71/98] [abbrv] incubator-apex-malhar git commit: MLHR-1886 #resolve #comment optimizing recovery and updating rotation states only when new part is open

Posted by da...@apache.org.
MLHR-1886 #resolve #comment optimizing recovery and updating rotation states only when new part is open


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/7156400b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/7156400b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/7156400b

Branch: refs/heads/master
Commit: 7156400be10c2fbda73a33ffe8c6fc03a580a569
Parents: c86e50a
Author: Chandni Singh <cs...@apache.org>
Authored: Fri Oct 30 19:00:42 2015 -0700
Committer: Chandni Singh <cs...@apache.org>
Committed: Thu Nov 5 17:16:15 2015 -0800

----------------------------------------------------------------------
 .../lib/io/fs/AbstractFileOutputOperator.java   | 361 ++++++++++---------
 1 file changed, 199 insertions(+), 162 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/7156400b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
index 3819a33..09294a2 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
@@ -240,6 +240,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
    * This isn't the most effective way but adds a little bit of optimization.
    */
   private Long expireStreamAfterAcessMillis;
+  private final Set<String> filesWithOpenStreams;
 
   /**
    * This input port receives incoming tuples.
@@ -264,7 +265,8 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
     }
   };
 
-  private static class RotationState {
+  private static class RotationState
+  {
     boolean notEmpty;
     boolean rotated;
   }
@@ -278,6 +280,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
     fileNameToTmpName = Maps.newHashMap();
     finalizedFiles = Maps.newTreeMap();
     finalizedPart = Maps.newHashMap();
+    filesWithOpenStreams = Sets.newHashSet();
   }
 
   /**
@@ -303,7 +306,8 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
   {
     LOG.debug("setup initiated");
     if (expireStreamAfterAcessMillis == null) {
-      expireStreamAfterAcessMillis = (long)(context.getValue(OperatorContext.SPIN_MILLIS) * context.getValue(Context.DAGContext.CHECKPOINT_WINDOW_COUNT));
+      expireStreamAfterAcessMillis = (long)(context.getValue(OperatorContext.SPIN_MILLIS) *
+        context.getValue(Context.DAGContext.CHECKPOINT_WINDOW_COUNT));
     }
     rollingFile = (maxLength < Long.MAX_VALUE) || (rotationWindows > 0);
 
@@ -321,126 +325,16 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
 
     LOG.debug("FS class {}", fs.getClass());
 
-    //When an entry is removed from the cache, removal listener is notified and it closes the output stream.
-    RemovalListener<String, FSFilterStreamContext> removalListener = new RemovalListener<String, FSFilterStreamContext>()
-    {
-      @Override
-      public void onRemoval(@Nonnull RemovalNotification<String, FSFilterStreamContext> notification)
-      {
-        FSFilterStreamContext streamContext = notification.getValue();
-        if (streamContext != null) {
-
-          //FilterOutputStream filterStream = streamContext.getFilterStream();
-          try {
-            String filename = notification.getKey();
-            String partFileName = getPartFileNamePri(filename);
-
-            LOG.debug("closing {}", partFileName);
-            long start = System.currentTimeMillis();
-            streamContext.close();
-            //filterStream.close();
-            totalWritingTime += System.currentTimeMillis() - start;
-          }
-          catch (IOException e) {
-            throw new RuntimeException(e);
-          }
-        }
-      }
-    };
-
-    //Define cache
-    CacheLoader<String, FSFilterStreamContext> loader = new CacheLoader<String, FSFilterStreamContext>()
-    {
-      @Override
-      public FSFilterStreamContext load(@Nonnull String filename)
-      {
-        String partFileName = getPartFileNamePri(filename);
-        Path originalFilePath = new Path(filePath + Path.SEPARATOR + partFileName);
-
-        Path activeFilePath;
-        if (!alwaysWriteToTmp) {
-          activeFilePath = originalFilePath;
-        } else {
-          //MLHR-1776 : writing to tmp file
-          String tmpFileName = fileNameToTmpName.get(partFileName);
-          if (tmpFileName == null) {
-            tmpFileName = partFileName + '.' + System.currentTimeMillis() + TMP_EXTENSION;
-            fileNameToTmpName.put(partFileName, tmpFileName);
-          }
-          activeFilePath = new Path(filePath + Path.SEPARATOR + tmpFileName);
-        }
-
-        FSDataOutputStream fsOutput;
-
-        boolean sawThisFileBefore = endOffsets.containsKey(filename);
-
-        try {
-          if (fs.exists(originalFilePath) || (alwaysWriteToTmp && fs.exists(activeFilePath))) {
-            if(sawThisFileBefore) {
-              FileStatus fileStatus = fs.getFileStatus(activeFilePath);
-              MutableLong endOffset = endOffsets.get(filename);
-
-              if (endOffset != null) {
-                endOffset.setValue(fileStatus.getLen());
-              }
-              else {
-                endOffsets.put(filename, new MutableLong(fileStatus.getLen()));
-              }
-
-              fsOutput = fs.append(activeFilePath);
-              LOG.debug("appending to {}", activeFilePath);
-            }
-            else {
-              //We never saw this file before and we don't want to append
-              //If the file is rolling we need to delete all its parts.
-              if(rollingFile) {
-                int part = 0;
-
-                while (true) {
-                  Path seenPartFilePath = new Path(filePath + Path.SEPARATOR + getPartFileName(filename, part));
-                  if (!fs.exists(seenPartFilePath)) {
-                    break;
-                  }
-
-                  fs.delete(seenPartFilePath, true);
-                  part = part + 1;
-                }
-
-                fsOutput = fs.create(activeFilePath, (short) replication);
-              }
-              else {
-                //Not rolling is easy, just delete the file and create it again.
-                fs.delete(activeFilePath, true);
-                if(alwaysWriteToTmp){
-                  //we need to delete original file if that exists
-                  if(fs.exists(originalFilePath)){
-                    fs.delete(originalFilePath, true);
-                  }
-                }
-                fsOutput = fs.create(activeFilePath, (short) replication);
-              }
-            }
-          }
-          else {
-            fsOutput = fs.create(activeFilePath, (short) replication);
-            fs.setPermission(activeFilePath, FsPermission.createImmutable(filePermission));
-          }
-
-          LOG.info("opened {}, active {}", partFileName, activeFilePath);
-          return new FSFilterStreamContext(fsOutput);
-        }
-        catch (IOException e) {
-          throw new RuntimeException(e);
-        }
-      }
-    };
+    //building cache
+    RemovalListener<String, FSFilterStreamContext> removalListener = createCacheRemoveListener();
+    CacheLoader<String, FSFilterStreamContext> loader = createCacheLoader();
+    streamsCache = CacheBuilder.newBuilder().maximumSize(maxOpenFiles).expireAfterAccess(expireStreamAfterAcessMillis,
+      TimeUnit.MILLISECONDS).removalListener(removalListener).build(loader);
 
-    streamsCache = CacheBuilder.newBuilder().maximumSize(maxOpenFiles).expireAfterAccess(expireStreamAfterAcessMillis, TimeUnit.MILLISECONDS).removalListener(removalListener).build(loader);
+    LOG.debug("File system class: {}", fs.getClass());
+    LOG.debug("end-offsets {}", endOffsets);
 
     try {
-      LOG.debug("File system class: {}", fs.getClass());
-      LOG.debug("end-offsets {}", endOffsets);
-
       //Restore the files in case they were corrupted and the operator was re-deployed.
       Path writerPath = new Path(filePath);
       if (fs.exists(writerPath)) {
@@ -467,7 +361,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
               byte[] buffer = new byte[COPY_BUFFER_SIZE];
               String recoveryFileName = seenFileNamePart + '.' + System.currentTimeMillis() + TMP_EXTENSION;
               Path recoveryFilePath = new Path(filePath + Path.SEPARATOR + recoveryFileName);
-              FSDataOutputStream fsOutput = fs.create(recoveryFilePath, (short) replication);
+              FSDataOutputStream fsOutput = openStream(recoveryFilePath, false);
 
               while (inputStream.getPos() < offset) {
                 long remainingBytes = offset - inputStream.getPos();
@@ -492,9 +386,9 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
                 fileContext.rename(recoveryFilePath, status.getPath(), Options.Rename.OVERWRITE);
               }
             } else {
-              if (alwaysWriteToTmp) {
+              if (alwaysWriteToTmp && filesWithOpenStreams.contains(seenFileName)) {
                 String currentTmp = seenFileNamePart + '.' + System.currentTimeMillis() + TMP_EXTENSION;
-                FSDataOutputStream outputStream = fs.create(new Path(filePath + Path.SEPARATOR + currentTmp));
+                FSDataOutputStream outputStream = openStream(new Path(filePath + Path.SEPARATOR + currentTmp), false);
                 IOUtils.copy(inputStream, outputStream);
                 outputStream.close();
                 fileNameToTmpName.put(seenFileNamePart, currentTmp);
@@ -506,8 +400,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
       }
 
       if (rollingFile) {
-        //delete the left over future rolling files produced from the previous crashed instance
-        //of this operator.
+        //delete the left over future rolling files produced from the previous crashed instance of this operator.
         for(String seenFileName: endOffsets.keySet()) {
           try {
             Integer fileOpenPart = this.openPart.get(seenFileName).getValue();
@@ -550,10 +443,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
               rotate(seenFileName);
             }
           }
-          catch (IOException e) {
-            throw new RuntimeException(e);
-          }
-          catch (ExecutionException e) {
+          catch (IOException | ExecutionException e) {
             throw new RuntimeException(e);
           }
         }
@@ -561,17 +451,178 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
 
       LOG.debug("setup completed");
       LOG.debug("end-offsets {}", endOffsets);
-    }
-    catch (IOException e) {
+
+    } catch (IOException e) {
       throw new RuntimeException(e);
     }
 
     this.context = context;
 
-    fileCounters.setCounter(Counters.TOTAL_BYTES_WRITTEN,
-                            new MutableLong());
-    fileCounters.setCounter(Counters.TOTAL_TIME_WRITING_MILLISECONDS,
-                            new MutableLong());
+    fileCounters.setCounter(Counters.TOTAL_BYTES_WRITTEN, new MutableLong());
+    fileCounters.setCounter(Counters.TOTAL_TIME_WRITING_MILLISECONDS, new MutableLong());
+  }
+
+  /**
+   * Creates the {@link CacheLoader} for loading an output stream when it is not present in the cache.
+   * @return cache loader
+   */
+  private CacheLoader<String, FSFilterStreamContext> createCacheLoader()
+  {
+    return new CacheLoader<String, FSFilterStreamContext>()
+    {
+      @Override
+      public FSFilterStreamContext load(@Nonnull String filename)
+      {
+        if (rollingFile) {
+          RotationState state = getRotationState(filename);
+          if (rollingFile && state.rotated) {
+            openPart.get(filename).add(1);
+            state.rotated = false;
+            MutableLong offset = endOffsets.get(filename);
+            offset.setValue(0);
+          }
+        }
+
+        String partFileName = getPartFileNamePri(filename);
+        Path originalFilePath = new Path(filePath + Path.SEPARATOR + partFileName);
+
+        Path activeFilePath;
+        if (!alwaysWriteToTmp) {
+          activeFilePath = originalFilePath;
+        } else {
+          //MLHR-1776 : writing to tmp file
+          String tmpFileName = fileNameToTmpName.get(partFileName);
+          if (tmpFileName == null) {
+            tmpFileName = partFileName + '.' + System.currentTimeMillis() + TMP_EXTENSION;
+            fileNameToTmpName.put(partFileName, tmpFileName);
+          }
+          activeFilePath = new Path(filePath + Path.SEPARATOR + tmpFileName);
+        }
+
+        FSDataOutputStream fsOutput;
+
+        boolean sawThisFileBefore = endOffsets.containsKey(filename);
+
+        try {
+          if (fs.exists(originalFilePath) || (alwaysWriteToTmp && fs.exists(activeFilePath))) {
+            if (sawThisFileBefore) {
+              FileStatus fileStatus = fs.getFileStatus(activeFilePath);
+              MutableLong endOffset = endOffsets.get(filename);
+
+              if (endOffset != null) {
+                endOffset.setValue(fileStatus.getLen());
+              } else {
+                endOffsets.put(filename, new MutableLong(fileStatus.getLen()));
+              }
+
+              fsOutput = openStream(activeFilePath, true);
+              LOG.debug("appending to {}", activeFilePath);
+            } else {
+              //We never saw this file before and we don't want to append
+              //If the file is rolling we need to delete all its parts.
+              if (rollingFile) {
+                int part = 0;
+
+                while (true) {
+                  Path seenPartFilePath = new Path(filePath + Path.SEPARATOR + getPartFileName(filename, part));
+                  if (!fs.exists(seenPartFilePath)) {
+                    break;
+                  }
+
+                  fs.delete(seenPartFilePath, true);
+                  part = part + 1;
+                }
+
+                fsOutput = openStream(activeFilePath, false);
+              } else {
+                //Not rolling is easy, just delete the file and create it again.
+                fs.delete(activeFilePath, true);
+                if (alwaysWriteToTmp) {
+                  //we need to delete original file if that exists
+                  if (fs.exists(originalFilePath)) {
+                    fs.delete(originalFilePath, true);
+                  }
+                }
+                fsOutput = openStream(activeFilePath, false);
+              }
+            }
+          } else {
+            fsOutput = openStream(activeFilePath, false);
+          }
+          filesWithOpenStreams.add(filename);
+
+          LOG.info("opened {}, active {}", partFileName, activeFilePath);
+          return new FSFilterStreamContext(fsOutput);
+        } catch (IOException e) {
+          throw new RuntimeException(e);
+        }
+      }
+    };
+  }
+
+  /**
+   * Creates the removal listener which is attached to the cache.
+   *
+   * @return cache entry removal listener.
+   */
+  private RemovalListener<String, FSFilterStreamContext> createCacheRemoveListener()
+  {
+    //When an entry is removed from the cache, removal listener is notified and it closes the output stream.
+    return new RemovalListener<String, FSFilterStreamContext>()
+    {
+      @Override
+      public void onRemoval(@Nonnull RemovalNotification<String, FSFilterStreamContext> notification)
+      {
+        FSFilterStreamContext streamContext = notification.getValue();
+        if (streamContext != null) {
+          try {
+            String filename = notification.getKey();
+            String partFileName = getPartFileNamePri(filename);
+
+            LOG.debug("closing {}", partFileName);
+            long start = System.currentTimeMillis();
+
+            closeStream(streamContext);
+            filesWithOpenStreams.remove(filename);
+
+            totalWritingTime += System.currentTimeMillis() - start;
+          } catch (IOException e) {
+            throw new RuntimeException(e);
+          }
+        }
+      }
+    };
+  }
+
+  /**
+   * Opens the stream for the specified file path in either append mode or create mode.
+   *
+   * @param filepath this is the path of either the actual file or the corresponding temporary file.
+   * @param append   true for opening the file in append mode; false otherwise.
+   * @return output stream.
+   * @throws IOException
+   */
+  protected FSDataOutputStream openStream(Path filepath, boolean append) throws IOException
+  {
+    FSDataOutputStream fsOutput;
+    if (append) {
+      fsOutput = fs.append(filepath);
+    } else {
+      fsOutput = fs.create(filepath, (short)replication);
+      fs.setPermission(filepath, FsPermission.createImmutable(filePermission));
+    }
+    return fsOutput;
+  }
+
+  /**
+   * Closes the stream which has been removed from the cache.
+   *
+   * @param streamContext stream context which is removed from the cache.
+   * @throws IOException
+   */
+  protected void closeStream(FSFilterStreamContext streamContext) throws IOException
+  {
+    streamContext.close();
   }
 
   /**
@@ -592,12 +643,12 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
 
       MutableInt part = finalizedPart.get(fileName);
       if (part == null) {
-        part = new MutableInt();
+        part = new MutableInt(-1);
         finalizedPart.put(fileName, part);
       }
       MutableInt currentOpenPart = openPart.get(fileName);
 
-      for (int x = part.getValue() + 1; x < currentOpenPart.getValue(); x++) {
+      for (int x = part.getValue() + 1; x <= currentOpenPart.getValue(); x++) {
         String prevPartNotFinalized = getPartFileName(fileName, x);
         LOG.debug("request finalize {}", prevPartNotFinalized);
         filesPerWindow.add(prevPartNotFinalized);
@@ -619,12 +670,11 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
     //Close all the streams you can
     Map<String, FSFilterStreamContext> openStreams = streamsCache.asMap();
     for(String seenFileName: openStreams.keySet()) {
-      //FilterOutputStream filterStream = openStreams.get(seenFileName).getFilterStream();
       FSFilterStreamContext fsFilterStreamContext = openStreams.get(seenFileName);
       try {
         long start = System.currentTimeMillis();
-        //filterStream.close();
-        fsFilterStreamContext.close();
+        closeStream(fsFilterStreamContext);
+        filesWithOpenStreams.remove(seenFileName);
         totalWritingTime += System.currentTimeMillis() - start;
       }
       catch (IOException ex) {
@@ -727,11 +777,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
       }
 
       count.add(1);
-    }
-    catch (IOException ex) {
-      throw new RuntimeException(ex);
-    }
-    catch (ExecutionException ex) {
+    } catch (IOException | ExecutionException ex) {
       throw new RuntimeException(ex);
     }
   }
@@ -743,24 +789,19 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
    * @throws IOException
    * @throws ExecutionException
    */
-  protected void rotate(String fileName) throws IllegalArgumentException,
-                                                IOException,
-                                                ExecutionException
+  protected void rotate(String fileName) throws IllegalArgumentException, IOException, ExecutionException
   {
     requestFinalize(fileName);
     counts.remove(fileName);
     streamsCache.invalidate(fileName);
     MutableInt mi = openPart.get(fileName);
-    int rotatedFileIndex = mi.getValue();
-    mi.add(1);
-    LOG.debug("Part file index: {}", openPart);
-    endOffsets.get(fileName).setValue(0L);
-    String partFileName = getPartFileName(fileName, rotatedFileIndex);
+    LOG.debug("Part file rotated {} : {}", fileName, mi.getValue());
+
+    //TODO: remove this as rotateHook is deprecated.
+    String partFileName = getPartFileName(fileName, mi.getValue());
     rotateHook(partFileName);
 
-    if (rotationWindows > 0) {
-      getRotationState(fileName).rotated = true;
-    }
+    getRotationState(fileName).rotated = true;
   }
 
   private RotationState getRotationState(String fileName)
@@ -778,6 +819,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
    * the name of the file part that has just completed closed.
    * @param finishedFile The name of the file part that has just completed and closed.
    */
+  @Deprecated
   protected void rotateHook(@SuppressWarnings("unused") String finishedFile)
   {
     //Do nothing by default
@@ -887,15 +929,10 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
           if (rotate) {
             try {
               rotate(filename);
-            } catch (IOException e) {
-              throw new RuntimeException(e);
-            } catch (ExecutionException e) {
+            } catch (IOException | ExecutionException e) {
               throw new RuntimeException(e);
             }
           }
-          if (rotationState != null) {
-            rotationState.rotated = false;
-          }
         }
       }
     }
@@ -1047,7 +1084,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
     TOTAL_TIME_WRITING_MILLISECONDS
   }
 
-  private class FSFilterStreamContext implements FilterStreamContext<FilterOutputStream>
+  protected class FSFilterStreamContext implements FilterStreamContext<FilterOutputStream>
   {
 
     private FSDataOutputStream outputStream;


[35/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/lib/request.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/lib/request.js b/web/demos/package/node_modules/express/lib/request.js
deleted file mode 100644
index 6fc09ee..0000000
--- a/web/demos/package/node_modules/express/lib/request.js
+++ /dev/null
@@ -1,526 +0,0 @@
-
-/**
- * Module dependencies.
- */
-
-var http = require('http')
-  , utils = require('./utils')
-  , connect = require('connect')
-  , fresh = require('fresh')
-  , parseRange = require('range-parser')
-  , parse = connect.utils.parseUrl
-  , mime = connect.mime;
-
-/**
- * Request prototype.
- */
-
-var req = exports = module.exports = {
-  __proto__: http.IncomingMessage.prototype
-};
-
-/**
- * Return request header.
- *
- * The `Referrer` header field is special-cased,
- * both `Referrer` and `Referer` are interchangeable.
- *
- * Examples:
- *
- *     req.get('Content-Type');
- *     // => "text/plain"
- *
- *     req.get('content-type');
- *     // => "text/plain"
- *
- *     req.get('Something');
- *     // => undefined
- *
- * Aliased as `req.header()`.
- *
- * @param {String} name
- * @return {String}
- * @api public
- */
-
-req.get =
-req.header = function(name){
-  switch (name = name.toLowerCase()) {
-    case 'referer':
-    case 'referrer':
-      return this.headers.referrer
-        || this.headers.referer;
-    default:
-      return this.headers[name];
-  }
-};
-
-/**
- * Check if the given `type(s)` is acceptable, returning
- * the best match when true, otherwise `undefined`, in which
- * case you should respond with 406 "Not Acceptable".
- *
- * The `type` value may be a single mime type string
- * such as "application/json", the extension name
- * such as "json", a comma-delimted list such as "json, html, text/plain",
- * or an array `["json", "html", "text/plain"]`. When a list
- * or array is given the _best_ match, if any is returned.
- *
- * Examples:
- *
- *     // Accept: text/html
- *     req.accepts('html');
- *     // => "html"
- *
- *     // Accept: text/*, application/json
- *     req.accepts('html');
- *     // => "html"
- *     req.accepts('text/html');
- *     // => "text/html"
- *     req.accepts('json, text');
- *     // => "json"
- *     req.accepts('application/json');
- *     // => "application/json"
- *
- *     // Accept: text/*, application/json
- *     req.accepts('image/png');
- *     req.accepts('png');
- *     // => undefined
- *
- *     // Accept: text/*;q=.5, application/json
- *     req.accepts(['html', 'json']);
- *     req.accepts('html, json');
- *     // => "json"
- *
- * @param {String|Array} type(s)
- * @return {String}
- * @api public
- */
-
-req.accepts = function(type){
-  return utils.accepts(type, this.get('Accept'));
-};
-
-/**
- * Check if the given `encoding` is accepted.
- *
- * @param {String} encoding
- * @return {Boolean}
- * @api public
- */
-
-req.acceptsEncoding = function(encoding){
-  return !! ~this.acceptedEncodings.indexOf(encoding);
-};
-
-/**
- * Check if the given `charset` is acceptable,
- * otherwise you should respond with 406 "Not Acceptable".
- *
- * @param {String} charset
- * @return {Boolean}
- * @api public
- */
-
-req.acceptsCharset = function(charset){
-  var accepted = this.acceptedCharsets;
-  return accepted.length
-    ? !! ~accepted.indexOf(charset)
-    : true;
-};
-
-/**
- * Check if the given `lang` is acceptable,
- * otherwise you should respond with 406 "Not Acceptable".
- *
- * @param {String} lang
- * @return {Boolean}
- * @api public
- */
-
-req.acceptsLanguage = function(lang){
-  var accepted = this.acceptedLanguages;
-  return accepted.length
-    ? !! ~accepted.indexOf(lang)
-    : true;
-};
-
-/**
- * Parse Range header field,
- * capping to the given `size`.
- *
- * Unspecified ranges such as "0-" require
- * knowledge of your resource length. In
- * the case of a byte range this is of course
- * the total number of bytes. If the Range
- * header field is not given `null` is returned,
- * `-1` when unsatisfiable, `-2` when syntactically invalid.
- *
- * NOTE: remember that ranges are inclusive, so
- * for example "Range: users=0-3" should respond
- * with 4 users when available, not 3.
- *
- * @param {Number} size
- * @return {Array}
- * @api public
- */
-
-req.range = function(size){
-  var range = this.get('Range');
-  if (!range) return;
-  return parseRange(size, range);
-};
-
-/**
- * Return an array of encodings.
- *
- * Examples:
- *
- *     ['gzip', 'deflate']
- *
- * @return {Array}
- * @api public
- */
-
-req.__defineGetter__('acceptedEncodings', function(){
-  var accept = this.get('Accept-Encoding');
-  return accept
-    ? accept.trim().split(/ *, */)
-    : [];
-});
-
-/**
- * Return an array of Accepted media types
- * ordered from highest quality to lowest.
- *
- * Examples:
- *
- *     [ { value: 'application/json',
- *         quality: 1,
- *         type: 'application',
- *         subtype: 'json' },
- *       { value: 'text/html',
- *         quality: 0.5,
- *         type: 'text',
- *         subtype: 'html' } ]
- *
- * @return {Array}
- * @api public
- */
-
-req.__defineGetter__('accepted', function(){
-  var accept = this.get('Accept');
-  return accept
-    ? utils.parseAccept(accept)
-    : [];
-});
-
-/**
- * Return an array of Accepted languages
- * ordered from highest quality to lowest.
- *
- * Examples:
- *
- *     Accept-Language: en;q=.5, en-us
- *     ['en-us', 'en']
- *
- * @return {Array}
- * @api public
- */
-
-req.__defineGetter__('acceptedLanguages', function(){
-  var accept = this.get('Accept-Language');
-  return accept
-    ? utils
-      .parseParams(accept)
-      .map(function(obj){
-        return obj.value;
-      })
-    : [];
-});
-
-/**
- * Return an array of Accepted charsets
- * ordered from highest quality to lowest.
- *
- * Examples:
- *
- *     Accept-Charset: iso-8859-5;q=.2, unicode-1-1;q=0.8
- *     ['unicode-1-1', 'iso-8859-5']
- *
- * @return {Array}
- * @api public
- */
-
-req.__defineGetter__('acceptedCharsets', function(){
-  var accept = this.get('Accept-Charset');
-  return accept
-    ? utils
-      .parseParams(accept)
-      .map(function(obj){
-        return obj.value;
-      })
-    : [];
-});
-
-/**
- * Return the value of param `name` when present or `defaultValue`.
- *
- *  - Checks route placeholders, ex: _/user/:id_
- *  - Checks body params, ex: id=12, {"id":12}
- *  - Checks query string params, ex: ?id=12
- *
- * To utilize request bodies, `req.body`
- * should be an object. This can be done by using
- * the `connect.bodyParser()` middleware.
- *
- * @param {String} name
- * @param {Mixed} [defaultValue]
- * @return {String}
- * @api public
- */
-
-req.param = function(name, defaultValue){
-  var params = this.params || {};
-  var body = this.body || {};
-  var query = this.query || {};
-  if (null != params[name] && params.hasOwnProperty(name)) return params[name];
-  if (null != body[name]) return body[name];
-  if (null != query[name]) return query[name];
-  return defaultValue;
-};
-
-/**
- * Check if the incoming request contains the "Content-Type"
- * header field, and it contains the give mime `type`.
- *
- * Examples:
- *
- *      // With Content-Type: text/html; charset=utf-8
- *      req.is('html');
- *      req.is('text/html');
- *      req.is('text/*');
- *      // => true
- *
- *      // When Content-Type is application/json
- *      req.is('json');
- *      req.is('application/json');
- *      req.is('application/*');
- *      // => true
- *
- *      req.is('html');
- *      // => false
- *
- * @param {String} type
- * @return {Boolean}
- * @api public
- */
-
-req.is = function(type){
-  var ct = this.get('Content-Type');
-  if (!ct) return false;
-  ct = ct.split(';')[0];
-  if (!~type.indexOf('/')) type = mime.lookup(type);
-  if (~type.indexOf('*')) {
-    type = type.split('/');
-    ct = ct.split('/');
-    if ('*' == type[0] && type[1] == ct[1]) return true;
-    if ('*' == type[1] && type[0] == ct[0]) return true;
-    return false;
-  }
-  return !! ~ct.indexOf(type);
-};
-
-/**
- * Return the protocol string "http" or "https"
- * when requested with TLS. When the "trust proxy"
- * setting is enabled the "X-Forwarded-Proto" header
- * field will be trusted. If you're running behind
- * a reverse proxy that supplies https for you this
- * may be enabled.
- *
- * @return {String}
- * @api public
- */
-
-req.__defineGetter__('protocol', function(){
-  var trustProxy = this.app.get('trust proxy');
-  if (this.connection.encrypted) return 'https';
-  if (!trustProxy) return 'http';
-  var proto = this.get('X-Forwarded-Proto') || 'http';
-  return proto.split(/\s*,\s*/)[0];
-});
-
-/**
- * Short-hand for:
- *
- *    req.protocol == 'https'
- *
- * @return {Boolean}
- * @api public
- */
-
-req.__defineGetter__('secure', function(){
-  return 'https' == this.protocol;
-});
-
-/**
- * Return the remote address, or when
- * "trust proxy" is `true` return
- * the upstream addr.
- *
- * @return {String}
- * @api public
- */
-
-req.__defineGetter__('ip', function(){
-  return this.ips[0] || this.connection.remoteAddress;
-});
-
-/**
- * When "trust proxy" is `true`, parse
- * the "X-Forwarded-For" ip address list.
- *
- * For example if the value were "client, proxy1, proxy2"
- * you would receive the array `["client", "proxy1", "proxy2"]`
- * where "proxy2" is the furthest down-stream.
- *
- * @return {Array}
- * @api public
- */
-
-req.__defineGetter__('ips', function(){
-  var trustProxy = this.app.get('trust proxy');
-  var val = this.get('X-Forwarded-For');
-  return trustProxy && val
-    ? val.split(/ *, */)
-    : [];
-});
-
-/**
- * Return basic auth credentials.
- *
- * Examples:
- *
- *    // http://tobi:hello@example.com
- *    req.auth
- *    // => { username: 'tobi', password: 'hello' }
- *
- * @return {Object} or undefined
- * @api public
- */
-
-req.__defineGetter__('auth', function(){
-  // missing
-  var auth = this.get('Authorization');
-  if (!auth) return;
-
-  // malformed
-  var parts = auth.split(' ');
-  if ('basic' != parts[0].toLowerCase()) return;
-  if (!parts[1]) return;
-  auth = parts[1];
-
-  // credentials
-  auth = new Buffer(auth, 'base64').toString().match(/^([^:]*):(.*)$/);
-  if (!auth) return;
-  return { username: auth[1], password: auth[2] };
-});
-
-/**
- * Return subdomains as an array.
- *
- * Subdomains are the dot-separated parts of the host before the main domain of
- * the app. By default, the domain of the app is assumed to be the last two
- * parts of the host. This can be changed by setting "subdomain offset".
- *
- * For example, if the domain is "tobi.ferrets.example.com":
- * If "subdomain offset" is not set, req.subdomains is `["ferrets", "tobi"]`.
- * If "subdomain offset" is 3, req.subdomains is `["tobi"]`.
- *
- * @return {Array}
- * @api public
- */
-
-req.__defineGetter__('subdomains', function(){
-  var offset = this.app.get('subdomain offset');
-  return (this.host || '')
-    .split('.')
-    .reverse()
-    .slice(offset);
-});
-
-/**
- * Short-hand for `url.parse(req.url).pathname`.
- *
- * @return {String}
- * @api public
- */
-
-req.__defineGetter__('path', function(){
-  return parse(this).pathname;
-});
-
-/**
- * Parse the "Host" header field hostname.
- *
- * @return {String}
- * @api public
- */
-
-req.__defineGetter__('host', function(){
-  var trustProxy = this.app.get('trust proxy');
-  var host = trustProxy && this.get('X-Forwarded-Host');
-  host = host || this.get('Host');
-  if (!host) return;
-  return host.split(':')[0];
-});
-
-/**
- * Check if the request is fresh, aka
- * Last-Modified and/or the ETag
- * still match.
- *
- * @return {Boolean}
- * @api public
- */
-
-req.__defineGetter__('fresh', function(){
-  var method = this.method;
-  var s = this.res.statusCode;
-
-  // GET or HEAD for weak freshness validation only
-  if ('GET' != method && 'HEAD' != method) return false;
-
-  // 2xx or 304 as per rfc2616 14.26
-  if ((s >= 200 && s < 300) || 304 == s) {
-    return fresh(this.headers, this.res._headers);
-  }
-
-  return false;
-});
-
-/**
- * Check if the request is stale, aka
- * "Last-Modified" and / or the "ETag" for the
- * resource has changed.
- *
- * @return {Boolean}
- * @api public
- */
-
-req.__defineGetter__('stale', function(){
-  return !this.fresh;
-});
-
-/**
- * Check if the request was an _XMLHttpRequest_.
- *
- * @return {Boolean}
- * @api public
- */
-
-req.__defineGetter__('xhr', function(){
-  var val = this.get('X-Requested-With') || '';
-  return 'xmlhttprequest' == val.toLowerCase();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/lib/response.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/lib/response.js b/web/demos/package/node_modules/express/lib/response.js
deleted file mode 100644
index 1853dd3..0000000
--- a/web/demos/package/node_modules/express/lib/response.js
+++ /dev/null
@@ -1,760 +0,0 @@
-/**
- * Module dependencies.
- */
-
-var http = require('http')
-  , path = require('path')
-  , connect = require('connect')
-  , utils = connect.utils
-  , sign = require('cookie-signature').sign
-  , normalizeType = require('./utils').normalizeType
-  , normalizeTypes = require('./utils').normalizeTypes
-  , etag = require('./utils').etag
-  , statusCodes = http.STATUS_CODES
-  , cookie = require('cookie')
-  , send = require('send')
-  , mime = connect.mime
-  , basename = path.basename
-  , extname = path.extname
-  , join = path.join;
-
-/**
- * Response prototype.
- */
-
-var res = module.exports = {
-  __proto__: http.ServerResponse.prototype
-};
-
-/**
- * Set status `code`.
- *
- * @param {Number} code
- * @return {ServerResponse}
- * @api public
- */
-
-res.status = function(code){
-  this.statusCode = code;
-  return this;
-};
-
-/**
- * Set Link header field with the given `links`.
- *
- * Examples:
- *
- *    res.links({
- *      next: 'http://api.example.com/users?page=2',
- *      last: 'http://api.example.com/users?page=5'
- *    });
- *
- * @param {Object} links
- * @return {ServerResponse}
- * @api public
- */
-
-res.links = function(links){
-  return this.set('Link', Object.keys(links).map(function(rel){
-    return '<' + links[rel] + '>; rel="' + rel + '"';
-  }).join(', '));
-};
-
-/**
- * Send a response.
- *
- * Examples:
- *
- *     res.send(new Buffer('wahoo'));
- *     res.send({ some: 'json' });
- *     res.send('<p>some html</p>');
- *     res.send(404, 'Sorry, cant find that');
- *     res.send(404);
- *
- * @param {Mixed} body or status
- * @param {Mixed} body
- * @return {ServerResponse}
- * @api public
- */
-
-res.send = function(body){
-  var req = this.req;
-  var head = 'HEAD' == req.method;
-  var len;
-
-  // settings
-  var app = this.app;
-
-  // allow status / body
-  if (2 == arguments.length) {
-    // res.send(body, status) backwards compat
-    if ('number' != typeof body && 'number' == typeof arguments[1]) {
-      this.statusCode = arguments[1];
-    } else {
-      this.statusCode = body;
-      body = arguments[1];
-    }
-  }
-
-  switch (typeof body) {
-    // response status
-    case 'number':
-      this.get('Content-Type') || this.type('txt');
-      this.statusCode = body;
-      body = http.STATUS_CODES[body];
-      break;
-    // string defaulting to html
-    case 'string':
-      if (!this.get('Content-Type')) {
-        this.charset = this.charset || 'utf-8';
-        this.type('html');
-      }
-      break;
-    case 'boolean':
-    case 'object':
-      if (null == body) {
-        body = '';
-      } else if (Buffer.isBuffer(body)) {
-        this.get('Content-Type') || this.type('bin');
-      } else {
-        return this.json(body);
-      }
-      break;
-  }
-
-  // populate Content-Length
-  if (undefined !== body && !this.get('Content-Length')) {
-    this.set('Content-Length', len = Buffer.isBuffer(body)
-      ? body.length
-      : Buffer.byteLength(body));
-  }
-
-  // ETag support
-  // TODO: W/ support
-  if (app.settings.etag && len > 1024 && 'GET' == req.method) {
-    if (!this.get('ETag')) {
-      this.set('ETag', etag(body));
-    }
-  }
-
-  // freshness
-  if (req.fresh) this.statusCode = 304;
-
-  // strip irrelevant headers
-  if (204 == this.statusCode || 304 == this.statusCode) {
-    this.removeHeader('Content-Type');
-    this.removeHeader('Content-Length');
-    this.removeHeader('Transfer-Encoding');
-    body = '';
-  }
-
-  // respond
-  this.end(head ? null : body);
-  return this;
-};
-
-/**
- * Send JSON response.
- *
- * Examples:
- *
- *     res.json(null);
- *     res.json({ user: 'tj' });
- *     res.json(500, 'oh noes!');
- *     res.json(404, 'I dont have that');
- *
- * @param {Mixed} obj or status
- * @param {Mixed} obj
- * @return {ServerResponse}
- * @api public
- */
-
-res.json = function(obj){
-  // allow status / body
-  if (2 == arguments.length) {
-    // res.json(body, status) backwards compat
-    if ('number' == typeof arguments[1]) {
-      this.statusCode = arguments[1];
-    } else {
-      this.statusCode = obj;
-      obj = arguments[1];
-    }
-  }
-
-  // settings
-  var app = this.app;
-  var replacer = app.get('json replacer');
-  var spaces = app.get('json spaces');
-  var body = JSON.stringify(obj, replacer, spaces);
-
-  // content-type
-  this.get('Content-Type') || this.set('Content-Type', 'application/json');
-
-  return this.send(body);
-};
-
-/**
- * Send JSON response with JSONP callback support.
- *
- * Examples:
- *
- *     res.jsonp(null);
- *     res.jsonp({ user: 'tj' });
- *     res.jsonp(500, 'oh noes!');
- *     res.jsonp(404, 'I dont have that');
- *
- * @param {Mixed} obj or status
- * @param {Mixed} obj
- * @return {ServerResponse}
- * @api public
- */
-
-res.jsonp = function(obj){
-  // allow status / body
-  if (2 == arguments.length) {
-    // res.json(body, status) backwards compat
-    if ('number' == typeof arguments[1]) {
-      this.statusCode = arguments[1];
-    } else {
-      this.statusCode = obj;
-      obj = arguments[1];
-    }
-  }
-
-  // settings
-  var app = this.app;
-  var replacer = app.get('json replacer');
-  var spaces = app.get('json spaces');
-  var body = JSON.stringify(obj, replacer, spaces)
-    .replace(/\u2028/g, '\\u2028')
-    .replace(/\u2029/g, '\\u2029');
-  var callback = this.req.query[app.get('jsonp callback name')];
-
-  // content-type
-  this.charset = this.charset || 'utf-8';
-  this.set('Content-Type', 'application/json');
-
-  // jsonp
-  if (callback) {
-    if (callback instanceof Array) callback = callback[0];
-    this.set('Content-Type', 'text/javascript');
-    var cb = callback.replace(/[^\[\]\w$.]/g, '');
-    body = cb + ' && ' + cb + '(' + body + ');';
-  }
-
-  return this.send(body);
-};
-
-/**
- * Transfer the file at the given `path`.
- *
- * Automatically sets the _Content-Type_ response header field.
- * The callback `fn(err)` is invoked when the transfer is complete
- * or when an error occurs. Be sure to check `res.sentHeader`
- * if you wish to attempt responding, as the header and some data
- * may have already been transferred.
- *
- * Options:
- *
- *   - `maxAge` defaulting to 0
- *   - `root`   root directory for relative filenames
- *
- * Examples:
- *
- *  The following example illustrates how `res.sendfile()` may
- *  be used as an alternative for the `static()` middleware for
- *  dynamic situations. The code backing `res.sendfile()` is actually
- *  the same code, so HTTP cache support etc is identical.
- *
- *     app.get('/user/:uid/photos/:file', function(req, res){
- *       var uid = req.params.uid
- *         , file = req.params.file;
- *
- *       req.user.mayViewFilesFrom(uid, function(yes){
- *         if (yes) {
- *           res.sendfile('/uploads/' + uid + '/' + file);
- *         } else {
- *           res.send(403, 'Sorry! you cant see that.');
- *         }
- *       });
- *     });
- *
- * @param {String} path
- * @param {Object|Function} options or fn
- * @param {Function} fn
- * @api public
- */
-
-res.sendfile = function(path, options, fn){
-  var self = this
-    , req = self.req
-    , next = this.req.next
-    , options = options || {}
-    , done;
-
-  // support function as second arg
-  if ('function' == typeof options) {
-    fn = options;
-    options = {};
-  }
-
-  // socket errors
-  req.socket.on('error', error);
-
-  // errors
-  function error(err) {
-    if (done) return;
-    done = true;
-
-    // clean up
-    cleanup();
-    if (!self.headerSent) self.removeHeader('Content-Disposition');
-
-    // callback available
-    if (fn) return fn(err);
-
-    // list in limbo if there's no callback
-    if (self.headerSent) return;
-
-    // delegate
-    next(err);
-  }
-
-  // streaming
-  function stream() {
-    if (done) return;
-    cleanup();
-    if (fn) self.on('finish', fn);
-  }
-
-  // cleanup
-  function cleanup() {
-    req.socket.removeListener('error', error);
-  }
-
-  // transfer
-  var file = send(req, path);
-  if (options.root) file.root(options.root);
-  file.maxage(options.maxAge || 0);
-  file.on('error', error);
-  file.on('directory', next);
-  file.on('stream', stream);
-  file.pipe(this);
-  this.on('finish', cleanup);
-};
-
-/**
- * Transfer the file at the given `path` as an attachment.
- *
- * Optionally providing an alternate attachment `filename`,
- * and optional callback `fn(err)`. The callback is invoked
- * when the data transfer is complete, or when an error has
- * ocurred. Be sure to check `res.headerSent` if you plan to respond.
- *
- * This method uses `res.sendfile()`.
- *
- * @param {String} path
- * @param {String|Function} filename or fn
- * @param {Function} fn
- * @api public
- */
-
-res.download = function(path, filename, fn){
-  // support function as second arg
-  if ('function' == typeof filename) {
-    fn = filename;
-    filename = null;
-  }
-
-  filename = filename || path;
-  this.set('Content-Disposition', 'attachment; filename="' + basename(filename) + '"');
-  return this.sendfile(path, fn);
-};
-
-/**
- * Set _Content-Type_ response header with `type` through `mime.lookup()`
- * when it does not contain "/", or set the Content-Type to `type` otherwise.
- *
- * Examples:
- *
- *     res.type('.html');
- *     res.type('html');
- *     res.type('json');
- *     res.type('application/json');
- *     res.type('png');
- *
- * @param {String} type
- * @return {ServerResponse} for chaining
- * @api public
- */
-
-res.contentType =
-res.type = function(type){
-  return this.set('Content-Type', ~type.indexOf('/')
-    ? type
-    : mime.lookup(type));
-};
-
-/**
- * Respond to the Acceptable formats using an `obj`
- * of mime-type callbacks.
- *
- * This method uses `req.accepted`, an array of
- * acceptable types ordered by their quality values.
- * When "Accept" is not present the _first_ callback
- * is invoked, otherwise the first match is used. When
- * no match is performed the server responds with
- * 406 "Not Acceptable".
- *
- * Content-Type is set for you, however if you choose
- * you may alter this within the callback using `res.type()`
- * or `res.set('Content-Type', ...)`.
- *
- *    res.format({
- *      'text/plain': function(){
- *        res.send('hey');
- *      },
- *
- *      'text/html': function(){
- *        res.send('<p>hey</p>');
- *      },
- *
- *      'appliation/json': function(){
- *        res.send({ message: 'hey' });
- *      }
- *    });
- *
- * In addition to canonicalized MIME types you may
- * also use extnames mapped to these types:
- *
- *    res.format({
- *      text: function(){
- *        res.send('hey');
- *      },
- *
- *      html: function(){
- *        res.send('<p>hey</p>');
- *      },
- *
- *      json: function(){
- *        res.send({ message: 'hey' });
- *      }
- *    });
- *
- * By default Express passes an `Error`
- * with a `.status` of 406 to `next(err)`
- * if a match is not made. If you provide
- * a `.default` callback it will be invoked
- * instead.
- *
- * @param {Object} obj
- * @return {ServerResponse} for chaining
- * @api public
- */
-
-res.format = function(obj){
-  var req = this.req
-    , next = req.next;
-
-  var fn = obj.default;
-  if (fn) delete obj.default;
-  var keys = Object.keys(obj);
-
-  var key = req.accepts(keys);
-
-  this.set('Vary', 'Accept');
-
-  if (key) {
-    this.set('Content-Type', normalizeType(key).value);
-    obj[key](req, this, next);
-  } else if (fn) {
-    fn();
-  } else {
-    var err = new Error('Not Acceptable');
-    err.status = 406;
-    err.types = normalizeTypes(keys).map(function(o){ return o.value });
-    next(err);
-  }
-
-  return this;
-};
-
-/**
- * Set _Content-Disposition_ header to _attachment_ with optional `filename`.
- *
- * @param {String} filename
- * @return {ServerResponse}
- * @api public
- */
-
-res.attachment = function(filename){
-  if (filename) this.type(extname(filename));
-  this.set('Content-Disposition', filename
-    ? 'attachment; filename="' + basename(filename) + '"'
-    : 'attachment');
-  return this;
-};
-
-/**
- * Set header `field` to `val`, or pass
- * an object of header fields.
- *
- * Examples:
- *
- *    res.set('Foo', ['bar', 'baz']);
- *    res.set('Accept', 'application/json');
- *    res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });
- *
- * Aliased as `res.header()`.
- *
- * @param {String|Object|Array} field
- * @param {String} val
- * @return {ServerResponse} for chaining
- * @api public
- */
-
-res.set =
-res.header = function(field, val){
-  if (2 == arguments.length) {
-    if (Array.isArray(val)) val = val.map(String);
-    else val = String(val);
-    this.setHeader(field, val);
-  } else {
-    for (var key in field) {
-      this.set(key, field[key]);
-    }
-  }
-  return this;
-};
-
-/**
- * Get value for header `field`.
- *
- * @param {String} field
- * @return {String}
- * @api public
- */
-
-res.get = function(field){
-  return this.getHeader(field);
-};
-
-/**
- * Clear cookie `name`.
- *
- * @param {String} name
- * @param {Object} options
- * @param {ServerResponse} for chaining
- * @api public
- */
-
-res.clearCookie = function(name, options){
-  var opts = { expires: new Date(1), path: '/' };
-  return this.cookie(name, '', options
-    ? utils.merge(opts, options)
-    : opts);
-};
-
-/**
- * Set cookie `name` to `val`, with the given `options`.
- *
- * Options:
- *
- *    - `maxAge`   max-age in milliseconds, converted to `expires`
- *    - `signed`   sign the cookie
- *    - `path`     defaults to "/"
- *
- * Examples:
- *
- *    // "Remember Me" for 15 minutes
- *    res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });
- *
- *    // save as above
- *    res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true })
- *
- * @param {String} name
- * @param {String|Object} val
- * @param {Options} options
- * @api public
- */
-
-res.cookie = function(name, val, options){
-  options = utils.merge({}, options);
-  var secret = this.req.secret;
-  var signed = options.signed;
-  if (signed && !secret) throw new Error('connect.cookieParser("secret") required for signed cookies');
-  if ('number' == typeof val) val = val.toString();
-  if ('object' == typeof val) val = 'j:' + JSON.stringify(val);
-  if (signed) val = 's:' + sign(val, secret);
-  if ('maxAge' in options) {
-    options.expires = new Date(Date.now() + options.maxAge);
-    options.maxAge /= 1000;
-  }
-  if (null == options.path) options.path = '/';
-  this.set('Set-Cookie', cookie.serialize(name, String(val), options));
-  return this;
-};
-
-
-/**
- * Set the location header to `url`.
- *
- * The given `url` can also be the name of a mapped url, for
- * example by default express supports "back" which redirects
- * to the _Referrer_ or _Referer_ headers or "/".
- *
- * Examples:
- *
- *    res.location('/foo/bar').;
- *    res.location('http://example.com');
- *    res.location('../login'); // /blog/post/1 -> /blog/login
- *
- * Mounting:
- *
- *   When an application is mounted and `res.location()`
- *   is given a path that does _not_ lead with "/" it becomes
- *   relative to the mount-point. For example if the application
- *   is mounted at "/blog", the following would become "/blog/login".
- *
- *      res.location('login');
- *
- *   While the leading slash would result in a location of "/login":
- *
- *      res.location('/login');
- *
- * @param {String} url
- * @api public
- */
-
-res.location = function(url){
-  var app = this.app
-    , req = this.req;
-
-  // setup redirect map
-  var map = { back: req.get('Referrer') || '/' };
-
-  // perform redirect
-  url = map[url] || url;
-
-  // relative
-  if (!~url.indexOf('://') && 0 != url.indexOf('//')) {
-    var path
-
-    // relative to path
-    if ('.' == url[0]) {
-      path = req.originalUrl.split('?')[0]
-      url =  path + ('/' == path[path.length - 1] ? '' : '/') + url;
-      // relative to mount-point
-    } else if ('/' != url[0]) {
-      path = app.path();
-      url = path + '/' + url;
-    }
-  }
-
-  // Respond
-  this.set('Location', url);
-  return this;
-};
-
-/**
- * Redirect to the given `url` with optional response `status`
- * defaulting to 302.
- *
- * The resulting `url` is determined by `res.location()`, so
- * it will play nicely with mounted apps, relative paths,
- * `"back"` etc.
- *
- * Examples:
- *
- *    res.redirect('/foo/bar');
- *    res.redirect('http://example.com');
- *    res.redirect(301, 'http://example.com');
- *    res.redirect('http://example.com', 301);
- *    res.redirect('../login'); // /blog/post/1 -> /blog/login
- *
- * @param {String} url
- * @param {Number} code
- * @api public
- */
-
-res.redirect = function(url){
-  var app = this.app
-    , head = 'HEAD' == this.req.method
-    , status = 302
-    , body;
-
-  // allow status / url
-  if (2 == arguments.length) {
-    if ('number' == typeof url) {
-      status = url;
-      url = arguments[1];
-    } else {
-      status = arguments[1];
-    }
-  }
-
-  // Set location header
-  this.location(url);
-  url = this.get('Location');
-
-  // Support text/{plain,html} by default
-  this.format({
-    text: function(){
-      body = statusCodes[status] + '. Redirecting to ' + encodeURI(url);
-    },
-
-    html: function(){
-      var u = utils.escape(url);
-      body = '<p>' + statusCodes[status] + '. Redirecting to <a href="' + u + '">' + u + '</a></p>';
-    },
-
-    default: function(){
-      body = '';
-    }
-  });
-
-  // Respond
-  this.statusCode = status;
-  this.set('Content-Length', Buffer.byteLength(body));
-  this.end(head ? null : body);
-};
-
-/**
- * Render `view` with the given `options` and optional callback `fn`.
- * When a callback function is given a response will _not_ be made
- * automatically, otherwise a response of _200_ and _text/html_ is given.
- *
- * Options:
- *
- *  - `cache`     boolean hinting to the engine it should cache
- *  - `filename`  filename of the view being rendered
- *
- * @param  {String} view
- * @param  {Object|Function} options or callback function
- * @param  {Function} fn
- * @api public
- */
-
-res.render = function(view, options, fn){
-  var self = this
-    , options = options || {}
-    , req = this.req
-    , app = req.app;
-
-  // support callback function as second arg
-  if ('function' == typeof options) {
-    fn = options, options = {};
-  }
-
-  // merge res.locals
-  options._locals = self.locals;
-
-  // default callback to respond
-  fn = fn || function(err, str){
-    if (err) return req.next(err);
-    self.send(str);
-  };
-
-  // render
-  app.render(view, options, fn);
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/lib/router/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/lib/router/index.js b/web/demos/package/node_modules/express/lib/router/index.js
deleted file mode 100644
index 957f4a9..0000000
--- a/web/demos/package/node_modules/express/lib/router/index.js
+++ /dev/null
@@ -1,311 +0,0 @@
-/**
- * Module dependencies.
- */
-
-var Route = require('./route')
-  , utils = require('../utils')
-  , methods = require('methods')
-  , debug = require('debug')('express:router')
-  , parse = require('connect').utils.parseUrl;
-
-/**
- * Expose `Router` constructor.
- */
-
-exports = module.exports = Router;
-
-/**
- * Initialize a new `Router` with the given `options`.
- *
- * @param {Object} options
- * @api private
- */
-
-function Router(options) {
-  options = options || {};
-  var self = this;
-  this.map = {};
-  this.params = {};
-  this._params = [];
-  this.caseSensitive = options.caseSensitive;
-  this.strict = options.strict;
-  this.middleware = function router(req, res, next){
-    self._dispatch(req, res, next);
-  };
-}
-
-/**
- * Register a param callback `fn` for the given `name`.
- *
- * @param {String|Function} name
- * @param {Function} fn
- * @return {Router} for chaining
- * @api public
- */
-
-Router.prototype.param = function(name, fn){
-  // param logic
-  if ('function' == typeof name) {
-    this._params.push(name);
-    return;
-  }
-
-  // apply param functions
-  var params = this._params
-    , len = params.length
-    , ret;
-
-  for (var i = 0; i < len; ++i) {
-    if (ret = params[i](name, fn)) {
-      fn = ret;
-    }
-  }
-
-  // ensure we end up with a
-  // middleware function
-  if ('function' != typeof fn) {
-    throw new Error('invalid param() call for ' + name + ', got ' + fn);
-  }
-
-  (this.params[name] = this.params[name] || []).push(fn);
-  return this;
-};
-
-/**
- * Route dispatcher aka the route "middleware".
- *
- * @param {IncomingMessage} req
- * @param {ServerResponse} res
- * @param {Function} next
- * @api private
- */
-
-Router.prototype._dispatch = function(req, res, next){
-  var params = this.params
-    , self = this;
-
-  debug('dispatching %s %s (%s)', req.method, req.url, req.originalUrl);
-
-  // route dispatch
-  (function pass(i, err){
-    var paramCallbacks
-      , paramIndex = 0
-      , paramVal
-      , route
-      , keys
-      , key;
-
-    // match next route
-    function nextRoute(err) {
-      pass(req._route_index + 1, err);
-    }
-
-    // match route
-    req.route = route = self.matchRequest(req, i);
-
-    // implied OPTIONS
-    if (!route && 'OPTIONS' == req.method) return self._options(req, res);
-
-    // no route
-    if (!route) return next(err);
-    debug('matched %s %s', route.method, route.path);
-
-    // we have a route
-    // start at param 0
-    req.params = route.params;
-    keys = route.keys;
-    i = 0;
-
-    // param callbacks
-    function param(err) {
-      paramIndex = 0;
-      key = keys[i++];
-      paramVal = key && req.params[key.name];
-      paramCallbacks = key && params[key.name];
-
-      try {
-        if ('route' == err) {
-          nextRoute();
-        } else if (err) {
-          i = 0;
-          callbacks(err);
-        } else if (paramCallbacks && undefined !== paramVal) {
-          paramCallback();
-        } else if (key) {
-          param();
-        } else {
-          i = 0;
-          callbacks();
-        }
-      } catch (err) {
-        param(err);
-      }
-    };
-
-    param(err);
-
-    // single param callbacks
-    function paramCallback(err) {
-      var fn = paramCallbacks[paramIndex++];
-      if (err || !fn) return param(err);
-      fn(req, res, paramCallback, paramVal, key.name);
-    }
-
-    // invoke route callbacks
-    function callbacks(err) {
-      var fn = route.callbacks[i++];
-      try {
-        if ('route' == err) {
-          nextRoute();
-        } else if (err && fn) {
-          if (fn.length < 4) return callbacks(err);
-          fn(err, req, res, callbacks);
-        } else if (fn) {
-          if (fn.length < 4) return fn(req, res, callbacks);
-          callbacks();
-        } else {
-          nextRoute(err);
-        }
-      } catch (err) {
-        callbacks(err);
-      }
-    }
-  })(0);
-};
-
-/**
- * Respond to __OPTIONS__ method.
- *
- * @param {IncomingMessage} req
- * @param {ServerResponse} res
- * @api private
- */
-
-Router.prototype._options = function(req, res){
-  var path = parse(req).pathname
-    , body = this._optionsFor(path).join(',');
-  res.set('Allow', body).send(body);
-};
-
-/**
- * Return an array of HTTP verbs or "options" for `path`.
- *
- * @param {String} path
- * @return {Array}
- * @api private
- */
-
-Router.prototype._optionsFor = function(path){
-  var self = this;
-  return methods.filter(function(method){
-    var routes = self.map[method];
-    if (!routes || 'options' == method) return;
-    for (var i = 0, len = routes.length; i < len; ++i) {
-      if (routes[i].match(path)) return true;
-    }
-  }).map(function(method){
-    return method.toUpperCase();
-  });
-};
-
-/**
- * Attempt to match a route for `req`
- * with optional starting index of `i`
- * defaulting to 0.
- *
- * @param {IncomingMessage} req
- * @param {Number} i
- * @return {Route}
- * @api private
- */
-
-Router.prototype.matchRequest = function(req, i, head){
-  var method = req.method.toLowerCase()
-    , url = parse(req)
-    , path = url.pathname
-    , routes = this.map
-    , i = i || 0
-    , route;
-
-  // HEAD support
-  if (!head && 'head' == method) {
-    route = this.matchRequest(req, i, true);
-    if (route) return route;
-     method = 'get';
-  }
-
-  // routes for this method
-  if (routes = routes[method]) {
-
-    // matching routes
-    for (var len = routes.length; i < len; ++i) {
-      route = routes[i];
-      if (route.match(path)) {
-        req._route_index = i;
-        return route;
-      }
-    }
-  }
-};
-
-/**
- * Attempt to match a route for `method`
- * and `url` with optional starting
- * index of `i` defaulting to 0.
- *
- * @param {String} method
- * @param {String} url
- * @param {Number} i
- * @return {Route}
- * @api private
- */
-
-Router.prototype.match = function(method, url, i, head){
-  var req = { method: method, url: url };
-  return  this.matchRequest(req, i, head);
-};
-
-/**
- * Route `method`, `path`, and one or more callbacks.
- *
- * @param {String} method
- * @param {String} path
- * @param {Function} callback...
- * @return {Router} for chaining
- * @api private
- */
-
-Router.prototype.route = function(method, path, callbacks){
-  var method = method.toLowerCase()
-    , callbacks = utils.flatten([].slice.call(arguments, 2));
-
-  // ensure path was given
-  if (!path) throw new Error('Router#' + method + '() requires a path');
-
-  // ensure all callbacks are functions
-  callbacks.forEach(function(fn, i){
-    if ('function' == typeof fn) return;
-    var type = {}.toString.call(fn);
-    var msg = '.' + method + '() requires callback functions but got a ' + type;
-    throw new Error(msg);
-  });
-
-  // create the route
-  debug('defined %s %s', method, path);
-  var route = new Route(method, path, callbacks, {
-    sensitive: this.caseSensitive,
-    strict: this.strict
-  });
-
-  // add it
-  (this.map[method] = this.map[method] || []).push(route);
-  return this;
-};
-
-methods.forEach(function(method){
-  Router.prototype[method] = function(path){
-    var args = [method].concat([].slice.call(arguments));
-    this.route.apply(this, args);
-    return this;
-  };
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/lib/router/route.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/lib/router/route.js b/web/demos/package/node_modules/express/lib/router/route.js
deleted file mode 100644
index c1a0b5e..0000000
--- a/web/demos/package/node_modules/express/lib/router/route.js
+++ /dev/null
@@ -1,72 +0,0 @@
-
-/**
- * Module dependencies.
- */
-
-var utils = require('../utils');
-
-/**
- * Expose `Route`.
- */
-
-module.exports = Route;
-
-/**
- * Initialize `Route` with the given HTTP `method`, `path`,
- * and an array of `callbacks` and `options`.
- *
- * Options:
- *
- *   - `sensitive`    enable case-sensitive routes
- *   - `strict`       enable strict matching for trailing slashes
- *
- * @param {String} method
- * @param {String} path
- * @param {Array} callbacks
- * @param {Object} options.
- * @api private
- */
-
-function Route(method, path, callbacks, options) {
-  options = options || {};
-  this.path = path;
-  this.method = method;
-  this.callbacks = callbacks;
-  this.regexp = utils.pathRegexp(path
-    , this.keys = []
-    , options.sensitive
-    , options.strict);
-}
-
-/**
- * Check if this route matches `path`, if so
- * populate `.params`.
- *
- * @param {String} path
- * @return {Boolean}
- * @api private
- */
-
-Route.prototype.match = function(path){
-  var keys = this.keys
-    , params = this.params = []
-    , m = this.regexp.exec(path);
-
-  if (!m) return false;
-
-  for (var i = 1, len = m.length; i < len; ++i) {
-    var key = keys[i - 1];
-
-    var val = 'string' == typeof m[i]
-      ? decodeURIComponent(m[i])
-      : m[i];
-
-    if (key) {
-      params[key.name] = val;
-    } else {
-      params.push(val);
-    }
-  }
-
-  return true;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/lib/utils.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/lib/utils.js b/web/demos/package/node_modules/express/lib/utils.js
deleted file mode 100644
index fd245a8..0000000
--- a/web/demos/package/node_modules/express/lib/utils.js
+++ /dev/null
@@ -1,313 +0,0 @@
-
-/**
- * Module dependencies.
- */
-
-var mime = require('connect').mime
-  , crc32 = require('buffer-crc32');
-
-/**
- * toString ref.
- */
-
-var toString = {}.toString;
-
-/**
- * Return ETag for `body`.
- *
- * @param {String|Buffer} body
- * @return {String}
- * @api private
- */
-
-exports.etag = function(body){
-  return '"' + crc32.signed(body) + '"';
-};
-
-/**
- * Make `locals()` bound to the given `obj`.
- *
- * This is used for `app.locals` and `res.locals`.
- *
- * @param {Object} obj
- * @return {Function}
- * @api private
- */
-
-exports.locals = function(obj){
-  function locals(obj){
-    for (var key in obj) locals[key] = obj[key];
-    return obj;
-  };
-
-  return locals;
-};
-
-/**
- * Check if `path` looks absolute.
- *
- * @param {String} path
- * @return {Boolean}
- * @api private
- */
-
-exports.isAbsolute = function(path){
-  if ('/' == path[0]) return true;
-  if (':' == path[1] && '\\' == path[2]) return true;
-};
-
-/**
- * Flatten the given `arr`.
- *
- * @param {Array} arr
- * @return {Array}
- * @api private
- */
-
-exports.flatten = function(arr, ret){
-  var ret = ret || []
-    , len = arr.length;
-  for (var i = 0; i < len; ++i) {
-    if (Array.isArray(arr[i])) {
-      exports.flatten(arr[i], ret);
-    } else {
-      ret.push(arr[i]);
-    }
-  }
-  return ret;
-};
-
-/**
- * Normalize the given `type`, for example "html" becomes "text/html".
- *
- * @param {String} type
- * @return {Object}
- * @api private
- */
-
-exports.normalizeType = function(type){
-  return ~type.indexOf('/')
-    ? acceptParams(type)
-    : { value: mime.lookup(type), params: {} };
-};
-
-/**
- * Normalize `types`, for example "html" becomes "text/html".
- *
- * @param {Array} types
- * @return {Array}
- * @api private
- */
-
-exports.normalizeTypes = function(types){
-  var ret = [];
-
-  for (var i = 0; i < types.length; ++i) {
-    ret.push(exports.normalizeType(types[i]));
-  }
-
-  return ret;
-};
-
-/**
- * Return the acceptable type in `types`, if any.
- *
- * @param {Array} types
- * @param {String} str
- * @return {String}
- * @api private
- */
-
-exports.acceptsArray = function(types, str){
-  // accept anything when Accept is not present
-  if (!str) return types[0];
-
-  // parse
-  var accepted = exports.parseAccept(str)
-    , normalized = exports.normalizeTypes(types)
-    , len = accepted.length;
-
-  for (var i = 0; i < len; ++i) {
-    for (var j = 0, jlen = types.length; j < jlen; ++j) {
-      if (exports.accept(normalized[j], accepted[i])) {
-        return types[j];
-      }
-    }
-  }
-};
-
-/**
- * Check if `type(s)` are acceptable based on
- * the given `str`.
- *
- * @param {String|Array} type(s)
- * @param {String} str
- * @return {Boolean|String}
- * @api private
- */
-
-exports.accepts = function(type, str){
-  if ('string' == typeof type) type = type.split(/ *, */);
-  return exports.acceptsArray(type, str);
-};
-
-/**
- * Check if `type` array is acceptable for `other`.
- *
- * @param {Object} type
- * @param {Object} other
- * @return {Boolean}
- * @api private
- */
-
-exports.accept = function(type, other){
-  var t = type.value.split('/');
-  return (t[0] == other.type || '*' == other.type)
-    && (t[1] == other.subtype || '*' == other.subtype)
-    && paramsEqual(type.params, other.params);
-};
-
-/**
- * Check if accept params are equal.
- *
- * @param {Object} a
- * @param {Object} b
- * @return {Boolean}
- * @api private
- */
-
-function paramsEqual(a, b){
-  return !Object.keys(a).some(function(k) {
-    return a[k] != b[k];
-  });
-}
-
-/**
- * Parse accept `str`, returning
- * an array objects containing
- * `.type` and `.subtype` along
- * with the values provided by
- * `parseQuality()`.
- *
- * @param {Type} name
- * @return {Type}
- * @api private
- */
-
-exports.parseAccept = function(str){
-  return exports
-    .parseParams(str)
-    .map(function(obj){
-      var parts = obj.value.split('/');
-      obj.type = parts[0];
-      obj.subtype = parts[1];
-      return obj;
-    });
-};
-
-/**
- * Parse quality `str`, returning an
- * array of objects with `.value`,
- * `.quality` and optional `.params`
- *
- * @param {String} str
- * @return {Array}
- * @api private
- */
-
-exports.parseParams = function(str){
-  return str
-    .split(/ *, */)
-    .map(acceptParams)
-    .filter(function(obj){
-      return obj.quality;
-    })
-    .sort(function(a, b){
-      if (a.quality === b.quality) {
-        return a.originalIndex - b.originalIndex;
-      } else {
-        return b.quality - a.quality;
-      }
-    });
-};
-
-/**
- * Parse accept params `str` returning an
- * object with `.value`, `.quality` and `.params`.
- * also includes `.originalIndex` for stable sorting
- *
- * @param {String} str
- * @return {Object}
- * @api private
- */
-
-function acceptParams(str, index) {
-  var parts = str.split(/ *; */);
-  var ret = { value: parts[0], quality: 1, params: {}, originalIndex: index };
-
-  for (var i = 1; i < parts.length; ++i) {
-    var pms = parts[i].split(/ *= */);
-    if ('q' == pms[0]) {
-      ret.quality = parseFloat(pms[1]);
-    } else {
-      ret.params[pms[0]] = pms[1];
-    }
-  }
-
-  return ret;
-}
-
-/**
- * Escape special characters in the given string of html.
- *
- * @param  {String} html
- * @return {String}
- * @api private
- */
-
-exports.escape = function(html) {
-  return String(html)
-    .replace(/&/g, '&amp;')
-    .replace(/"/g, '&quot;')
-    .replace(/</g, '&lt;')
-    .replace(/>/g, '&gt;');
-};
-
-/**
- * Normalize the given path string,
- * returning a regular expression.
- *
- * An empty array should be passed,
- * which will contain the placeholder
- * key names. For example "/user/:id" will
- * then contain ["id"].
- *
- * @param  {String|RegExp|Array} path
- * @param  {Array} keys
- * @param  {Boolean} sensitive
- * @param  {Boolean} strict
- * @return {RegExp}
- * @api private
- */
-
-exports.pathRegexp = function(path, keys, sensitive, strict) {
-  if (toString.call(path) == '[object RegExp]') return path;
-  if (Array.isArray(path)) path = '(' + path.join('|') + ')';
-  path = path
-    .concat(strict ? '' : '/?')
-    .replace(/\/\(/g, '(?:/')
-    .replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?(\*)?/g, function(_, slash, format, key, capture, optional, star){
-      keys.push({ name: key, optional: !! optional });
-      slash = slash || '';
-      return ''
-        + (optional ? '' : slash)
-        + '(?:'
-        + (optional ? slash : '')
-        + (format || '') + (capture || (format && '([^/.]+?)' || '([^/]+?)')) + ')'
-        + (optional || '')
-        + (star ? '(/*)?' : '');
-    })
-    .replace(/([\/.])/g, '\\$1')
-    .replace(/\*/g, '(.*)');
-  return new RegExp('^' + path + '$', sensitive ? '' : 'i');
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/lib/view.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/lib/view.js b/web/demos/package/node_modules/express/lib/view.js
deleted file mode 100644
index b9dc69e..0000000
--- a/web/demos/package/node_modules/express/lib/view.js
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Module dependencies.
- */
-
-var path = require('path')
-  , fs = require('fs')
-  , utils = require('./utils')
-  , dirname = path.dirname
-  , basename = path.basename
-  , extname = path.extname
-  , exists = fs.existsSync || path.existsSync
-  , join = path.join;
-
-/**
- * Expose `View`.
- */
-
-module.exports = View;
-
-/**
- * Initialize a new `View` with the given `name`.
- *
- * Options:
- *
- *   - `defaultEngine` the default template engine name
- *   - `engines` template engine require() cache
- *   - `root` root path for view lookup
- *
- * @param {String} name
- * @param {Object} options
- * @api private
- */
-
-function View(name, options) {
-  options = options || {};
-  this.name = name;
-  this.root = options.root;
-  var engines = options.engines;
-  this.defaultEngine = options.defaultEngine;
-  var ext = this.ext = extname(name);
-  if (!ext && !this.defaultEngine) throw new Error('No default engine was specified and no extension was provided.');
-  if (!ext) name += (ext = this.ext = ('.' != this.defaultEngine[0] ? '.' : '') + this.defaultEngine);
-  this.engine = engines[ext] || (engines[ext] = require(ext.slice(1)).__express);
-  this.path = this.lookup(name);
-}
-
-/**
- * Lookup view by the given `path`
- *
- * @param {String} path
- * @return {String}
- * @api private
- */
-
-View.prototype.lookup = function(path){
-  var ext = this.ext;
-
-  // <path>.<engine>
-  if (!utils.isAbsolute(path)) path = join(this.root, path);
-  if (exists(path)) return path;
-
-  // <path>/index.<engine>
-  path = join(dirname(path), basename(path, ext), 'index' + ext);
-  if (exists(path)) return path;
-};
-
-/**
- * Render with the given `options` and callback `fn(err, str)`.
- *
- * @param {Object} options
- * @param {Function} fn
- * @api private
- */
-
-View.prototype.render = function(options, fn){
-  this.engine(this.path, options, fn);
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/buffer-crc32/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/buffer-crc32/.npmignore b/web/demos/package/node_modules/express/node_modules/buffer-crc32/.npmignore
deleted file mode 100644
index b512c09..0000000
--- a/web/demos/package/node_modules/express/node_modules/buffer-crc32/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/buffer-crc32/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/buffer-crc32/.travis.yml b/web/demos/package/node_modules/express/node_modules/buffer-crc32/.travis.yml
deleted file mode 100644
index 7a902e8..0000000
--- a/web/demos/package/node_modules/express/node_modules/buffer-crc32/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: node_js
-node_js:
-  - 0.6
-  - 0.8
-notifications:
-  email:
-    recipients:
-      - brianloveswords@gmail.com
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/buffer-crc32/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/buffer-crc32/README.md b/web/demos/package/node_modules/express/node_modules/buffer-crc32/README.md
deleted file mode 100644
index 0d9d8b8..0000000
--- a/web/demos/package/node_modules/express/node_modules/buffer-crc32/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# buffer-crc32
-
-[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32)
-
-crc32 that works with binary data and fancy character sets, outputs
-buffer, signed or unsigned data and has tests.
-
-Derived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix
-
-# install
-```
-npm install buffer-crc32
-```
-
-# example
-```js
-var crc32 = require('buffer-crc32');
-// works with buffers
-var buf = Buffer([0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00])
-crc32(buf) // -> <Buffer 94 5a ab 4a>
-
-// has convenience methods for getting signed or unsigned ints
-crc32.signed(buf) // -> -1805997238
-crc32.unsigned(buf) // -> 2488970058
-
-// will cast to buffer if given a string, so you can
-// directly use foreign characters safely
-crc32('č‡Ŗå‹•č²©å£²ę©Ÿ') // -> <Buffer cb 03 1a c5>
-
-// and works in append mode too
-var partialCrc = crc32('hey');
-var partialCrc = crc32(' ', partialCrc);
-var partialCrc = crc32('sup', partialCrc);
-var partialCrc = crc32(' ', partialCrc);
-var finalCrc = crc32('bros', partialCrc); // -> <Buffer 47 fa 55 70>
-```
-
-# tests
-This was tested against the output of zlib's crc32 method. You can run
-the tests with`npm test` (requires tap)
-
-# see also
-https://github.com/alexgorbatchev/node-crc, `crc.buffer.crc32` also
-supports buffer inputs and return unsigned ints (thanks @tjholowaychuk).
-
-# license
-MIT/X11

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/buffer-crc32/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/buffer-crc32/index.js b/web/demos/package/node_modules/express/node_modules/buffer-crc32/index.js
deleted file mode 100644
index e29ce3e..0000000
--- a/web/demos/package/node_modules/express/node_modules/buffer-crc32/index.js
+++ /dev/null
@@ -1,88 +0,0 @@
-var Buffer = require('buffer').Buffer;
-
-var CRC_TABLE = [
-  0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
-  0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
-  0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
-  0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
-  0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
-  0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
-  0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
-  0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
-  0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
-  0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
-  0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
-  0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
-  0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
-  0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
-  0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
-  0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
-  0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
-  0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
-  0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
-  0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
-  0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
-  0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
-  0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
-  0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
-  0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
-  0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
-  0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
-  0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
-  0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
-  0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
-  0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
-  0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
-  0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
-  0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
-  0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
-  0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
-  0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
-  0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
-  0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
-  0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
-  0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
-  0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
-  0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
-  0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
-  0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
-  0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
-  0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
-  0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
-  0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
-  0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
-  0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
-  0x2d02ef8d
-];
-
-function bufferizeInt(num) {
-  var tmp = Buffer(4);
-  tmp.writeInt32BE(num, 0);
-  return tmp;
-}
-
-function _crc32(buf, previous) {
-  if (!Buffer.isBuffer(buf)) {
-    buf = Buffer(buf);
-  }
-  if (Buffer.isBuffer(previous)) {
-    previous = previous.readUInt32BE(0);
-  }
-  var crc = ~~previous ^ -1;
-  for (var n = 0; n < buf.length; n++) {
-    crc = CRC_TABLE[(crc ^ buf[n]) & 0xff] ^ (crc >>> 8);
-  }
-  return (crc ^ -1);
-}
-
-function crc32() {
-  return bufferizeInt(_crc32.apply(null, arguments));
-}
-crc32.signed = function () {
-  return _crc32.apply(null, arguments);
-};
-crc32.unsigned = function () {
-  return _crc32.apply(null, arguments) >>> 0;
-};
-
-module.exports = crc32;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/buffer-crc32/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/buffer-crc32/package.json b/web/demos/package/node_modules/express/node_modules/buffer-crc32/package.json
deleted file mode 100644
index 4bb469a..0000000
--- a/web/demos/package/node_modules/express/node_modules/buffer-crc32/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "author": {
-    "name": "Brian J. Brennan",
-    "email": "brianloveswords@gmail.com",
-    "url": "http://bjb.io"
-  },
-  "name": "buffer-crc32",
-  "description": "A pure javascript CRC32 algorithm that plays nice with binary data",
-  "version": "0.2.1",
-  "contributors": [
-    {
-      "name": "Vladimir Kuznetsov"
-    }
-  ],
-  "homepage": "https://github.com/brianloveswords/buffer-crc32",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/brianloveswords/buffer-crc32.git"
-  },
-  "main": "index.js",
-  "scripts": {
-    "test": "./node_modules/.bin/tap tests/*.test.js"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "tap": "~0.2.5"
-  },
-  "optionalDependencies": {},
-  "engines": {
-    "node": "*"
-  },
-  "readme": "# buffer-crc32\n\n[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32)\n\ncrc32 that works with binary data and fancy character sets, outputs\nbuffer, signed or unsigned data and has tests.\n\nDerived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix\n\n# install\n```\nnpm install buffer-crc32\n```\n\n# example\n```js\nvar crc32 = require('buffer-crc32');\n// works with buffers\nvar buf = Buffer([0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00])\ncrc32(buf) // -> <Buffer 94 5a ab 4a>\n\n// has convenience methods for getting signed or unsigned ints\ncrc32.signed(buf) // -> -1805997238\ncrc32.unsigned(buf) // -> 2488970058\n\n// will cast to buffer if given a string, so you can\n// directly use foreign characters safely\ncrc32('č‡Ŗå‹•č²©å£²ę©Ÿ') // -> <Buffer cb 03 1a c5>\n\n// and works in append mode too\nvar partialCrc = 
 crc32('hey');\nvar partialCrc = crc32(' ', partialCrc);\nvar partialCrc = crc32('sup', partialCrc);\nvar partialCrc = crc32(' ', partialCrc);\nvar finalCrc = crc32('bros', partialCrc); // -> <Buffer 47 fa 55 70>\n```\n\n# tests\nThis was tested against the output of zlib's crc32 method. You can run\nthe tests with`npm test` (requires tap)\n\n# see also\nhttps://github.com/alexgorbatchev/node-crc, `crc.buffer.crc32` also\nsupports buffer inputs and return unsigned ints (thanks @tjholowaychuk).\n\n# license\nMIT/X11\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/brianloveswords/buffer-crc32/issues"
-  },
-  "_id": "buffer-crc32@0.2.1",
-  "_from": "buffer-crc32@0.2.1"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js b/web/demos/package/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js
deleted file mode 100644
index bb0f9ef..0000000
--- a/web/demos/package/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js
+++ /dev/null
@@ -1,89 +0,0 @@
-var crc32 = require('..');
-var test = require('tap').test;
-
-test('simple crc32 is no problem', function (t) {
-  var input = Buffer('hey sup bros');
-  var expected = Buffer([0x47, 0xfa, 0x55, 0x70]);
-  t.same(crc32(input), expected);
-  t.end();
-});
-
-test('another simple one', function (t) {
-  var input = Buffer('IEND');
-  var expected = Buffer([0xae, 0x42, 0x60, 0x82]);
-  t.same(crc32(input), expected);
-  t.end();
-});
-
-test('slightly more complex', function (t) {
-  var input = Buffer([0x00, 0x00, 0x00]);
-  var expected = Buffer([0xff, 0x41, 0xd9, 0x12]);
-  t.same(crc32(input), expected);
-  t.end();
-});
-
-test('complex crc32 gets calculated like a champ', function (t) {
-  var input = Buffer('ą¤¶ą„€ą¤°ą„ą¤·ą¤•');
-  var expected = Buffer([0x17, 0xb8, 0xaf, 0xf1]);
-  t.same(crc32(input), expected);
-  t.end();
-});
-
-test('casts to buffer if necessary', function (t) {
-  var input = 'ą¤¶ą„€ą¤°ą„ą¤·ą¤•';
-  var expected = Buffer([0x17, 0xb8, 0xaf, 0xf1]);
-  t.same(crc32(input), expected);
-  t.end();
-});
-
-test('can do signed', function (t) {
-  var input = 'ham sandwich';
-  var expected = -1891873021;
-  t.same(crc32.signed(input), expected);
-  t.end();
-});
-
-test('can do unsigned', function (t) {
-  var input = 'bear sandwich';
-  var expected = 3711466352;
-  t.same(crc32.unsigned(input), expected);
-  t.end();
-});
-
-
-test('simple crc32 in append mode', function (t) {
-  var input = [Buffer('hey'), Buffer(' '), Buffer('sup'), Buffer(' '), Buffer('bros')];
-  var expected = Buffer([0x47, 0xfa, 0x55, 0x70]);
-  for (var crc = 0, i = 0; i < input.length; i++) {
-    crc = crc32(input[i], crc);
-  }
-  t.same(crc, expected);
-  t.end();
-});
-
-
-test('can do signed in append mode', function (t) {
-  var input1 = 'ham';
-  var input2 = ' ';
-  var input3 = 'sandwich';
-  var expected = -1891873021;
-
-  var crc = crc32.signed(input1);
-  crc = crc32.signed(input2, crc);
-  crc = crc32.signed(input3, crc);
-
-  t.same(crc, expected);
-  t.end();
-});
-
-test('can do unsigned in append mode', function (t) {
-  var input1 = 'bear san';
-  var input2 = 'dwich';
-  var expected = 3711466352;
-
-  var crc = crc32.unsigned(input1);
-  crc = crc32.unsigned(input2, crc);
-  t.same(crc, expected);
-  t.end();
-});
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/commander/History.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/commander/History.md b/web/demos/package/node_modules/express/node_modules/commander/History.md
deleted file mode 100644
index 7cda70f..0000000
--- a/web/demos/package/node_modules/express/node_modules/commander/History.md
+++ /dev/null
@@ -1,158 +0,0 @@
-
-1.2.0 / 2013-06-13 
-==================
-
- * allow "-" hyphen as an option argument
- * support for RegExp coercion
-
-1.1.1 / 2012-11-20 
-==================
-
-  * add more sub-command padding
-  * fix .usage() when args are present. Closes #106
-
-1.1.0 / 2012-11-16 
-==================
-
-  * add git-style executable subcommand support. Closes #94
-
-1.0.5 / 2012-10-09 
-==================
-
-  * fix `--name` clobbering. Closes #92
-  * fix examples/help. Closes #89
-
-1.0.4 / 2012-09-03 
-==================
-
-  * add `outputHelp()` method.
-
-1.0.3 / 2012-08-30 
-==================
-
-  * remove invalid .version() defaulting
-
-1.0.2 / 2012-08-24 
-==================
-
-  * add `--foo=bar` support [arv]
-  * fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus]
-
-1.0.1 / 2012-08-03 
-==================
-
-  * fix issue #56
-  * fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode())
-
-1.0.0 / 2012-07-05 
-==================
-
-  * add support for optional option descriptions
-  * add defaulting of `.version()` to package.json's version
-
-0.6.1 / 2012-06-01 
-==================
-
-  * Added: append (yes or no) on confirmation
-  * Added: allow node.js v0.7.x
-
-0.6.0 / 2012-04-10 
-==================
-
-  * Added `.prompt(obj, callback)` support. Closes #49
-  * Added default support to .choose(). Closes #41
-  * Fixed the choice example
-
-0.5.1 / 2011-12-20 
-==================
-
-  * Fixed `password()` for recent nodes. Closes #36
-
-0.5.0 / 2011-12-04 
-==================
-
-  * Added sub-command option support [itay]
-
-0.4.3 / 2011-12-04 
-==================
-
-  * Fixed custom help ordering. Closes #32
-
-0.4.2 / 2011-11-24 
-==================
-
-  * Added travis support
-  * Fixed: line-buffered input automatically trimmed. Closes #31
-
-0.4.1 / 2011-11-18 
-==================
-
-  * Removed listening for "close" on --help
-
-0.4.0 / 2011-11-15 
-==================
-
-  * Added support for `--`. Closes #24
-
-0.3.3 / 2011-11-14 
-==================
-
-  * Fixed: wait for close event when writing help info [Jerry Hamlet]
-
-0.3.2 / 2011-11-01 
-==================
-
-  * Fixed long flag definitions with values [felixge]
-
-0.3.1 / 2011-10-31 
-==================
-
-  * Changed `--version` short flag to `-V` from `-v`
-  * Changed `.version()` so it's configurable [felixge]
-
-0.3.0 / 2011-10-31 
-==================
-
-  * Added support for long flags only. Closes #18
-
-0.2.1 / 2011-10-24 
-==================
-
-  * "node": ">= 0.4.x < 0.7.0". Closes #20
-
-0.2.0 / 2011-09-26 
-==================
-
-  * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs]
-
-0.1.0 / 2011-08-24 
-==================
-
-  * Added support for custom `--help` output
-
-0.0.5 / 2011-08-18 
-==================
-
-  * Changed: when the user enters nothing prompt for password again
-  * Fixed issue with passwords beginning with numbers [NuckChorris]
-
-0.0.4 / 2011-08-15 
-==================
-
-  * Fixed `Commander#args`
-
-0.0.3 / 2011-08-15 
-==================
-
-  * Added default option value support
-
-0.0.2 / 2011-08-15 
-==================
-
-  * Added mask support to `Command#password(str[, mask], fn)`
-  * Added `Command#password(str, fn)`
-
-0.0.1 / 2010-01-03
-==================
-
-  * Initial release

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/commander/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/commander/Readme.md b/web/demos/package/node_modules/express/node_modules/commander/Readme.md
deleted file mode 100644
index 107932a..0000000
--- a/web/demos/package/node_modules/express/node_modules/commander/Readme.md
+++ /dev/null
@@ -1,276 +0,0 @@
-# Commander.js
-
-  The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).
-
- [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)
-
-## Installation
-
-    $ npm install commander
-
-## Option parsing
-
- Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.
-
-```js
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var program = require('commander');
-
-program
-  .version('0.0.1')
-  .option('-p, --peppers', 'Add peppers')
-  .option('-P, --pineapple', 'Add pineapple')
-  .option('-b, --bbq', 'Add bbq sauce')
-  .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
-  .parse(process.argv);
-
-console.log('you ordered a pizza with:');
-if (program.peppers) console.log('  - peppers');
-if (program.pineapple) console.log('  - pineappe');
-if (program.bbq) console.log('  - bbq');
-console.log('  - %s cheese', program.cheese);
-```
-
- Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc.
-
-## Automated --help
-
- The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:
-
-```  
- $ ./examples/pizza --help
-
-   Usage: pizza [options]
-
-   Options:
-
-     -V, --version        output the version number
-     -p, --peppers        Add peppers
-     -P, --pineapple      Add pineappe
-     -b, --bbq            Add bbq sauce
-     -c, --cheese <type>  Add the specified type of cheese [marble]
-     -h, --help           output usage information
-
-```
-
-## Coercion
-
-```js
-function range(val) {
-  return val.split('..').map(Number);
-}
-
-function list(val) {
-  return val.split(',');
-}
-
-program
-  .version('0.0.1')
-  .usage('[options] <file ...>')
-  .option('-i, --integer <n>', 'An integer argument', parseInt)
-  .option('-f, --float <n>', 'A float argument', parseFloat)
-  .option('-r, --range <a>..<b>', 'A range', range)
-  .option('-l, --list <items>', 'A list', list)
-  .option('-o, --optional [value]', 'An optional value')
-  .parse(process.argv);
-
-console.log(' int: %j', program.integer);
-console.log(' float: %j', program.float);
-console.log(' optional: %j', program.optional);
-program.range = program.range || [];
-console.log(' range: %j..%j', program.range[0], program.range[1]);
-console.log(' list: %j', program.list);
-console.log(' args: %j', program.args);
-```
-
-## Custom help
-
- You can display arbitrary `-h, --help` information
- by listening for "--help". Commander will automatically
- exit once you are done so that the remainder of your program
- does not execute causing undesired behaviours, for example
- in the following executable "stuff" will not output when
- `--help` is used.
-
-```js
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var program = require('../');
-
-function list(val) {
-  return val.split(',').map(Number);
-}
-
-program
-  .version('0.0.1')
-  .option('-f, --foo', 'enable some foo')
-  .option('-b, --bar', 'enable some bar')
-  .option('-B, --baz', 'enable some baz');
-
-// must be before .parse() since
-// node's emit() is immediate
-
-program.on('--help', function(){
-  console.log('  Examples:');
-  console.log('');
-  console.log('    $ custom-help --help');
-  console.log('    $ custom-help -h');
-  console.log('');
-});
-
-program.parse(process.argv);
-
-console.log('stuff');
-```
-
-yielding the following help output:
-
-```
-
-Usage: custom-help [options]
-
-Options:
-
-  -h, --help     output usage information
-  -V, --version  output the version number
-  -f, --foo      enable some foo
-  -b, --bar      enable some bar
-  -B, --baz      enable some baz
-
-Examples:
-
-  $ custom-help --help
-  $ custom-help -h
-
-```
-
-## .prompt(msg, fn)
-
- Single-line prompt:
-
-```js
-program.prompt('name: ', function(name){
-  console.log('hi %s', name);
-});
-```
-
- Multi-line prompt:
-
-```js
-program.prompt('description:', function(name){
-  console.log('hi %s', name);
-});
-```
-
- Coercion:
-
-```js
-program.prompt('Age: ', Number, function(age){
-  console.log('age: %j', age);
-});
-```
-
-```js
-program.prompt('Birthdate: ', Date, function(date){
-  console.log('date: %s', date);
-});
-```
-
-```js
-program.prompt('Email: ', /^.+@.+\..+$/, function(email){
-  console.log('email: %j', email);
-});
-```
-
-## .password(msg[, mask], fn)
-
-Prompt for password without echoing:
-
-```js
-program.password('Password: ', function(pass){
-  console.log('got "%s"', pass);
-  process.stdin.destroy();
-});
-```
-
-Prompt for password with mask char "*":
-
-```js
-program.password('Password: ', '*', function(pass){
-  console.log('got "%s"', pass);
-  process.stdin.destroy();
-});
-```
-
-## .confirm(msg, fn)
-
- Confirm with the given `msg`:
-
-```js
-program.confirm('continue? ', function(ok){
-  console.log(' got %j', ok);
-});
-```
-
-## .choose(list, fn)
-
- Let the user choose from a `list`:
-
-```js
-var list = ['tobi', 'loki', 'jane', 'manny', 'luna'];
-
-console.log('Choose the coolest pet:');
-program.choose(list, function(i){
-  console.log('you chose %d "%s"', i, list[i]);
-});
-```
-
-## .outputHelp()
-
-  Output help information without exiting.
-
-## .help()
-
-  Output help information and exit immediately.
-
-## Links
-
- - [API documentation](http://visionmedia.github.com/commander.js/)
- - [ascii tables](https://github.com/LearnBoost/cli-table)
- - [progress bars](https://github.com/visionmedia/node-progress)
- - [more progress bars](https://github.com/substack/node-multimeter)
- - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)
-
-## License 
-
-(The MIT License)
-
-Copyright (c) 2011 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file


[33/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/csrf.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/csrf.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/csrf.js
deleted file mode 100644
index a815444..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/csrf.js
+++ /dev/null
@@ -1,75 +0,0 @@
-/*!
- * Connect - csrf
- * Copyright(c) 2011 Sencha Inc.
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var utils = require('../utils');
-var uid = require('uid2');
-
-/**
- * Anti CSRF:
- *
- * CRSF protection middleware.
- *
- * By default this middleware generates a token named "_csrf"
- * which should be added to requests which mutate
- * state, within a hidden form field, query-string etc. This
- * token is validated against the visitor's `req.session._csrf`
- * property.
- *
- * The default `value` function checks `req.body` generated
- * by the `bodyParser()` middleware, `req.query` generated
- * by `query()`, and the "X-CSRF-Token" header field.
- *
- * This middleware requires session support, thus should be added
- * somewhere _below_ `session()` and `cookieParser()`.
- *
- * Options:
- *
- *    - `value` a function accepting the request, returning the token
- *
- * @param {Object} options
- * @api public
- */
-
-module.exports = function csrf(options) {
-  options = options || {};
-  var value = options.value || defaultValue;
-
-  return function(req, res, next){
-    // generate CSRF token
-    var token = req.session._csrf || (req.session._csrf = uid(24));
-
-    // ignore these methods
-    if ('GET' == req.method || 'HEAD' == req.method || 'OPTIONS' == req.method) return next();
-
-    // determine value
-    var val = value(req);
-
-    // check
-    if (val != token) return next(utils.error(403));
-
-    next();
-  }
-};
-
-/**
- * Default value function, checking the `req.body`
- * and `req.query` for the CSRF token.
- *
- * @param {IncomingMessage} req
- * @return {String}
- * @api private
- */
-
-function defaultValue(req) {
-  return (req.body && req.body._csrf)
-    || (req.query && req.query._csrf)
-    || (req.headers['x-csrf-token'])
-    || (req.headers['x-xsrf-token']);
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/directory.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/directory.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/directory.js
deleted file mode 100644
index 1c925a7..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/directory.js
+++ /dev/null
@@ -1,229 +0,0 @@
-
-/*!
- * Connect - directory
- * Copyright(c) 2011 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-// TODO: icon / style for directories
-// TODO: arrow key navigation
-// TODO: make icons extensible
-
-/**
- * Module dependencies.
- */
-
-var fs = require('fs')
-  , parse = require('url').parse
-  , utils = require('../utils')
-  , path = require('path')
-  , normalize = path.normalize
-  , extname = path.extname
-  , join = path.join;
-
-/*!
- * Icon cache.
- */
-
-var cache = {};
-
-/**
- * Directory:
- *
- * Serve directory listings with the given `root` path.
- *
- * Options:
- *
- *  - `hidden` display hidden (dot) files. Defaults to false.
- *  - `icons`  display icons. Defaults to false.
- *  - `filter` Apply this filter function to files. Defaults to false.
- *
- * @param {String} root
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-exports = module.exports = function directory(root, options){
-  options = options || {};
-
-  // root required
-  if (!root) throw new Error('directory() root path required');
-  var hidden = options.hidden
-    , icons = options.icons
-    , filter = options.filter
-    , root = normalize(root);
-
-  return function directory(req, res, next) {
-    if ('GET' != req.method && 'HEAD' != req.method) return next();
-
-    var accept = req.headers.accept || 'text/plain'
-      , url = parse(req.url)
-      , dir = decodeURIComponent(url.pathname)
-      , path = normalize(join(root, dir))
-      , originalUrl = parse(req.originalUrl)
-      , originalDir = decodeURIComponent(originalUrl.pathname)
-      , showUp = path != root && path != root + '/';
-
-    // null byte(s), bad request
-    if (~path.indexOf('\0')) return next(utils.error(400));
-
-    // malicious path, forbidden
-    if (0 != path.indexOf(root)) return next(utils.error(403));
-
-    // check if we have a directory
-    fs.stat(path, function(err, stat){
-      if (err) return 'ENOENT' == err.code
-        ? next()
-        : next(err);
-
-      if (!stat.isDirectory()) return next();
-
-      // fetch files
-      fs.readdir(path, function(err, files){
-        if (err) return next(err);
-        if (!hidden) files = removeHidden(files);
-        if (filter) files = files.filter(filter);
-        files.sort();
-
-        // content-negotiation
-        for (var key in exports) {
-          if (~accept.indexOf(key) || ~accept.indexOf('*/*')) {
-            exports[key](req, res, files, next, originalDir, showUp, icons);
-            return;
-          }
-        }
-
-        // not acceptable
-        next(utils.error(406));
-      });
-    });
-  };
-};
-
-/**
- * Respond with text/html.
- */
-
-exports.html = function(req, res, files, next, dir, showUp, icons){
-  fs.readFile(__dirname + '/../public/directory.html', 'utf8', function(err, str){
-    if (err) return next(err);
-    fs.readFile(__dirname + '/../public/style.css', 'utf8', function(err, style){
-      if (err) return next(err);
-      if (showUp) files.unshift('..');
-      str = str
-        .replace('{style}', style)
-        .replace('{files}', html(files, dir, icons))
-        .replace('{directory}', dir)
-        .replace('{linked-path}', htmlPath(dir));
-      res.setHeader('Content-Type', 'text/html');
-      res.setHeader('Content-Length', str.length);
-      res.end(str);
-    });
-  });
-};
-
-/**
- * Respond with application/json.
- */
-
-exports.json = function(req, res, files){
-  files = JSON.stringify(files);
-  res.setHeader('Content-Type', 'application/json');
-  res.setHeader('Content-Length', files.length);
-  res.end(files);
-};
-
-/**
- * Respond with text/plain.
- */
-
-exports.plain = function(req, res, files){
-  files = files.join('\n') + '\n';
-  res.setHeader('Content-Type', 'text/plain');
-  res.setHeader('Content-Length', files.length);
-  res.end(files);
-};
-
-/**
- * Map html `dir`, returning a linked path.
- */
-
-function htmlPath(dir) {
-  var curr = [];
-  return dir.split('/').map(function(part){
-    curr.push(part);
-    return '<a href="' + curr.join('/') + '">' + part + '</a>';
-  }).join(' / ');
-}
-
-/**
- * Map html `files`, returning an html unordered list.
- */
-
-function html(files, dir, useIcons) {
-  return '<ul id="files">' + files.map(function(file){
-    var icon = ''
-      , classes = [];
-
-    if (useIcons && '..' != file) {
-      icon = icons[extname(file)] || icons.default;
-      icon = '<img src="data:image/png;base64,' + load(icon) + '" />';
-      classes.push('icon');
-    }
-
-    return '<li><a href="'
-      + join(dir, file)
-      + '" class="'
-      + classes.join(' ') + '"'
-      + ' title="' + file + '">'
-      + icon + file + '</a></li>';
-
-  }).join('\n') + '</ul>';
-}
-
-/**
- * Load and cache the given `icon`.
- *
- * @param {String} icon
- * @return {String}
- * @api private
- */
-
-function load(icon) {
-  if (cache[icon]) return cache[icon];
-  return cache[icon] = fs.readFileSync(__dirname + '/../public/icons/' + icon, 'base64');
-}
-
-/**
- * Filter "hidden" `files`, aka files
- * beginning with a `.`.
- *
- * @param {Array} files
- * @return {Array}
- * @api private
- */
-
-function removeHidden(files) {
-  return files.filter(function(file){
-    return '.' != file[0];
-  });
-}
-
-/**
- * Icon map.
- */
-
-var icons = {
-    '.js': 'page_white_code_red.png'
-  , '.c': 'page_white_c.png'
-  , '.h': 'page_white_h.png'
-  , '.cc': 'page_white_cplusplus.png'
-  , '.php': 'page_white_php.png'
-  , '.rb': 'page_white_ruby.png'
-  , '.cpp': 'page_white_cplusplus.png'
-  , '.swf': 'page_white_flash.png'
-  , '.pdf': 'page_white_acrobat.png'
-  , 'default': 'page_white.png'
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js
deleted file mode 100644
index 4a84edc..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*!
- * Connect - errorHandler
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var utils = require('../utils')
-  , fs = require('fs');
-
-// environment
-
-var env = process.env.NODE_ENV || 'development';
-
-/**
- * Error handler:
- *
- * Development error handler, providing stack traces
- * and error message responses for requests accepting text, html,
- * or json.
- *
- * Text:
- *
- *   By default, and when _text/plain_ is accepted a simple stack trace
- *   or error message will be returned.
- *
- * JSON:
- *
- *   When _application/json_ is accepted, connect will respond with
- *   an object in the form of `{ "error": error }`.
- *
- * HTML:
- *
- *   When accepted connect will output a nice html stack trace.
- *
- * @return {Function}
- * @api public
- */
-
-exports = module.exports = function errorHandler(){
-  return function errorHandler(err, req, res, next){
-    if (err.status) res.statusCode = err.status;
-    if (res.statusCode < 400) res.statusCode = 500;
-    if ('test' != env) console.error(err.stack);
-    var accept = req.headers.accept || '';
-    // html
-    if (~accept.indexOf('html')) {
-      fs.readFile(__dirname + '/../public/style.css', 'utf8', function(e, style){
-        fs.readFile(__dirname + '/../public/error.html', 'utf8', function(e, html){
-          var stack = (err.stack || '')
-            .split('\n').slice(1)
-            .map(function(v){ return '<li>' + v + '</li>'; }).join('');
-            html = html
-              .replace('{style}', style)
-              .replace('{stack}', stack)
-              .replace('{title}', exports.title)
-              .replace('{statusCode}', res.statusCode)
-              .replace(/\{error\}/g, utils.escape(err.toString()));
-            res.setHeader('Content-Type', 'text/html; charset=utf-8');
-            res.end(html);
-        });
-      });
-    // json
-    } else if (~accept.indexOf('json')) {
-      var error = { message: err.message, stack: err.stack };
-      for (var prop in err) error[prop] = err[prop];
-      var json = JSON.stringify({ error: error });
-      res.setHeader('Content-Type', 'application/json');
-      res.end(json);
-    // plain text
-    } else {
-      res.writeHead(res.statusCode, { 'Content-Type': 'text/plain' });
-      res.end(err.stack);
-    }
-  };
-};
-
-/**
- * Template title, framework authors may override this value.
- */
-
-exports.title = 'Connect';

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/favicon.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/favicon.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/favicon.js
deleted file mode 100644
index ef54354..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/favicon.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/*!
- * Connect - favicon
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var fs = require('fs')
-  , utils = require('../utils');
-
-/**
- * Favicon:
- *
- * By default serves the connect favicon, or the favicon
- * located by the given `path`.
- *
- * Options:
- *
- *   - `maxAge`  cache-control max-age directive, defaulting to 1 day
- *
- * Examples:
- *
- *   Serve default favicon:
- *
- *     connect()
- *       .use(connect.favicon())
- *
- *   Serve favicon before logging for brevity:
- *
- *     connect()
- *       .use(connect.favicon())
- *       .use(connect.logger('dev'))
- *
- *   Serve custom favicon:
- *
- *     connect()
- *       .use(connect.favicon('public/favicon.ico'))
- *
- * @param {String} path
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-module.exports = function favicon(path, options){
-  var options = options || {}
-    , path = path || __dirname + '/../public/favicon.ico'
-    , maxAge = options.maxAge || 86400000
-    , icon; // favicon cache
-
-  return function favicon(req, res, next){
-    if ('/favicon.ico' == req.url) {
-      if (icon) {
-        res.writeHead(200, icon.headers);
-        res.end(icon.body);
-      } else {
-        fs.readFile(path, function(err, buf){
-          if (err) return next(err);
-          icon = {
-            headers: {
-                'Content-Type': 'image/x-icon'
-              , 'Content-Length': buf.length
-              , 'ETag': '"' + utils.md5(buf) + '"'
-              , 'Cache-Control': 'public, max-age=' + (maxAge / 1000)
-            },
-            body: buf
-          };
-          res.writeHead(200, icon.headers);
-          res.end(icon.body);
-        });
-      }
-    } else {
-      next();
-    }
-  };
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/json.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/json.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/json.js
deleted file mode 100644
index 29878d2..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/json.js
+++ /dev/null
@@ -1,89 +0,0 @@
-
-/*!
- * Connect - json
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var utils = require('../utils')
-  , _limit = require('./limit');
-
-/**
- * noop middleware.
- */
-
-function noop(req, res, next) {
-  next();
-}
-
-/**
- * JSON:
- *
- * Parse JSON request bodies, providing the
- * parsed object as `req.body`.
- *
- * Options:
- *
- *   - `strict`  when `false` anything `JSON.parse()` accepts will be parsed
- *   - `reviver`  used as the second "reviver" argument for JSON.parse
- *   - `limit`  byte limit disabled by default
- *
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-exports = module.exports = function(options){
-  var options = options || {}
-    , strict = options.strict !== false;
-
-  var limit = options.limit
-    ? _limit(options.limit)
-    : noop;
-
-  return function json(req, res, next) {
-    if (req._body) return next();
-    req.body = req.body || {};
-
-    if (!utils.hasBody(req)) return next();
-
-    // check Content-Type
-    if (!exports.regexp.test(utils.mime(req))) return next();
-
-    // flag as parsed
-    req._body = true;
-
-    // parse
-    limit(req, res, function(err){
-      if (err) return next(err);
-      var buf = '';
-      req.setEncoding('utf8');
-      req.on('data', function(chunk){ buf += chunk });
-      req.on('end', function(){
-        var first = buf.trim()[0];
-
-        if (0 == buf.length) {
-          return next(utils.error(400, 'invalid json, empty body'));
-        }
-        
-        if (strict && '{' != first && '[' != first) return next(utils.error(400, 'invalid json'));
-        try {
-          req.body = JSON.parse(buf, options.reviver);
-        } catch (err){
-          err.body = buf;
-          err.status = 400;
-          return next(err);
-        }
-        next();
-      });
-    });
-  };
-};
-
-exports.regexp = /^application\/([\w!#\$%&\*`\-\.\^~]*\+)?json$/i;
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/limit.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/limit.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/limit.js
deleted file mode 100644
index 09bd1c4..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/limit.js
+++ /dev/null
@@ -1,78 +0,0 @@
-
-/*!
- * Connect - limit
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var utils = require('../utils'),
-  brokenPause = utils.brokenPause;
-
-/**
- * Limit:
- *
- *   Limit request bodies to the given size in `bytes`.
- *
- *   A string representation of the bytesize may also be passed,
- *   for example "5mb", "200kb", "1gb", etc.
- *
- *     connect()
- *       .use(connect.limit('5.5mb'))
- *       .use(handleImageUpload)
- *
- * @param {Number|String} bytes
- * @return {Function}
- * @api public
- */
-
-module.exports = function limit(bytes){
-  if ('string' == typeof bytes) bytes = utils.parseBytes(bytes);
-  if ('number' != typeof bytes) throw new Error('limit() bytes required');
-  return function limit(req, res, next){
-    var received = 0
-      , len = req.headers['content-length']
-        ? parseInt(req.headers['content-length'], 10)
-        : null;
-
-    // self-awareness
-    if (req._limit) return next();
-    req._limit = true;
-
-    // limit by content-length
-    if (len && len > bytes) return next(utils.error(413));
-
-    // limit
-    if (brokenPause) {
-      listen();
-    } else {
-      req.on('newListener', function handler(event) {
-        if (event !== 'data') return;
-
-        req.removeListener('newListener', handler);
-        // Start listening at the end of the current loop
-        // otherwise the request will be consumed too early.
-        // Sideaffect is `limit` will miss the first chunk,
-        // but that's not a big deal.
-        // Unfortunately, the tests don't have large enough
-        // request bodies to test this.
-        process.nextTick(listen);
-      });
-    };
-
-    next();
-
-    function listen() {
-      req.on('data', function(chunk) {
-        received += Buffer.isBuffer(chunk)
-          ? chunk.length :
-          Buffer.byteLength(chunk);
-
-        if (received > bytes) req.destroy();
-      });
-    };
-  };
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/logger.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/logger.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/logger.js
deleted file mode 100644
index 7e88248..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/logger.js
+++ /dev/null
@@ -1,339 +0,0 @@
-/*!
- * Connect - logger
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var bytes = require('bytes');
-
-/*!
- * Log buffer.
- */
-
-var buf = [];
-
-/*!
- * Default log buffer duration.
- */
-
-var defaultBufferDuration = 1000;
-
-/**
- * Logger:
- *
- * Log requests with the given `options` or a `format` string.
- *
- * Options:
- *
- *   - `format`  Format string, see below for tokens
- *   - `stream`  Output stream, defaults to _stdout_
- *   - `buffer`  Buffer duration, defaults to 1000ms when _true_
- *   - `immediate`  Write log line on request instead of response (for response times)
- *
- * Tokens:
- *
- *   - `:req[header]` ex: `:req[Accept]`
- *   - `:res[header]` ex: `:res[Content-Length]`
- *   - `:http-version`
- *   - `:response-time`
- *   - `:remote-addr`
- *   - `:date`
- *   - `:method`
- *   - `:url`
- *   - `:referrer`
- *   - `:user-agent`
- *   - `:status`
- *
- * Formats:
- *
- *   Pre-defined formats that ship with connect:
- *
- *    - `default` ':remote-addr - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"'
- *    - `short` ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms'
- *    - `tiny`  ':method :url :status :res[content-length] - :response-time ms'
- *    - `dev` concise output colored by response status for development use
- *
- * Examples:
- *
- *      connect.logger() // default
- *      connect.logger('short')
- *      connect.logger('tiny')
- *      connect.logger({ immediate: true, format: 'dev' })
- *      connect.logger(':method :url - :referrer')
- *      connect.logger(':req[content-type] -> :res[content-type]')
- *      connect.logger(function(tokens, req, res){ return 'some format string' })
- *
- * Defining Tokens:
- *
- *   To define a token, simply invoke `connect.logger.token()` with the
- *   name and a callback function. The value returned is then available
- *   as ":type" in this case.
- *
- *      connect.logger.token('type', function(req, res){ return req.headers['content-type']; })
- *
- * Defining Formats:
- *
- *   All default formats are defined this way, however it's public API as well:
- *
- *       connect.logger.format('name', 'string or function')
- *
- * @param {String|Function|Object} format or options
- * @return {Function}
- * @api public
- */
-
-exports = module.exports = function logger(options) {
-  if ('object' == typeof options) {
-    options = options || {};
-  } else if (options) {
-    options = { format: options };
-  } else {
-    options = {};
-  }
-
-  // output on request instead of response
-  var immediate = options.immediate;
-
-  // format name
-  var fmt = exports[options.format] || options.format || exports.default;
-
-  // compile format
-  if ('function' != typeof fmt) fmt = compile(fmt);
-
-  // options
-  var stream = options.stream || process.stdout
-    , buffer = options.buffer;
-
-  // buffering support
-  if (buffer) {
-    var realStream = stream
-      , interval = 'number' == typeof buffer
-        ? buffer
-        : defaultBufferDuration;
-
-    // flush interval
-    setInterval(function(){
-      if (buf.length) {
-        realStream.write(buf.join(''));
-        buf.length = 0;
-      }
-    }, interval); 
-
-    // swap the stream
-    stream = {
-      write: function(str){
-        buf.push(str);
-      }
-    };
-  }
-
-  return function logger(req, res, next) {
-    req._startTime = new Date;
-
-    // immediate
-    if (immediate) {
-      var line = fmt(exports, req, res);
-      if (null == line) return;
-      stream.write(line + '\n');
-    // proxy end to output logging
-    } else {
-      var end = res.end;
-      res.end = function(chunk, encoding){
-        res.end = end;
-        res.end(chunk, encoding);
-        var line = fmt(exports, req, res);
-        if (null == line) return;
-        stream.write(line + '\n');
-      };
-    }
-
-
-    next();
-  };
-};
-
-/**
- * Compile `fmt` into a function.
- *
- * @param {String} fmt
- * @return {Function}
- * @api private
- */
-
-function compile(fmt) {
-  fmt = fmt.replace(/"/g, '\\"');
-  var js = '  return "' + fmt.replace(/:([-\w]{2,})(?:\[([^\]]+)\])?/g, function(_, name, arg){
-    return '"\n    + (tokens["' + name + '"](req, res, "' + arg + '") || "-") + "';
-  }) + '";'
-  return new Function('tokens, req, res', js);
-};
-
-/**
- * Define a token function with the given `name`,
- * and callback `fn(req, res)`.
- *
- * @param {String} name
- * @param {Function} fn
- * @return {Object} exports for chaining
- * @api public
- */
-
-exports.token = function(name, fn) {
-  exports[name] = fn;
-  return this;
-};
-
-/**
- * Define a `fmt` with the given `name`.
- *
- * @param {String} name
- * @param {String|Function} fmt
- * @return {Object} exports for chaining
- * @api public
- */
-
-exports.format = function(name, str){
-  exports[name] = str;
-  return this;
-};
-
-/**
- * Default format.
- */
-
-exports.format('default', ':remote-addr - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"');
-
-/**
- * Short format.
- */
-
-exports.format('short', ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms');
-
-/**
- * Tiny format.
- */
-
-exports.format('tiny', ':method :url :status :res[content-length] - :response-time ms');
-
-/**
- * dev (colored)
- */
-
-exports.format('dev', function(tokens, req, res){
-  var status = res.statusCode
-    , len = parseInt(res.getHeader('Content-Length'), 10)
-    , color = 32;
-
-  if (status >= 500) color = 31
-  else if (status >= 400) color = 33
-  else if (status >= 300) color = 36;
-
-  len = isNaN(len)
-    ? ''
-    : len = ' - ' + bytes(len);
-
-  return '\x1b[90m' + req.method
-    + ' ' + req.originalUrl + ' '
-    + '\x1b[' + color + 'm' + res.statusCode
-    + ' \x1b[90m'
-    + (new Date - req._startTime)
-    + 'ms' + len
-    + '\x1b[0m';
-});
-
-/**
- * request url
- */
-
-exports.token('url', function(req){
-  return req.originalUrl || req.url;
-});
-
-/**
- * request method
- */
-
-exports.token('method', function(req){
-  return req.method;
-});
-
-/**
- * response time in milliseconds
- */
-
-exports.token('response-time', function(req){
-  return new Date - req._startTime;
-});
-
-/**
- * UTC date
- */
-
-exports.token('date', function(){
-  return new Date().toUTCString();
-});
-
-/**
- * response status code
- */
-
-exports.token('status', function(req, res){
-  return res.statusCode;
-});
-
-/**
- * normalized referrer
- */
-
-exports.token('referrer', function(req){
-  return req.headers['referer'] || req.headers['referrer'];
-});
-
-/**
- * remote address
- */
-
-exports.token('remote-addr', function(req){
-  if (req.ip) return req.ip;
-  var sock = req.socket;
-  if (sock.socket) return sock.socket.remoteAddress;
-  return sock.remoteAddress;
-});
-
-/**
- * HTTP version
- */
-
-exports.token('http-version', function(req){
-  return req.httpVersionMajor + '.' + req.httpVersionMinor;
-});
-
-/**
- * UA string
- */
-
-exports.token('user-agent', function(req){
-  return req.headers['user-agent'];
-});
-
-/**
- * request header
- */
-
-exports.token('req', function(req, res, field){
-  return req.headers[field.toLowerCase()];
-});
-
-/**
- * response header
- */
-
-exports.token('res', function(req, res, field){
-  return (res._headers || {})[field.toLowerCase()];
-});
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js
deleted file mode 100644
index 9ce4939..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js
+++ /dev/null
@@ -1,59 +0,0 @@
-
-/*!
- * Connect - methodOverride
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var methods = require('methods');
-
-/**
- * Method Override:
- *
- * Provides faux HTTP method support.
- *
- * Pass an optional `key` to use when checking for
- * a method override, othewise defaults to _\_method_.
- * The original method is available via `req.originalMethod`.
- *
- * @param {String} key
- * @return {Function}
- * @api public
- */
-
-module.exports = function methodOverride(key){
-  key = key || "_method";
-  return function methodOverride(req, res, next) {
-    var method;
-    req.originalMethod = req.originalMethod || req.method;
-
-    // req.body
-    if (req.body && key in req.body) {
-      method = req.body[key].toLowerCase();
-      delete req.body[key];
-    }
-
-    // check X-HTTP-Method-Override
-    if (req.headers['x-http-method-override']) {
-      method = req.headers['x-http-method-override'].toLowerCase();
-    }
-
-    // replace
-    if (supports(method)) req.method = method.toUpperCase();
-
-    next();
-  };
-};
-
-/**
- * Check if node supports `method`.
- */
-
-function supports(method) {
-  return ~methods.indexOf(method);
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/multipart.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/multipart.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/multipart.js
deleted file mode 100644
index 7b26fae..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/multipart.js
+++ /dev/null
@@ -1,133 +0,0 @@
-/*!
- * Connect - multipart
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var formidable = require('formidable')
-  , _limit = require('./limit')
-  , utils = require('../utils')
-  , qs = require('qs');
-
-/**
- * noop middleware.
- */
-
-function noop(req, res, next) {
-  next();
-}
-
-/**
- * Multipart:
- * 
- * Parse multipart/form-data request bodies,
- * providing the parsed object as `req.body`
- * and `req.files`.
- *
- * Configuration:
- *
- *  The options passed are merged with [formidable](https://github.com/felixge/node-formidable)'s
- *  `IncomingForm` object, allowing you to configure the upload directory,
- *  size limits, etc. For example if you wish to change the upload dir do the following.
- *
- *     app.use(connect.multipart({ uploadDir: path }));
- *
- * Options:
- *
- *   - `limit`  byte limit defaulting to none
- *   - `defer`  defers processing and exposes the Formidable form object as `req.form`.
- *              `next()` is called without waiting for the form's "end" event.
- *              This option is useful if you need to bind to the "progress" event, for example.
- *
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-exports = module.exports = function(options){
-  options = options || {};
-
-  var limit = options.limit
-    ? _limit(options.limit)
-    : noop;
-
-  return function multipart(req, res, next) {
-    if (req._body) return next();
-    req.body = req.body || {};
-    req.files = req.files || {};
-
-    if (!utils.hasBody(req)) return next();
-
-    // ignore GET
-    if ('GET' == req.method || 'HEAD' == req.method) return next();
-
-    // check Content-Type
-    if ('multipart/form-data' != utils.mime(req)) return next();
-
-    // flag as parsed
-    req._body = true;
-
-    // parse
-    limit(req, res, function(err){
-      if (err) return next(err);
-
-      var form = new formidable.IncomingForm
-        , data = {}
-        , files = {}
-        , done;
-
-      Object.keys(options).forEach(function(key){
-        form[key] = options[key];
-      });
-
-      function ondata(name, val, data){
-        if (Array.isArray(data[name])) {
-          data[name].push(val);
-        } else if (data[name]) {
-          data[name] = [data[name], val];
-        } else {
-          data[name] = val;
-        }
-      }
-
-      form.on('field', function(name, val){
-        ondata(name, val, data);
-      });
-
-      form.on('file', function(name, val){
-        ondata(name, val, files);
-      });
-
-      form.on('error', function(err){
-        if (!options.defer) {
-          err.status = 400;
-          next(err);
-        }
-        done = true;
-      });
-
-      form.on('end', function(){
-        if (done) return;
-        try {
-          req.body = qs.parse(data);
-          req.files = qs.parse(files);
-          if (!options.defer) next();
-        } catch (err) {
-          form.emit('error', err);
-        }
-      });
-
-      form.parse(req);
-
-      if (options.defer) {
-        req.form = form;
-        next();
-      }
-    });
-  }
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/query.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/query.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/query.js
deleted file mode 100644
index 93fc5d3..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/query.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*!
- * Connect - query
- * Copyright(c) 2011 TJ Holowaychuk
- * Copyright(c) 2011 Sencha Inc.
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var qs = require('qs')
-  , parse = require('../utils').parseUrl;
-
-/**
- * Query:
- *
- * Automatically parse the query-string when available,
- * populating the `req.query` object.
- *
- * Examples:
- *
- *     connect()
- *       .use(connect.query())
- *       .use(function(req, res){
- *         res.end(JSON.stringify(req.query));
- *       });
- *
- *  The `options` passed are provided to qs.parse function.
- *
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-module.exports = function query(options){
-  return function query(req, res, next){
-    if (!req.query) {
-      req.query = ~req.url.indexOf('?')
-        ? qs.parse(parse(req).query, options)
-        : {};
-    }
-
-    next();
-  };
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/responseTime.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/responseTime.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/responseTime.js
deleted file mode 100644
index 62abc04..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/responseTime.js
+++ /dev/null
@@ -1,32 +0,0 @@
-
-/*!
- * Connect - responseTime
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Reponse time:
- *
- * Adds the `X-Response-Time` header displaying the response
- * duration in milliseconds.
- *
- * @return {Function}
- * @api public
- */
-
-module.exports = function responseTime(){
-  return function(req, res, next){
-    var start = new Date;
-
-    if (res._responseTime) return next();
-    res._responseTime = true;
-
-    res.on('header', function(){
-      var duration = new Date - start;
-      res.setHeader('X-Response-Time', duration + 'ms');
-    });
-
-    next();
-  };
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session.js
deleted file mode 100644
index a107295..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session.js
+++ /dev/null
@@ -1,355 +0,0 @@
-/*!
- * Connect - session
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var Session = require('./session/session')
-  , debug = require('debug')('connect:session')
-  , MemoryStore = require('./session/memory')
-  , signature = require('cookie-signature')
-  , Cookie = require('./session/cookie')
-  , Store = require('./session/store')
-  , utils = require('./../utils')
-  , uid = require('uid2')
-  , parse = utils.parseUrl
-  , crc32 = require('buffer-crc32');
-
-// environment
-
-var env = process.env.NODE_ENV;
-
-/**
- * Expose the middleware.
- */
-
-exports = module.exports = session;
-
-/**
- * Expose constructors.
- */
-
-exports.Store = Store;
-exports.Cookie = Cookie;
-exports.Session = Session;
-exports.MemoryStore = MemoryStore;
-
-/**
- * Warning message for `MemoryStore` usage in production.
- */
-
-var warning = 'Warning: connection.session() MemoryStore is not\n'
-  + 'designed for a production environment, as it will leak\n'
-  + 'memory, and will not scale past a single process.';
-
-/**
- * Session:
- *
- *   Setup session store with the given `options`.
- *
- *   Session data is _not_ saved in the cookie itself, however
- *   cookies are used, so we must use the [cookieParser()](cookieParser.html)
- *   middleware _before_ `session()`.
- *
- * Examples:
- *
- *     connect()
- *       .use(connect.cookieParser())
- *       .use(connect.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }}))
- *
- * Options:
- *
- *   - `key` cookie name defaulting to `connect.sid`
- *   - `store` session store instance
- *   - `secret` session cookie is signed with this secret to prevent tampering
- *   - `cookie` session cookie settings, defaulting to `{ path: '/', httpOnly: true, maxAge: null }`
- *   - `proxy` trust the reverse proxy when setting secure cookies (via "x-forwarded-proto")
- *
- * Cookie option:
- *
- *  By default `cookie.maxAge` is `null`, meaning no "expires" parameter is set
- *  so the cookie becomes a browser-session cookie. When the user closes the
- *  browser the cookie (and session) will be removed.
- *
- * ## req.session
- *
- *  To store or access session data, simply use the request property `req.session`,
- *  which is (generally) serialized as JSON by the store, so nested objects
- *  are typically fine. For example below is a user-specific view counter:
- *
- *       connect()
- *         .use(connect.favicon())
- *         .use(connect.cookieParser())
- *         .use(connect.session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }}))
- *         .use(function(req, res, next){
- *           var sess = req.session;
- *           if (sess.views) {
- *             res.setHeader('Content-Type', 'text/html');
- *             res.write('<p>views: ' + sess.views + '</p>');
- *             res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's</p>');
- *             res.end();
- *             sess.views++;
- *           } else {
- *             sess.views = 1;
- *             res.end('welcome to the session demo. refresh!');
- *           }
- *         }
- *       )).listen(3000);
- *
- * ## Session#regenerate()
- *
- *  To regenerate the session simply invoke the method, once complete
- *  a new SID and `Session` instance will be initialized at `req.session`.
- *
- *      req.session.regenerate(function(err){
- *        // will have a new session here
- *      });
- *
- * ## Session#destroy()
- *
- *  Destroys the session, removing `req.session`, will be re-generated next request.
- *
- *      req.session.destroy(function(err){
- *        // cannot access session here
- *      });
- *
- * ## Session#reload()
- *
- *  Reloads the session data.
- *
- *      req.session.reload(function(err){
- *        // session updated
- *      });
- *
- * ## Session#save()
- *
- *  Save the session.
- *
- *      req.session.save(function(err){
- *        // session saved
- *      });
- *
- * ## Session#touch()
- *
- *   Updates the `.maxAge` property. Typically this is
- *   not necessary to call, as the session middleware does this for you.
- *
- * ## Session#cookie
- *
- *  Each session has a unique cookie object accompany it. This allows
- *  you to alter the session cookie per visitor. For example we can
- *  set `req.session.cookie.expires` to `false` to enable the cookie
- *  to remain for only the duration of the user-agent.
- *
- * ## Session#maxAge
- *
- *  Alternatively `req.session.cookie.maxAge` will return the time
- *  remaining in milliseconds, which we may also re-assign a new value
- *  to adjust the `.expires` property appropriately. The following
- *  are essentially equivalent
- *
- *     var hour = 3600000;
- *     req.session.cookie.expires = new Date(Date.now() + hour);
- *     req.session.cookie.maxAge = hour;
- *
- * For example when `maxAge` is set to `60000` (one minute), and 30 seconds
- * has elapsed it will return `30000` until the current request has completed,
- * at which time `req.session.touch()` is called to reset `req.session.maxAge`
- * to its original value.
- *
- *     req.session.cookie.maxAge;
- *     // => 30000
- *
- * Session Store Implementation:
- *
- * Every session store _must_ implement the following methods
- *
- *    - `.get(sid, callback)`
- *    - `.set(sid, session, callback)`
- *    - `.destroy(sid, callback)`
- *
- * Recommended methods include, but are not limited to:
- *
- *    - `.length(callback)`
- *    - `.clear(callback)`
- *
- * For an example implementation view the [connect-redis](http://github.com/visionmedia/connect-redis) repo.
- *
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-function session(options){
-  var options = options || {}
-    , key = options.key || 'connect.sid'
-    , store = options.store || new MemoryStore
-    , cookie = options.cookie || {}
-    , trustProxy = options.proxy
-    , storeReady = true;
-
-  // notify user that this store is not
-  // meant for a production environment
-  if ('production' == env && store instanceof MemoryStore) {
-    console.warn(warning);
-  }
-
-  // generates the new session
-  store.generate = function(req){
-    req.sessionID = uid(24);
-    req.session = new Session(req);
-    req.session.cookie = new Cookie(cookie);
-  };
-
-  store.on('disconnect', function(){ storeReady = false; });
-  store.on('connect', function(){ storeReady = true; });
-
-  return function session(req, res, next) {
-    // self-awareness
-    if (req.session) return next();
-
-    // Handle connection as if there is no session if
-    // the store has temporarily disconnected etc
-    if (!storeReady) return debug('store is disconnected'), next();
-
-    // pathname mismatch
-    if (0 != req.originalUrl.indexOf(cookie.path || '/')) return next();
-
-    // backwards compatibility for signed cookies
-    // req.secret is passed from the cookie parser middleware
-    var secret = options.secret || req.secret;
-
-    // ensure secret is available or bail
-    if (!secret) throw new Error('`secret` option required for sessions');
-
-    // parse url
-    var originalHash
-      , originalId;
-
-    // expose store
-    req.sessionStore = store;
-
-    // grab the session cookie value and check the signature
-    var rawCookie = req.cookies[key];
-
-    // get signedCookies for backwards compat with signed cookies
-    var unsignedCookie = req.signedCookies[key];
-
-    if (!unsignedCookie && rawCookie) {
-      unsignedCookie = utils.parseSignedCookie(rawCookie, secret);
-    }
-
-    // set-cookie
-    res.on('header', function(){
-      if (!req.session) return;
-      var cookie = req.session.cookie
-        , proto = (req.headers['x-forwarded-proto'] || '').split(',')[0].toLowerCase().trim()
-        , tls = req.connection.encrypted || (trustProxy && 'https' == proto)
-        , isNew = unsignedCookie != req.sessionID;
-
-      // only send secure cookies via https
-      if (cookie.secure && !tls) return debug('not secured');
-
-      // long expires, handle expiry server-side
-      if (!isNew && cookie.hasLongExpires) return debug('already set cookie');
-
-      // browser-session length cookie
-      if (null == cookie.expires) {
-        if (!isNew) return debug('already set browser-session cookie');
-      // compare hashes and ids
-      } else if (originalHash == hash(req.session) && originalId == req.session.id) {
-        return debug('unmodified session');
-      }
-
-      var val = 's:' + signature.sign(req.sessionID, secret);
-      val = cookie.serialize(key, val);
-      debug('set-cookie %s', val);
-      res.setHeader('Set-Cookie', val);
-    });
-
-    // proxy end() to commit the session
-    var end = res.end;
-    res.end = function(data, encoding){
-      res.end = end;
-      if (!req.session) return res.end(data, encoding);
-      debug('saving');
-      req.session.resetMaxAge();
-      req.session.save(function(err){
-        if (err) console.error(err.stack);
-        debug('saved');
-        res.end(data, encoding);
-      });
-    };
-
-    // generate the session
-    function generate() {
-      store.generate(req);
-    }
-
-    // get the sessionID from the cookie
-    req.sessionID = unsignedCookie;
-
-    // generate a session if the browser doesn't send a sessionID
-    if (!req.sessionID) {
-      debug('no SID sent, generating session');
-      generate();
-      next();
-      return;
-    }
-
-    // generate the session object
-    var pause = utils.pause(req);
-    debug('fetching %s', req.sessionID);
-    store.get(req.sessionID, function(err, sess){
-      // proxy to resume() events
-      var _next = next;
-      next = function(err){
-        _next(err);
-        pause.resume();
-      };
-
-      // error handling
-      if (err) {
-        debug('error %j', err);
-        if ('ENOENT' == err.code) {
-          generate();
-          next();
-        } else {
-          next(err);
-        }
-      // no session
-      } else if (!sess) {
-        debug('no session found');
-        generate();
-        next();
-      // populate req.session
-      } else {
-        debug('session found');
-        store.createSession(req, sess);
-        originalId = req.sessionID;
-        originalHash = hash(sess);
-        next();
-      }
-    });
-  };
-};
-
-/**
- * Hash the given `sess` object omitting changes
- * to `.cookie`.
- *
- * @param {Object} sess
- * @return {String}
- * @api private
- */
-
-function hash(sess) {
-  return crc32.signed(JSON.stringify(sess, function(key, val){
-    if ('cookie' != key) return val;
-  }));
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js
deleted file mode 100644
index cdce2a5..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js
+++ /dev/null
@@ -1,140 +0,0 @@
-
-/*!
- * Connect - session - Cookie
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var utils = require('../../utils')
-  , cookie = require('cookie');
-
-/**
- * Initialize a new `Cookie` with the given `options`.
- *
- * @param {IncomingMessage} req
- * @param {Object} options
- * @api private
- */
-
-var Cookie = module.exports = function Cookie(options) {
-  this.path = '/';
-  this.maxAge = null;
-  this.httpOnly = true;
-  if (options) utils.merge(this, options);
-  this.originalMaxAge = undefined == this.originalMaxAge
-    ? this.maxAge
-    : this.originalMaxAge;
-};
-
-/*!
- * Prototype.
- */
-
-Cookie.prototype = {
-
-  /**
-   * Set expires `date`.
-   *
-   * @param {Date} date
-   * @api public
-   */
-
-  set expires(date) {
-    this._expires = date;
-    this.originalMaxAge = this.maxAge;
-  },
-
-  /**
-   * Get expires `date`.
-   *
-   * @return {Date}
-   * @api public
-   */
-
-  get expires() {
-    return this._expires;
-  },
-
-  /**
-   * Set expires via max-age in `ms`.
-   *
-   * @param {Number} ms
-   * @api public
-   */
-
-  set maxAge(ms) {
-    this.expires = 'number' == typeof ms
-      ? new Date(Date.now() + ms)
-      : ms;
-  },
-
-  /**
-   * Get expires max-age in `ms`.
-   *
-   * @return {Number}
-   * @api public
-   */
-
-  get maxAge() {
-    return this.expires instanceof Date
-      ? this.expires.valueOf() - Date.now()
-      : this.expires;
-  },
-
-  /**
-   * Return cookie data object.
-   *
-   * @return {Object}
-   * @api private
-   */
-
-  get data() {
-    return {
-        originalMaxAge: this.originalMaxAge
-      , expires: this._expires
-      , secure: this.secure
-      , httpOnly: this.httpOnly
-      , domain: this.domain
-      , path: this.path
-    }
-  },
-
-  /**
-   * Check if the cookie has a reasonably large max-age.
-   *
-   * @return {Boolean}
-   * @api private
-   */
-
-  get hasLongExpires() {
-    var week = 604800000;
-    return this.maxAge > (4 * week);
-  },
-
-  /**
-   * Return a serialized cookie string.
-   *
-   * @return {String}
-   * @api public
-   */
-
-  serialize: function(name, val){
-    return cookie.serialize(name, val, this.data);
-  },
-
-  /**
-   * Return JSON representation of this cookie.
-   *
-   * @return {Object}
-   * @api private
-   */
-
-  toJSON: function(){
-    return this.data;
-  }
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/memory.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/memory.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/memory.js
deleted file mode 100644
index fb93939..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/memory.js
+++ /dev/null
@@ -1,129 +0,0 @@
-
-/*!
- * Connect - session - MemoryStore
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var Store = require('./store');
-
-/**
- * Initialize a new `MemoryStore`.
- *
- * @api public
- */
-
-var MemoryStore = module.exports = function MemoryStore() {
-  this.sessions = {};
-};
-
-/**
- * Inherit from `Store.prototype`.
- */
-
-MemoryStore.prototype.__proto__ = Store.prototype;
-
-/**
- * Attempt to fetch session by the given `sid`.
- *
- * @param {String} sid
- * @param {Function} fn
- * @api public
- */
-
-MemoryStore.prototype.get = function(sid, fn){
-  var self = this;
-  process.nextTick(function(){
-    var expires
-      , sess = self.sessions[sid];
-    if (sess) {
-      sess = JSON.parse(sess);
-      expires = 'string' == typeof sess.cookie.expires
-        ? new Date(sess.cookie.expires)
-        : sess.cookie.expires;
-      if (!expires || new Date < expires) {
-        fn(null, sess);
-      } else {
-        self.destroy(sid, fn);
-      }
-    } else {
-      fn();
-    }
-  });
-};
-
-/**
- * Commit the given `sess` object associated with the given `sid`.
- *
- * @param {String} sid
- * @param {Session} sess
- * @param {Function} fn
- * @api public
- */
-
-MemoryStore.prototype.set = function(sid, sess, fn){
-  var self = this;
-  process.nextTick(function(){
-    self.sessions[sid] = JSON.stringify(sess);
-    fn && fn();
-  });
-};
-
-/**
- * Destroy the session associated with the given `sid`.
- *
- * @param {String} sid
- * @api public
- */
-
-MemoryStore.prototype.destroy = function(sid, fn){
-  var self = this;
-  process.nextTick(function(){
-    delete self.sessions[sid];
-    fn && fn();
-  });
-};
-
-/**
- * Invoke the given callback `fn` with all active sessions.
- *
- * @param {Function} fn
- * @api public
- */
-
-MemoryStore.prototype.all = function(fn){
-  var arr = []
-    , keys = Object.keys(this.sessions);
-  for (var i = 0, len = keys.length; i < len; ++i) {
-    arr.push(this.sessions[keys[i]]);
-  }
-  fn(null, arr);
-};
-
-/**
- * Clear all sessions.
- *
- * @param {Function} fn
- * @api public
- */
-
-MemoryStore.prototype.clear = function(fn){
-  this.sessions = {};
-  fn && fn();
-};
-
-/**
- * Fetch number of sessions.
- *
- * @param {Function} fn
- * @api public
- */
-
-MemoryStore.prototype.length = function(fn){
-  fn(null, Object.keys(this.sessions).length);
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/session.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/session.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/session.js
deleted file mode 100644
index 0dd4b40..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/session.js
+++ /dev/null
@@ -1,116 +0,0 @@
-
-/*!
- * Connect - session - Session
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var utils = require('../../utils');
-
-/**
- * Create a new `Session` with the given request and `data`.
- *
- * @param {IncomingRequest} req
- * @param {Object} data
- * @api private
- */
-
-var Session = module.exports = function Session(req, data) {
-  Object.defineProperty(this, 'req', { value: req });
-  Object.defineProperty(this, 'id', { value: req.sessionID });
-  if ('object' == typeof data) utils.merge(this, data);
-};
-
-/**
- * Update reset `.cookie.maxAge` to prevent
- * the cookie from expiring when the
- * session is still active.
- *
- * @return {Session} for chaining
- * @api public
- */
-
-Session.prototype.touch = function(){
-  return this.resetMaxAge();
-};
-
-/**
- * Reset `.maxAge` to `.originalMaxAge`.
- *
- * @return {Session} for chaining
- * @api public
- */
-
-Session.prototype.resetMaxAge = function(){
-  this.cookie.maxAge = this.cookie.originalMaxAge;
-  return this;
-};
-
-/**
- * Save the session data with optional callback `fn(err)`.
- *
- * @param {Function} fn
- * @return {Session} for chaining
- * @api public
- */
-
-Session.prototype.save = function(fn){
-  this.req.sessionStore.set(this.id, this, fn || function(){});
-  return this;
-};
-
-/**
- * Re-loads the session data _without_ altering
- * the maxAge properties. Invokes the callback `fn(err)`,
- * after which time if no exception has occurred the
- * `req.session` property will be a new `Session` object,
- * although representing the same session.
- *
- * @param {Function} fn
- * @return {Session} for chaining
- * @api public
- */
-
-Session.prototype.reload = function(fn){
-  var req = this.req
-    , store = this.req.sessionStore;
-  store.get(this.id, function(err, sess){
-    if (err) return fn(err);
-    if (!sess) return fn(new Error('failed to load session'));
-    store.createSession(req, sess);
-    fn();
-  });
-  return this;
-};
-
-/**
- * Destroy `this` session.
- *
- * @param {Function} fn
- * @return {Session} for chaining
- * @api public
- */
-
-Session.prototype.destroy = function(fn){
-  delete this.req.session;
-  this.req.sessionStore.destroy(this.id, fn);
-  return this;
-};
-
-/**
- * Regenerate this request's session.
- *
- * @param {Function} fn
- * @return {Session} for chaining
- * @api public
- */
-
-Session.prototype.regenerate = function(fn){
-  this.req.sessionStore.regenerate(this.req, fn);
-  return this;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/store.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/store.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/store.js
deleted file mode 100644
index 54294cb..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/session/store.js
+++ /dev/null
@@ -1,84 +0,0 @@
-
-/*!
- * Connect - session - Store
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var EventEmitter = require('events').EventEmitter
-  , Session = require('./session')
-  , Cookie = require('./cookie');
-
-/**
- * Initialize abstract `Store`.
- *
- * @api private
- */
-
-var Store = module.exports = function Store(options){};
-
-/**
- * Inherit from `EventEmitter.prototype`.
- */
-
-Store.prototype.__proto__ = EventEmitter.prototype;
-
-/**
- * Re-generate the given requests's session.
- *
- * @param {IncomingRequest} req
- * @return {Function} fn
- * @api public
- */
-
-Store.prototype.regenerate = function(req, fn){
-  var self = this;
-  this.destroy(req.sessionID, function(err){
-    self.generate(req);
-    fn(err);
-  });
-};
-
-/**
- * Load a `Session` instance via the given `sid`
- * and invoke the callback `fn(err, sess)`.
- *
- * @param {String} sid
- * @param {Function} fn
- * @api public
- */
-
-Store.prototype.load = function(sid, fn){
-  var self = this;
-  this.get(sid, function(err, sess){
-    if (err) return fn(err);
-    if (!sess) return fn();
-    var req = { sessionID: sid, sessionStore: self };
-    sess = self.createSession(req, sess);
-    fn(null, sess);
-  });
-};
-
-/**
- * Create session from JSON `sess` data.
- *
- * @param {IncomingRequest} req
- * @param {Object} sess
- * @return {Session}
- * @api private
- */
-
-Store.prototype.createSession = function(req, sess){
-  var expires = sess.cookie.expires
-    , orig = sess.cookie.originalMaxAge;
-  sess.cookie = new Cookie(sess.cookie);
-  if ('string' == typeof expires) sess.cookie.expires = new Date(expires);
-  sess.cookie.originalMaxAge = orig;
-  req.session = new Session(req, sess);
-  return req.session;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/static.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/static.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/static.js
deleted file mode 100644
index 7762ac1..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/static.js
+++ /dev/null
@@ -1,95 +0,0 @@
-/*!
- * Connect - static
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var send = require('send')
-  , utils = require('../utils')
-  , parse = utils.parseUrl
-  , url = require('url');
-
-/**
- * Static:
- *
- *   Static file server with the given `root` path.
- *
- * Examples:
- *
- *     var oneDay = 86400000;
- *
- *     connect()
- *       .use(connect.static(__dirname + '/public'))
- *
- *     connect()
- *       .use(connect.static(__dirname + '/public', { maxAge: oneDay }))
- *
- * Options:
- *
- *    - `maxAge`     Browser cache maxAge in milliseconds. defaults to 0
- *    - `hidden`     Allow transfer of hidden files. defaults to false
- *    - `redirect`   Redirect to trailing "/" when the pathname is a dir. defaults to true
- *    - `index`      Default file name, defaults to 'index.html'
- *
- * @param {String} root
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-exports = module.exports = function(root, options){
-  options = options || {};
-
-  // root required
-  if (!root) throw new Error('static() root path required');
-
-  // default redirect
-  var redirect = false !== options.redirect;
-
-  return function staticMiddleware(req, res, next) {
-    if ('GET' != req.method && 'HEAD' != req.method) return next();
-    var path = parse(req).pathname;
-    var pause = utils.pause(req);
-
-    function resume() {
-      next();
-      pause.resume();
-    }
-
-    function directory() {
-      if (!redirect) return resume();
-      var pathname = url.parse(req.originalUrl).pathname;
-      res.statusCode = 303;
-      res.setHeader('Location', pathname + '/');
-      res.end('Redirecting to ' + utils.escape(pathname) + '/');
-    }
-
-    function error(err) {
-      if (404 == err.status) return resume();
-      next(err);
-    }
-
-    send(req, path)
-      .maxage(options.maxAge || 0)
-      .root(root)
-      .index(options.index || 'index.html')
-      .hidden(options.hidden)
-      .on('error', error)
-      .on('directory', directory)
-      .pipe(res);
-  };
-};
-
-/**
- * Expose mime module.
- *
- * If you wish to extend the mime table use this
- * reference to the "mime" module in the npm registry.
- */
-
-exports.mime = send.mime;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/staticCache.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/staticCache.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/staticCache.js
deleted file mode 100644
index 7354a8f..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/staticCache.js
+++ /dev/null
@@ -1,231 +0,0 @@
-
-/*!
- * Connect - staticCache
- * Copyright(c) 2011 Sencha Inc.
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var utils = require('../utils')
-  , Cache = require('../cache')
-  , fresh = require('fresh');
-
-/**
- * Static cache:
- *
- * Enables a memory cache layer on top of
- * the `static()` middleware, serving popular
- * static files.
- *
- * By default a maximum of 128 objects are
- * held in cache, with a max of 256k each,
- * totalling ~32mb.
- *
- * A Least-Recently-Used (LRU) cache algo
- * is implemented through the `Cache` object,
- * simply rotating cache objects as they are
- * hit. This means that increasingly popular
- * objects maintain their positions while
- * others get shoved out of the stack and
- * garbage collected.
- *
- * Benchmarks:
- *
- *     static(): 2700 rps
- *     node-static: 5300 rps
- *     static() + staticCache(): 7500 rps
- *
- * Options:
- *
- *   - `maxObjects`  max cache objects [128]
- *   - `maxLength`  max cache object length 256kb
- *
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-module.exports = function staticCache(options){
-  var options = options || {}
-    , cache = new Cache(options.maxObjects || 128)
-    , maxlen = options.maxLength || 1024 * 256;
-
-  console.warn('connect.staticCache() is deprecated and will be removed in 3.0');
-  console.warn('use varnish or similar reverse proxy caches.');
-
-  return function staticCache(req, res, next){
-    var key = cacheKey(req)
-      , ranges = req.headers.range
-      , hasCookies = req.headers.cookie
-      , hit = cache.get(key);
-
-    // cache static
-    // TODO: change from staticCache() -> cache()
-    // and make this work for any request
-    req.on('static', function(stream){
-      var headers = res._headers
-        , cc = utils.parseCacheControl(headers['cache-control'] || '')
-        , contentLength = headers['content-length']
-        , hit;
-
-      // dont cache set-cookie responses
-      if (headers['set-cookie']) return hasCookies = true;
-
-      // dont cache when cookies are present
-      if (hasCookies) return;
-
-      // ignore larger files
-      if (!contentLength || contentLength > maxlen) return;
-
-      // don't cache partial files
-      if (headers['content-range']) return;
-
-      // dont cache items we shouldn't be
-      // TODO: real support for must-revalidate / no-cache
-      if ( cc['no-cache']
-        || cc['no-store']
-        || cc['private']
-        || cc['must-revalidate']) return;
-
-      // if already in cache then validate
-      if (hit = cache.get(key)){
-        if (headers.etag == hit[0].etag) {
-          hit[0].date = new Date;
-          return;
-        } else {
-          cache.remove(key);
-        }
-      }
-
-      // validation notifiactions don't contain a steam
-      if (null == stream) return;
-
-      // add the cache object
-      var arr = [];
-
-      // store the chunks
-      stream.on('data', function(chunk){
-        arr.push(chunk);
-      });
-
-      // flag it as complete
-      stream.on('end', function(){
-        var cacheEntry = cache.add(key);
-        delete headers['x-cache']; // Clean up (TODO: others)
-        cacheEntry.push(200);
-        cacheEntry.push(headers);
-        cacheEntry.push.apply(cacheEntry, arr);
-      });
-    });
-
-    if (req.method == 'GET' || req.method == 'HEAD') {
-      if (ranges) {
-        next();
-      } else if (!hasCookies && hit && !mustRevalidate(req, hit)) {
-        res.setHeader('X-Cache', 'HIT');
-        respondFromCache(req, res, hit);
-      } else {
-        res.setHeader('X-Cache', 'MISS');
-        next();
-      }
-    } else {
-      next();
-    }
-  }
-};
-
-/**
- * Respond with the provided cached value.
- * TODO: Assume 200 code, that's iffy.
- *
- * @param {Object} req
- * @param {Object} res
- * @param {Object} cacheEntry
- * @return {String}
- * @api private
- */
-
-function respondFromCache(req, res, cacheEntry) {
-  var status = cacheEntry[0]
-    , headers = utils.merge({}, cacheEntry[1])
-    , content = cacheEntry.slice(2);
-
-  headers.age = (new Date - new Date(headers.date)) / 1000 || 0;
-
-  switch (req.method) {
-    case 'HEAD':
-      res.writeHead(status, headers);
-      res.end();
-      break;
-    case 'GET':
-      if (utils.conditionalGET(req) && fresh(req.headers, headers)) {
-        headers['content-length'] = 0;
-        res.writeHead(304, headers);
-        res.end();
-      } else {
-        res.writeHead(status, headers);
-
-        function write() {
-          while (content.length) {
-            if (false === res.write(content.shift())) {
-              res.once('drain', write);
-              return;
-            }
-          }
-          res.end();
-        }
-
-        write();
-      }
-      break;
-    default:
-      // This should never happen.
-      res.writeHead(500, '');
-      res.end();
-  }
-}
-
-/**
- * Determine whether or not a cached value must be revalidated.
- *
- * @param {Object} req
- * @param {Object} cacheEntry
- * @return {String}
- * @api private
- */
-
-function mustRevalidate(req, cacheEntry) {
-  var cacheHeaders = cacheEntry[1]
-    , reqCC = utils.parseCacheControl(req.headers['cache-control'] || '')
-    , cacheCC = utils.parseCacheControl(cacheHeaders['cache-control'] || '')
-    , cacheAge = (new Date - new Date(cacheHeaders.date)) / 1000 || 0;
-
-  if ( cacheCC['no-cache']
-    || cacheCC['must-revalidate']
-    || cacheCC['proxy-revalidate']) return true;
-
-  if (reqCC['no-cache']) return true;
-
-  if (null != reqCC['max-age']) return reqCC['max-age'] < cacheAge;
-
-  if (null != cacheCC['max-age']) return cacheCC['max-age'] < cacheAge;
-
-  return false;
-}
-
-/**
- * The key to use in the cache. For now, this is the URL path and query.
- *
- * 'http://example.com?key=value' -> '/?key=value'
- *
- * @param {Object} req
- * @return {String}
- * @api private
- */
-
-function cacheKey(req) {
-  return utils.parseUrl(req).path;
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/timeout.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/timeout.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/timeout.js
deleted file mode 100644
index 5496c02..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/timeout.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*!
- * Connect - timeout
- * Ported from https://github.com/LearnBoost/connect-timeout
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var debug = require('debug')('connect:timeout');
-
-/**
- * Timeout:
- *
- * Times out the request in `ms`, defaulting to `5000`. The
- * method `req.clearTimeout()` is added to revert this behaviour
- * programmatically within your application's middleware, routes, etc.
- *
- * The timeout error is passed to `next()` so that you may customize
- * the response behaviour. This error has the `.timeout` property as
- * well as `.status == 503`.
- *
- * @param {Number} ms
- * @return {Function}
- * @api public
- */
-
-module.exports = function timeout(ms) {
-  ms = ms || 5000;
-
-  return function(req, res, next) {
-    var id = setTimeout(function(){
-      req.emit('timeout', ms);
-    }, ms);
-
-    req.on('timeout', function(){
-      if (res.headerSent) return debug('response started, cannot timeout');
-      var err = new Error('Response timeout');
-      err.timeout = ms;
-      err.status = 503;
-      next(err);
-    });
-
-    req.clearTimeout = function(){
-      clearTimeout(id);
-    };
-
-    res.on('header', function(){
-      clearTimeout(id);
-    });
-
-    next();
-  };
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js
deleted file mode 100644
index cceafc0..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js
+++ /dev/null
@@ -1,78 +0,0 @@
-
-/*!
- * Connect - urlencoded
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var utils = require('../utils')
-  , _limit = require('./limit')
-  , qs = require('qs');
-
-/**
- * noop middleware.
- */
-
-function noop(req, res, next) {
-  next();
-}
-
-/**
- * Urlencoded:
- * 
- *  Parse x-ww-form-urlencoded request bodies,
- *  providing the parsed object as `req.body`.
- *
- * Options:
- *
- *    - `limit`  byte limit disabled by default
- *
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-exports = module.exports = function(options){
-  options = options || {};
-
-  var limit = options.limit
-    ? _limit(options.limit)
-    : noop;
-
-  return function urlencoded(req, res, next) {
-    if (req._body) return next();
-    req.body = req.body || {};
-
-    if (!utils.hasBody(req)) return next();
-
-    // check Content-Type
-    if ('application/x-www-form-urlencoded' != utils.mime(req)) return next();
-
-    // flag as parsed
-    req._body = true;
-
-    // parse
-    limit(req, res, function(err){
-      if (err) return next(err);
-      var buf = '';
-      req.setEncoding('utf8');
-      req.on('data', function(chunk){ buf += chunk });
-      req.on('end', function(){
-        try {
-          req.body = buf.length
-            ? qs.parse(buf, options)
-            : {};
-          next();
-        } catch (err){
-          err.body = buf;
-          next(err);
-        }
-      });
-    });
-  }
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/vhost.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/vhost.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/vhost.js
deleted file mode 100644
index abbb050..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/vhost.js
+++ /dev/null
@@ -1,40 +0,0 @@
-
-/*!
- * Connect - vhost
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Vhost:
- *
- *   Setup vhost for the given `hostname` and `server`.
- *
- *     connect()
- *       .use(connect.vhost('foo.com', fooApp))
- *       .use(connect.vhost('bar.com', barApp))
- *       .use(connect.vhost('*.com', mainApp))
- *
- *  The `server` may be a Connect server or
- *  a regular Node `http.Server`.
- *
- * @param {String} hostname
- * @param {Server} server
- * @return {Function}
- * @api public
- */
-
-module.exports = function vhost(hostname, server){
-  if (!hostname) throw new Error('vhost hostname required');
-  if (!server) throw new Error('vhost server required');
-  var regexp = new RegExp('^' + hostname.replace(/[^*\w]/g, '\\$&').replace(/[*]/g, '(?:.*?)')  + '$', 'i');
-  if (server.onvhost) server.onvhost(hostname);
-  return function vhost(req, res, next){
-    if (!req.headers.host) return next();
-    var host = req.headers.host.split(':')[0];
-    if (!regexp.test(host)) return next();
-    if ('function' == typeof server) return server(req, res, next);
-    server.emit('request', req, res);
-  };
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/patch.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/patch.js b/web/demos/package/node_modules/express/node_modules/connect/lib/patch.js
deleted file mode 100644
index 7cf0012..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/patch.js
+++ /dev/null
@@ -1,79 +0,0 @@
-
-/*!
- * Connect
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var http = require('http')
-  , res = http.ServerResponse.prototype
-  , setHeader = res.setHeader
-  , _renderHeaders = res._renderHeaders
-  , writeHead = res.writeHead;
-
-// apply only once
-
-if (!res._hasConnectPatch) {
-
-  /**
-   * Provide a public "header sent" flag
-   * until node does.
-   *
-   * @return {Boolean}
-   * @api public
-   */
-
-  res.__defineGetter__('headerSent', function(){
-    return this._header;
-  });
-
-  /**
-   * Set header `field` to `val`, special-casing
-   * the `Set-Cookie` field for multiple support.
-   *
-   * @param {String} field
-   * @param {String} val
-   * @api public
-   */
-
-  res.setHeader = function(field, val){
-    var key = field.toLowerCase()
-      , prev;
-
-    // special-case Set-Cookie
-    if (this._headers && 'set-cookie' == key) {
-      if (prev = this.getHeader(field)) {
-        val = Array.isArray(prev)
-          ? prev.concat(val)
-          : [prev, val];
-      }
-    // charset
-    } else if ('content-type' == key && this.charset) {
-      val += '; charset=' + this.charset;
-    }
-
-    return setHeader.call(this, field, val);
-  };
-
-  /**
-   * Proxy to emit "header" event.
-   */
-
-  res._renderHeaders = function(){
-    if (!this._emittedHeader) this.emit('header');
-    this._emittedHeader = true;
-    return _renderHeaders.call(this);
-  };
-
-  res.writeHead = function(){
-    if (!this._emittedHeader) this.emit('header');
-    this._emittedHeader = true;
-    return writeHead.apply(this, arguments);
-  };
-
-  res._hasConnectPatch = true;
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/proto.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/proto.js b/web/demos/package/node_modules/express/node_modules/connect/lib/proto.js
deleted file mode 100644
index 6fadf8f..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/proto.js
+++ /dev/null
@@ -1,230 +0,0 @@
-
-/*!
- * Connect - HTTPServer
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var http = require('http')
-  , utils = require('./utils')
-  , debug = require('debug')('connect:dispatcher');
-
-// prototype
-
-var app = module.exports = {};
-
-// environment
-
-var env = process.env.NODE_ENV || 'development';
-
-/**
- * Utilize the given middleware `handle` to the given `route`,
- * defaulting to _/_. This "route" is the mount-point for the
- * middleware, when given a value other than _/_ the middleware
- * is only effective when that segment is present in the request's
- * pathname.
- *
- * For example if we were to mount a function at _/admin_, it would
- * be invoked on _/admin_, and _/admin/settings_, however it would
- * not be invoked for _/_, or _/posts_.
- *
- * Examples:
- *
- *      var app = connect();
- *      app.use(connect.favicon());
- *      app.use(connect.logger());
- *      app.use(connect.static(__dirname + '/public'));
- *
- * If we wanted to prefix static files with _/public_, we could
- * "mount" the `static()` middleware:
- *
- *      app.use('/public', connect.static(__dirname + '/public'));
- *
- * This api is chainable, so the following is valid:
- *
- *      connect()
- *        .use(connect.favicon())
- *        .use(connect.logger())
- *        .use(connect.static(__dirname + '/public'))
- *        .listen(3000);
- *
- * @param {String|Function|Server} route, callback or server
- * @param {Function|Server} callback or server
- * @return {Server} for chaining
- * @api public
- */
-
-app.use = function(route, fn){
-  // default route to '/'
-  if ('string' != typeof route) {
-    fn = route;
-    route = '/';
-  }
-
-  // wrap sub-apps
-  if ('function' == typeof fn.handle) {
-    var server = fn;
-    fn.route = route;
-    fn = function(req, res, next){
-      server.handle(req, res, next);
-    };
-  }
-
-  // wrap vanilla http.Servers
-  if (fn instanceof http.Server) {
-    fn = fn.listeners('request')[0];
-  }
-
-  // strip trailing slash
-  if ('/' == route[route.length - 1]) {
-    route = route.slice(0, -1);
-  }
-
-  // add the middleware
-  debug('use %s %s', route || '/', fn.name || 'anonymous');
-  this.stack.push({ route: route, handle: fn });
-
-  return this;
-};
-
-/**
- * Handle server requests, punting them down
- * the middleware stack.
- *
- * @api private
- */
-
-app.handle = function(req, res, out) {
-  var stack = this.stack
-    , fqdn = ~req.url.indexOf('://')
-    , removed = ''
-    , slashAdded = false
-    , index = 0;
-
-  function next(err) {
-    var layer, path, status, c;
-
-    if (slashAdded) {
-      req.url = req.url.substr(1);
-      slashAdded = false;
-    }
-
-    req.url = removed + req.url;
-    req.originalUrl = req.originalUrl || req.url;
-    removed = '';
-
-    // next callback
-    layer = stack[index++];
-
-    // all done
-    if (!layer || res.headerSent) {
-      // delegate to parent
-      if (out) return out(err);
-
-      // unhandled error
-      if (err) {
-        // default to 500
-        if (res.statusCode < 400) res.statusCode = 500;
-        debug('default %s', res.statusCode);
-
-        // respect err.status
-        if (err.status) res.statusCode = err.status;
-
-        // production gets a basic error message
-        var msg = 'production' == env
-          ? http.STATUS_CODES[res.statusCode]
-          : err.stack || err.toString();
-
-        // log to stderr in a non-test env
-        if ('test' != env) console.error(err.stack || err.toString());
-        if (res.headerSent) return req.socket.destroy();
-        res.setHeader('Content-Type', 'text/plain');
-        res.setHeader('Content-Length', Buffer.byteLength(msg));
-        if ('HEAD' == req.method) return res.end();
-        res.end(msg);
-      } else {
-        debug('default 404');
-        res.statusCode = 404;
-        res.setHeader('Content-Type', 'text/plain');
-        if ('HEAD' == req.method) return res.end();
-        res.end('Cannot ' + utils.escape(req.method) + ' ' + utils.escape(req.originalUrl));
-      }
-      return;
-    }
-
-    try {
-      path = utils.parseUrl(req).pathname;
-      if (undefined == path) path = '/';
-
-      // skip this layer if the route doesn't match.
-      if (0 != path.toLowerCase().indexOf(layer.route.toLowerCase())) return next(err);
-
-      c = path[layer.route.length];
-      if (c && '/' != c && '.' != c) return next(err);
-
-      // Call the layer handler
-      // Trim off the part of the url that matches the route
-      removed = layer.route;
-      req.url = req.url.substr(removed.length);
-
-      // Ensure leading slash
-      if (!fqdn && '/' != req.url[0]) {
-        req.url = '/' + req.url;
-        slashAdded = true;
-      }
-
-      debug('%s %s : %s', layer.handle.name || 'anonymous', layer.route, req.originalUrl);
-      var arity = layer.handle.length;
-      if (err) {
-        if (arity === 4) {
-          layer.handle(err, req, res, next);
-        } else {
-          next(err);
-        }
-      } else if (arity < 4) {
-        layer.handle(req, res, next);
-      } else {
-        next();
-      }
-    } catch (e) {
-      next(e);
-    }
-  }
-  next();
-};
-
-/**
- * Listen for connections.
- *
- * This method takes the same arguments
- * as node's `http.Server#listen()`.
- *
- * HTTP and HTTPS:
- *
- * If you run your application both as HTTP
- * and HTTPS you may wrap them individually,
- * since your Connect "server" is really just
- * a JavaScript `Function`.
- *
- *      var connect = require('connect')
- *        , http = require('http')
- *        , https = require('https');
- *
- *      var app = connect();
- *
- *      http.createServer(app).listen(80);
- *      https.createServer(options, app).listen(443);
- *
- * @return {http.Server}
- * @api public
- */
-
-app.listen = function(){
-  var server = http.createServer(this);
-  return server.listen.apply(server, arguments);
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/directory.html
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/directory.html b/web/demos/package/node_modules/express/node_modules/connect/lib/public/directory.html
deleted file mode 100644
index 2d63704..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/public/directory.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset='utf-8'> 
-    <title>listing directory {directory}</title>
-    <style>{style}</style>
-    <script>
-      function $(id){
-        var el = 'string' == typeof id
-          ? document.getElementById(id)
-          : id;
-
-        el.on = function(event, fn){
-          if ('content loaded' == event) {
-            event = window.attachEvent ? "load" : "DOMContentLoaded";
-          }
-          el.addEventListener
-            ? el.addEventListener(event, fn, false)
-            : el.attachEvent("on" + event, fn);
-        };
-
-        el.all = function(selector){
-          return $(el.querySelectorAll(selector));
-        };
-
-        el.each = function(fn){
-          for (var i = 0, len = el.length; i < len; ++i) {
-            fn($(el[i]), i);
-          }
-        };
-
-        el.getClasses = function(){
-          return this.getAttribute('class').split(/\s+/);
-        };
-
-        el.addClass = function(name){
-          var classes = this.getAttribute('class');
-          el.setAttribute('class', classes
-            ? classes + ' ' + name
-            : name);
-        };
-
-        el.removeClass = function(name){
-          var classes = this.getClasses().filter(function(curr){
-            return curr != name;
-          });
-          this.setAttribute('class', classes);
-        };
-
-        return el;
-      }
-
-      function search() {
-        var str = $('search').value
-          , links = $('files').all('a');
-
-        links.each(function(link){
-          var text = link.textContent;
-
-          if ('..' == text) return;
-          if (str.length && ~text.indexOf(str)) {
-            link.addClass('highlight');
-          } else {
-            link.removeClass('highlight');
-          }
-        });
-      }
-
-      $(window).on('content loaded', function(){
-        $('search').on('keyup', search);
-      });
-    </script>
-  </head>
-  <body class="directory">
-    <input id="search" type="text" placeholder="Search" autocomplete="off" />
-    <div id="wrapper">
-      <h1>{linked-path}</h1>
-      {files}
-    </div>
-  </body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/error.html
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/error.html b/web/demos/package/node_modules/express/node_modules/connect/lib/public/error.html
deleted file mode 100644
index a6d3faf..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/public/error.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<html>
-  <head>
-    <meta charset='utf-8'> 
-    <title>{error}</title>
-    <style>{style}</style>
-  </head>
-  <body>
-    <div id="wrapper">
-      <h1>{title}</h1>
-      <h2><em>{statusCode}</em> {error}</h2>
-      <ul id="stacktrace">{stack}</ul>
-    </div>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/favicon.ico
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/favicon.ico b/web/demos/package/node_modules/express/node_modules/connect/lib/public/favicon.ico
deleted file mode 100644
index 895fc96..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/favicon.ico and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page.png
deleted file mode 100644
index 03ddd79..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_add.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_add.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_add.png
deleted file mode 100644
index d5bfa07..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_add.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png
deleted file mode 100644
index 89ee2da..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_code.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_code.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_code.png
deleted file mode 100644
index f7ea904..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_code.png and /dev/null differ



[53/98] [abbrv] incubator-apex-malhar git commit: MLHR-1870 fixed test case for json parser

Posted by da...@apache.org.
MLHR-1870 fixed test case for json parser


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/38c89529
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/38c89529
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/38c89529

Branch: refs/heads/master
Commit: 38c895292e4ecbbd2d763c96ed6f83665496d042
Parents: 3f4fe18
Author: shubham <sh...@github.com>
Authored: Wed Oct 14 17:39:44 2015 +0530
Committer: shubham <sh...@github.com>
Committed: Wed Oct 14 18:01:01 2015 +0530

----------------------------------------------------------------------
 .../com/datatorrent/contrib/schema/parser/JsonParser.java     | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/38c89529/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
index db45b33..d01e436 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
@@ -28,6 +28,7 @@ import org.codehaus.jackson.map.ObjectReader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.classification.InterfaceStability;
 
 import com.datatorrent.api.Context;
@@ -73,9 +74,11 @@ public class JsonParser extends Parser<String>
   public Object convert(String tuple)
   {
     try {
-      return reader.readValue(tuple);
+      if (!StringUtils.isEmpty(tuple)) {
+        return reader.readValue(tuple);
+      }
     } catch (JsonProcessingException e) {
-      logger.debug("Error while converting tuple {} {}",tuple,e.getMessage());
+      logger.debug("Error while converting tuple {} {}", tuple, e.getMessage());
     } catch (IOException e) {
       DTThrowable.rethrow(e);
     }


[17/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/collection.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/collection.js b/web/demos/package/node_modules/mongodb/lib/mongodb/collection.js
deleted file mode 100644
index 448996b..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/collection.js
+++ /dev/null
@@ -1,625 +0,0 @@
-/**
- * Module dependencies.
- * @ignore
- */
-var InsertCommand = require('./commands/insert_command').InsertCommand
-  , QueryCommand = require('./commands/query_command').QueryCommand
-  , DeleteCommand = require('./commands/delete_command').DeleteCommand
-  , UpdateCommand = require('./commands/update_command').UpdateCommand
-  , DbCommand = require('./commands/db_command').DbCommand
-  , ObjectID = require('bson').ObjectID
-  , Code = require('bson').Code
-  , Cursor = require('./cursor').Cursor
-  , utils = require('./utils')
-  , shared = require('./collection/shared')
-  , core = require('./collection/core')
-  , query = require('./collection/query')
-  , index = require('./collection/index')
-  , geo = require('./collection/geo')
-  , commands = require('./collection/commands')
-  , aggregation = require('./collection/aggregation');
-
-/**
- * Create a new Collection instance (INTERNAL TYPE, do not instantiate directly)
- *
- * Options
- *  - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *  - **slaveOk** {Boolean, default:false}, Allow reads from secondaries.
- *  - **serializeFunctions** {Boolean, default:false}, serialize functions on the document.
- *  - **raw** {Boolean, default:false}, perform all operations using raw bson objects.
- *  - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation.
- *
- * @class Represents a Collection
- * @param {Object} db db instance.
- * @param {String} collectionName collection name.
- * @param {Object} [pkFactory] alternative primary key factory.
- * @param {Object} [options] additional options for the collection.
- * @return {Object} a collection instance.
- */
-function Collection (db, collectionName, pkFactory, options) {
-  if(!(this instanceof Collection)) return new Collection(db, collectionName, pkFactory, options);
-
-  shared.checkCollectionName(collectionName);
-
-  this.db = db;
-  this.collectionName = collectionName;
-  this.internalHint = null;
-  this.opts = options != null && ('object' === typeof options) ? options : {};
-  this.slaveOk = options == null || options.slaveOk == null ? db.slaveOk : options.slaveOk;
-  this.serializeFunctions = options == null || options.serializeFunctions == null ? db.serializeFunctions : options.serializeFunctions;
-  this.raw = options == null || options.raw == null ? db.raw : options.raw;
-
-  this.readPreference = options == null || options.readPreference == null ? db.serverConfig.options.readPreference : options.readPreference;
-  this.readPreference = this.readPreference == null ? 'primary' : this.readPreference;
-
-
-  this.pkFactory = pkFactory == null
-    ? ObjectID
-    : pkFactory;
-
-  // Server Capabilities
-  this.serverCapabilities = this.db.serverConfig._serverCapabilities;
-}
-
-/**
- * Inserts a single document or a an array of documents into MongoDB.
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **continueOnError/keepGoing** {Boolean, default:false}, keep inserting documents even if one document has an error, *mongodb 1.9.1 >*.
- *  - **serializeFunctions** {Boolean, default:false}, serialize functions on the document.
- *  - **forceServerObjectId** {Boolean, default:false}, let server assign ObjectId instead of the driver
- *  - **checkKeys** {Boolean, default:true}, allows for disabling of document key checking (WARNING OPENS YOU UP TO INJECTION ATTACKS)
- *
- * Deprecated Options
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {Array|Object} docs
- * @param {Object} [options] optional options for insert command
- * @param {Function} [callback] optional callback for the function, must be provided when using a writeconcern
- * @return {null}
- * @api public
- */
-Collection.prototype.insert = function() { return core.insert; }();
-
-/**
- * Removes documents specified by `selector` from the db.
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **single** {Boolean, default:false}, removes the first document found.
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {Object} [selector] optional select, no selector is equivalent to removing all documents.
- * @param {Object} [options] additional options during remove.
- * @param {Function} [callback] must be provided if you performing a remove with a writeconcern
- * @return {null}
- * @api public
- */
-Collection.prototype.remove = function() { return core.remove; }();
-
-/**
- * Renames the collection.
- *
- * Options
- *  - **dropTarget** {Boolean, default:false}, drop the target name collection if it previously exists.
- *
- * @param {String} newName the new name of the collection.
- * @param {Object} [options] returns option results.
- * @param {Function} callback the callback accepting the result
- * @return {null}
- * @api public
- */
-Collection.prototype.rename = function() { return commands.rename; }();
-
-/**
- * Save a document. Simple full document replacement function. Not recommended for efficiency, use atomic
- * operators and update instead for more efficient operations.
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {Object} [doc] the document to save
- * @param {Object} [options] additional options during remove.
- * @param {Function} [callback] must be provided if you performing a safe save
- * @return {null}
- * @api public
- */
-Collection.prototype.save = function() { return core.save; }();
-
-/**
- * Updates documents.
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **upsert** {Boolean, default:false}, perform an upsert operation.
- *  - **multi** {Boolean, default:false}, update all documents matching the selector.
- *  - **serializeFunctions** {Boolean, default:false}, serialize functions on the document.
- *  - **checkKeys** {Boolean, default:true}, allows for disabling of document key checking (WARNING OPENS YOU UP TO INJECTION ATTACKS)
- *
- * Deprecated Options
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {Object} selector the query to select the document/documents to be updated
- * @param {Object} document the fields/vals to be updated, or in the case of an upsert operation, inserted.
- * @param {Object} [options] additional options during update.
- * @param {Function} [callback] must be provided if you performing an update with a writeconcern
- * @return {null}
- * @api public
- */
-Collection.prototype.update = function() { return core.update; }();
-
-/**
- * The distinct command returns returns a list of distinct values for the given key across a collection.
- *
- * Options
- *  - **readPreference** {String}, the preferred read preference, require('mongodb').ReadPreference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *
- * @param {String} key key to run distinct against.
- * @param {Object} [query] option query to narrow the returned objects.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from distinct or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.distinct = function() { return commands.distinct; }();
-
-/**
- * Count number of matching documents in the db to a query.
- *
- * Options
- *  - **skip** {Number}, The number of documents to skip for the count.
- *  - **limit** {Number}, The limit of documents to count.
- *  - **readPreference** {String}, the preferred read preference, require('mongodb').ReadPreference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *
- * @param {Object} [query] query to filter by before performing count.
- * @param {Object} [options] additional options during count.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the count method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.count = function() { return commands.count; }();
-
-/**
- * Drop the collection
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the drop method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.drop = function drop(callback) {
-  this.db.dropCollection(this.collectionName, callback);
-};
-
-/**
- * Find and update a document.
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **remove** {Boolean, default:false}, set to true to remove the object before returning.
- *  - **upsert** {Boolean, default:false}, perform an upsert operation.
- *  - **new** {Boolean, default:false}, set to true if you want to return the modified object rather than the original. Ignored for remove.
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {Object} query query object to locate the object to modify
- * @param {Array}  sort - if multiple docs match, choose the first one in the specified sort order as the object to manipulate
- * @param {Object} doc - the fields/vals to be updated
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the findAndModify method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.findAndModify = function() { return core.findAndModify; }();
-
-/**
- * Find and remove a document
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {Object} query query object to locate the object to modify
- * @param {Array}  sort - if multiple docs match, choose the first one in the specified sort order as the object to manipulate
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the findAndRemove method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.findAndRemove = function() { return core.findAndRemove; }();
-
-/**
- * Creates a cursor for a query that can be used to iterate over results from MongoDB
- *
- * Various argument possibilities
- *  - callback?
- *  - selector, callback?,
- *  - selector, fields, callback?
- *  - selector, options, callback?
- *  - selector, fields, options, callback?
- *  - selector, fields, skip, limit, callback?
- *  - selector, fields, skip, limit, timeout, callback?
- *
- * Options
- *  - **limit** {Number, default:0}, sets the limit of documents returned in the query.
- *  - **sort** {Array | Object}, set to sort the documents coming back from the query. Array of indexes, [['a', 1]] etc.
- *  - **fields** {Object}, the fields to return in the query. Object of fields to include or exclude (not both), {'a':1}
- *  - **skip** {Number, default:0}, set to skip N documents ahead in your query (useful for pagination).
- *  - **hint** {Object}, tell the query to use specific indexes in the query. Object of indexes to use, {'_id':1}
- *  - **explain** {Boolean, default:false}, explain the query instead of returning the data.
- *  - **snapshot** {Boolean, default:false}, snapshot query.
- *  - **timeout** {Boolean, default:false}, specify if the cursor can timeout.
- *  - **tailable** {Boolean, default:false}, specify if the cursor is tailable.
- *  - **tailableRetryInterval** {Number, default:100}, specify the miliseconds between getMores on tailable cursor.
- *  - **numberOfRetries** {Number, default:5}, specify the number of times to retry the tailable cursor.
- *  - **awaitdata** {Boolean, default:false} allow the cursor to wait for data, only applicable for tailable cursor.
- *  - **oplogReplay** {Boolean, default:false} sets an internal flag, only applicable for tailable cursor.
- *  - **exhaust** {Boolean, default:false} have the server send all the documents at once as getMore packets, not recommended.
- *  - **batchSize** {Number, default:0}, set the batchSize for the getMoreCommand when iterating over the query results.
- *  - **returnKey** {Boolean, default:false}, only return the index key.
- *  - **maxScan** {Number}, Limit the number of items to scan.
- *  - **min** {Number}, Set index bounds.
- *  - **max** {Number}, Set index bounds.
- *  - **showDiskLoc** {Boolean, default:false}, Show disk location of results.
- *  - **comment** {String}, You can put a $comment field on a query to make looking in the profiler logs simpler.
- *  - **raw** {Boolean, default:false}, Return all BSON documents as Raw Buffer documents.
- *  - **readPreference** {String}, the preferred read preference, require('mongodb').ReadPreference ((ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *  - **numberOfRetries** {Number, default:5}, if using awaidata specifies the number of times to retry on timeout.
- *  - **partial** {Boolean, default:false}, specify if the cursor should return partial results when querying against a sharded system
- *
- * @param {Object|ObjectID} query query object to locate the object to modify
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the find method or null if an error occured.
- * @return {Cursor} returns a cursor to the query
- * @api public
- */
-Collection.prototype.find = function() { return query.find; }();
-
-/**
- * Finds a single document based on the query
- *
- * Various argument possibilities
- *  - callback?
- *  - selector, callback?,
- *  - selector, fields, callback?
- *  - selector, options, callback?
- *  - selector, fields, options, callback?
- *  - selector, fields, skip, limit, callback?
- *  - selector, fields, skip, limit, timeout, callback?
- *
- * Options
- *  - **limit** {Number, default:0}, sets the limit of documents returned in the query.
- *  - **sort** {Array | Object}, set to sort the documents coming back from the query. Array of indexes, [['a', 1]] etc.
- *  - **fields** {Object}, the fields to return in the query. Object of fields to include or exclude (not both), {'a':1}
- *  - **skip** {Number, default:0}, set to skip N documents ahead in your query (useful for pagination).
- *  - **hint** {Object}, tell the query to use specific indexes in the query. Object of indexes to use, {'_id':1}
- *  - **explain** {Boolean, default:false}, explain the query instead of returning the data.
- *  - **snapshot** {Boolean, default:false}, snapshot query.
- *  - **timeout** {Boolean, default:false}, specify if the cursor can timeout.
- *  - **tailable** {Boolean, default:false}, specify if the cursor is tailable.
- *  - **batchSize** {Number, default:0}, set the batchSize for the getMoreCommand when iterating over the query results.
- *  - **returnKey** {Boolean, default:false}, only return the index key.
- *  - **maxScan** {Number}, Limit the number of items to scan.
- *  - **min** {Number}, Set index bounds.
- *  - **max** {Number}, Set index bounds.
- *  - **showDiskLoc** {Boolean, default:false}, Show disk location of results.
- *  - **comment** {String}, You can put a $comment field on a query to make looking in the profiler logs simpler.
- *  - **raw** {Boolean, default:false}, Return all BSON documents as Raw Buffer documents.
- *  - **readPreference** {String}, the preferred read preference, require('mongodb').ReadPreference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *  - **partial** {Boolean, default:false}, specify if the cursor should return partial results when querying against a sharded system
- *
- * @param {Object|ObjectID} query query object to locate the object to modify
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the findOne method or null if an error occured.
- * @return {Cursor} returns a cursor to the query
- * @api public
- */
-Collection.prototype.findOne = function() { return query.findOne; }();
-
-/**
- * Creates an index on the collection.
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **unique** {Boolean, default:false}, creates an unique index.
- *  - **sparse** {Boolean, default:false}, creates a sparse index.
- *  - **background** {Boolean, default:false}, creates the index in the background, yielding whenever possible.
- *  - **dropDups** {Boolean, default:false}, a unique index cannot be created on a key that has pre-existing duplicate values. If you would like to create the index anyway, keeping the first document the database indexes and deleting all subsequent documents that have duplicate value
- *  - **min** {Number}, for geospatial indexes set the lower bound for the co-ordinates.
- *  - **max** {Number}, for geospatial indexes set the high bound for the co-ordinates.
- *  - **v** {Number}, specify the format version of the indexes.
- *  - **expireAfterSeconds** {Number}, allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher)
- *  - **name** {String}, override the autogenerated index name (useful if the resulting name is larger than 128 bytes)
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {Object} fieldOrSpec fieldOrSpec that defines the index.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the createIndex method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.createIndex = function() { return index.createIndex; }();
-
-/**
- * Ensures that an index exists, if it does not it creates it
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **unique** {Boolean, default:false}, creates an unique index.
- *  - **sparse** {Boolean, default:false}, creates a sparse index.
- *  - **background** {Boolean, default:false}, creates the index in the background, yielding whenever possible.
- *  - **dropDups** {Boolean, default:false}, a unique index cannot be created on a key that has pre-existing duplicate values. If you would like to create the index anyway, keeping the first document the database indexes and deleting all subsequent documents that have duplicate value
- *  - **min** {Number}, for geospatial indexes set the lower bound for the co-ordinates.
- *  - **max** {Number}, for geospatial indexes set the high bound for the co-ordinates.
- *  - **v** {Number}, specify the format version of the indexes.
- *  - **expireAfterSeconds** {Number}, allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher)
- *  - **name** {String}, override the autogenerated index name (useful if the resulting name is larger than 128 bytes)
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {Object} fieldOrSpec fieldOrSpec that defines the index.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the ensureIndex method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.ensureIndex = function() { return index.ensureIndex; }();
-
-/**
- * Retrieves this collections index info.
- *
- * Options
- *  - **full** {Boolean, default:false}, returns the full raw index information.
- *
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the indexInformation method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.indexInformation = function() { return index.indexInformation; }();
-
-/**
- * Drops an index from this collection.
- *
- * @param {String} name
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the dropIndex method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.dropIndex = function dropIndex (name, callback) {
-  this.db.dropIndex(this.collectionName, name, callback);
-};
-
-/**
- * Drops all indexes from this collection.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the dropAllIndexes method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.dropAllIndexes = function() { return index.dropAllIndexes; }();
-
-/**
- * Drops all indexes from this collection.
- *
- * @deprecated
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the dropIndexes method or null if an error occured.
- * @return {null}
- * @api private
- */
-Collection.prototype.dropIndexes = function() { return Collection.prototype.dropAllIndexes; }();
-
-/**
- * Reindex all indexes on the collection
- * Warning: reIndex is a blocking operation (indexes are rebuilt in the foreground) and will be slow for large collections.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the reIndex method or null if an error occured.
- * @return {null}
- * @api public
-**/
-Collection.prototype.reIndex = function(callback) {
-  this.db.reIndex(this.collectionName, callback);
-}
-
-/**
- * Run Map Reduce across a collection. Be aware that the inline option for out will return an array of results not a collection.
- *
- * Options
- *  - **out** {Object}, sets the output target for the map reduce job. *{inline:1} | {replace:'collectionName'} | {merge:'collectionName'} | {reduce:'collectionName'}*
- *  - **query** {Object}, query filter object.
- *  - **sort** {Object}, sorts the input objects using this key. Useful for optimization, like sorting by the emit key for fewer reduces.
- *  - **limit** {Number}, number of objects to return from collection.
- *  - **keeptemp** {Boolean, default:false}, keep temporary data.
- *  - **finalize** {Function | String}, finalize function.
- *  - **scope** {Object}, can pass in variables that can be access from map/reduce/finalize.
- *  - **jsMode** {Boolean, default:false}, it is possible to make the execution stay in JS. Provided in MongoDB > 2.0.X.
- *  - **verbose** {Boolean, default:false}, provide statistics on job execution time.
- *  - **readPreference** {String, only for inline results}, the preferred read preference, require('mongodb').ReadPreference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *
- * @param {Function|String} map the mapping function.
- * @param {Function|String} reduce the reduce function.
- * @param {Objects} [options] options for the map reduce job.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the mapReduce method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.mapReduce = function() { return aggregation.mapReduce; }();
-
-/**
- * Run a group command across a collection
- *
- * Options
- *  - **readPreference** {String}, the preferred read preference, require('mongodb').ReadPreference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *
- * @param {Object|Array|Function|Code} keys an object, array or function expressing the keys to group by.
- * @param {Object} condition an optional condition that must be true for a row to be considered.
- * @param {Object} initial initial value of the aggregation counter object.
- * @param {Function|Code} reduce the reduce function aggregates (reduces) the objects iterated
- * @param {Function|Code} finalize an optional function to be run on each item in the result set just before the item is returned.
- * @param {Boolean} command specify if you wish to run using the internal group command or using eval, default is true.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the group method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.group = function() { return aggregation.group; }();
-
-/**
- * Returns the options of the collection.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the options method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.options = function() { return commands.options; }();
-
-/**
- * Returns if the collection is a capped collection
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the isCapped method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.isCapped = function() { return commands.isCapped; }();
-
-/**
- * Checks if one or more indexes exist on the collection
- *
- * @param {String|Array} indexNames check if one or more indexes exist on the collection.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the indexExists method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.indexExists = function() { return index.indexExists; }();
-
-/**
- * Execute the geoNear command to search for items in the collection
- *
- * Options
- *  - **num** {Number}, max number of results to return.
- *  - **maxDistance** {Number}, include results up to maxDistance from the point.
- *  - **distanceMultiplier** {Number}, include a value to multiply the distances with allowing for range conversions.
- *  - **query** {Object}, filter the results by a query.
- *  - **spherical** {Boolean, default:false}, perform query using a spherical model.
- *  - **uniqueDocs** {Boolean, default:false}, the closest location in a document to the center of the search region will always be returned MongoDB > 2.X.
- *  - **includeLocs** {Boolean, default:false}, include the location data fields in the top level of the results MongoDB > 2.X.
- *  - **readPreference** {String}, the preferred read preference, require('mongodb').ReadPreference ((ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *
- * @param {Number} x point to search on the x axis, ensure the indexes are ordered in the same order.
- * @param {Number} y point to search on the y axis, ensure the indexes are ordered in the same order.
- * @param {Objects} [options] options for the map reduce job.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the geoNear method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.geoNear = function() { return geo.geoNear; }();
-
-/**
- * Execute a geo search using a geo haystack index on a collection.
- *
- * Options
- *  - **maxDistance** {Number}, include results up to maxDistance from the point.
- *  - **search** {Object}, filter the results by a query.
- *  - **limit** {Number}, max number of results to return.
- *  - **readPreference** {String}, the preferred read preference, require('mongodb').ReadPreference ((ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *
- * @param {Number} x point to search on the x axis, ensure the indexes are ordered in the same order.
- * @param {Number} y point to search on the y axis, ensure the indexes are ordered in the same order.
- * @param {Objects} [options] options for the map reduce job.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the geoHaystackSearch method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.geoHaystackSearch = function() { return geo.geoHaystackSearch; }();
-
-/**
- * Retrieve all the indexes on the collection.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the indexes method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.indexes = function indexes(callback) {
-  this.db.indexInformation(this.collectionName, {full:true}, callback);
-}
-
-/**
- * Execute an aggregation framework pipeline against the collection, needs MongoDB >= 2.2
- *
- * Options
- *  - **readPreference** {String}, the preferred read preference, require('mongodb').ReadPreference ((ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *
- * @param {Array} array containing all the aggregation framework commands for the execution.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the aggregate method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.aggregate = function() { return aggregation.aggregate; }();
-
-/**
- * Get all the collection statistics.
- *
- * Options
- *  - **scale** {Number}, divide the returned sizes by scale value.
- *  - **readPreference** {String}, the preferred read preference, require('mongodb').ReadPreference ((ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *
- * @param {Objects} [options] options for the stats command.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the stats method or null if an error occured.
- * @return {null}
- * @api public
- */
-Collection.prototype.stats = function() { return commands.stats; }();
-
-/**
- * @ignore
- */
-Object.defineProperty(Collection.prototype, "hint", {
-    enumerable: true
-  , get: function () {
-      return this.internalHint;
-    }
-  , set: function (v) {
-      this.internalHint = shared.normalizeHintField(v);
-    }
-});
-
-/**
- * Expose.
- */
-exports.Collection = Collection;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/collection/aggregation.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/aggregation.js b/web/demos/package/node_modules/mongodb/lib/mongodb/collection/aggregation.js
deleted file mode 100644
index e78e964..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/aggregation.js
+++ /dev/null
@@ -1,320 +0,0 @@
-var shared = require('./shared')
-  , utils = require('../utils')
-  , AggregationCursor = require('../aggregation_cursor').AggregationCursor
-  , Code = require('bson').Code  
-  , DbCommand = require('../commands/db_command').DbCommand;
-
-/**
- * Functions that are passed as scope args must
- * be converted to Code instances.
- * @ignore
- */
-function processScope (scope) {
-  if (!utils.isObject(scope)) {
-    return scope;
-  }
-
-  var keys = Object.keys(scope);
-  var i = keys.length;
-  var key;
-
-  while (i--) {
-    key = keys[i];
-    if ('function' == typeof scope[key]) {
-      scope[key] = new Code(String(scope[key]));
-    } else {
-      scope[key] = processScope(scope[key]);
-    }
-  }
-
-  return scope;
-}
-
-var pipe = function() {
-  return new AggregationCursor(this, this.serverCapabilities);
-}
-
-var mapReduce = function mapReduce (map, reduce, options, callback) {
-  if ('function' === typeof options) callback = options, options = {};
-  // Out must allways be defined (make sure we don't break weirdly on pre 1.8+ servers)
-  if(null == options.out) {
-    throw new Error("the out option parameter must be defined, see mongodb docs for possible values");
-  }
-
-  if ('function' === typeof map) {
-    map = map.toString();
-  }
-
-  if ('function' === typeof reduce) {
-    reduce = reduce.toString();
-  }
-
-  if ('function' === typeof options.finalize) {
-    options.finalize = options.finalize.toString();
-  }
-
-  var mapCommandHash = {
-      mapreduce: this.collectionName
-    , map: map
-    , reduce: reduce
-  };
-
-  // Add any other options passed in
-  for (var name in options) {
-    if ('scope' == name) {
-      mapCommandHash[name] = processScope(options[name]);
-    } else {
-      mapCommandHash[name] = options[name];
-    }
-  }
-
-  // Set read preference if we set one
-  var readPreference = shared._getReadConcern(this, options);
-
-  // If we have a read preference and inline is not set as output fail hard
-  if((readPreference != false && readPreference != 'primary') 
-    && options['out'] && (options['out'].inline != 1 && options['out'] != 'inline')) {
-      readPreference = 'primary';    
-  }
-
-  // self
-  var self = this;
-  var cmd = DbCommand.createDbCommand(this.db, mapCommandHash);
-
-  this.db._executeQueryCommand(cmd, {read:readPreference}, function (err, result) {
-    if(err) return callback(err);
-    if(!result || !result.documents || result.documents.length == 0)
-      return callback(Error("command failed to return results"), null)
-
-    // Check if we have an error
-    if(1 != result.documents[0].ok || result.documents[0].err || result.documents[0].errmsg) {
-      return callback(utils.toError(result.documents[0]));
-    }
-
-    // Create statistics value
-    var stats = {};
-    if(result.documents[0].timeMillis) stats['processtime'] = result.documents[0].timeMillis;
-    if(result.documents[0].counts) stats['counts'] = result.documents[0].counts;
-    if(result.documents[0].timing) stats['timing'] = result.documents[0].timing;
-
-    // invoked with inline?
-    if(result.documents[0].results) {
-      // If we wish for no verbosity
-      if(options['verbose'] == null || !options['verbose']) {
-        return callback(null, result.documents[0].results);
-      }
-      return callback(null, result.documents[0].results, stats);
-    }
-
-    // The returned collection
-    var collection = null;
-
-    // If we have an object it's a different db
-    if(result.documents[0].result != null && typeof result.documents[0].result == 'object') {
-      var doc = result.documents[0].result;
-      collection = self.db.db(doc.db).collection(doc.collection);
-    } else {
-      // Create a collection object that wraps the result collection
-      collection = self.db.collection(result.documents[0].result)
-    }
-
-    // If we wish for no verbosity
-    if(options['verbose'] == null || !options['verbose']) {
-      return callback(err, collection);
-    }
-
-    // Return stats as third set of values
-    callback(err, collection, stats);
-  });
-};
-
-/**
- * Group function helper
- * @ignore
- */
-var groupFunction = function () {
-  var c = db[ns].find(condition);
-  var map = new Map();
-  var reduce_function = reduce;
-
-  while (c.hasNext()) {
-    var obj = c.next();
-    var key = {};
-
-    for (var i = 0, len = keys.length; i < len; ++i) {
-      var k = keys[i];
-      key[k] = obj[k];
-    }
-
-    var aggObj = map.get(key);
-
-    if (aggObj == null) {
-      var newObj = Object.extend({}, key);
-      aggObj = Object.extend(newObj, initial);
-      map.put(key, aggObj);
-    }
-
-    reduce_function(obj, aggObj);
-  }
-
-  return { "result": map.values() };
-}.toString();
-
-var group = function group(keys, condition, initial, reduce, finalize, command, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 3);
-  callback = args.pop();
-  // Fetch all commands
-  reduce = args.length ? args.shift() : null;
-  finalize = args.length ? args.shift() : null;
-  command = args.length ? args.shift() : null;
-  options = args.length ? args.shift() || {} : {};
-
-  // Make sure we are backward compatible
-  if(!(typeof finalize == 'function')) {
-    command = finalize;
-    finalize = null;
-  }
-
-  if (!Array.isArray(keys) && keys instanceof Object && typeof(keys) !== 'function' && !(keys instanceof Code)) {
-    keys = Object.keys(keys);
-  }
-
-  if(typeof reduce === 'function') {
-    reduce = reduce.toString();
-  }
-
-  if(typeof finalize === 'function') {
-    finalize = finalize.toString();
-  }
-
-  // Set up the command as default
-  command = command == null ? true : command;
-
-  // Execute using the command
-  if(command) {
-    var reduceFunction = reduce instanceof Code
-        ? reduce
-        : new Code(reduce);
-
-    var selector = {
-      group: {
-          'ns': this.collectionName
-        , '$reduce': reduceFunction
-        , 'cond': condition
-        , 'initial': initial
-        , 'out': "inline"
-      }
-    };
-
-    // if finalize is defined
-    if(finalize != null) selector.group['finalize'] = finalize;
-    // Set up group selector
-    if ('function' === typeof keys || keys instanceof Code) {
-      selector.group.$keyf = keys instanceof Code
-        ? keys
-        : new Code(keys);
-    } else {
-      var hash = {};
-      keys.forEach(function (key) {
-        hash[key] = 1;
-      });
-      selector.group.key = hash;
-    }
-
-    var cmd = DbCommand.createDbSlaveOkCommand(this.db, selector);
-    // Set read preference if we set one
-    var readPreference = shared._getReadConcern(this, options);
-    // Execute the command
-    this.db._executeQueryCommand(cmd
-      , {read:readPreference}
-      , utils.handleSingleCommandResultReturn(null, null, function(err, result) {
-        if(err) return callback(err, null);
-        callback(null, result.retval);
-      }));
-  } else {
-    // Create execution scope
-    var scope = reduce != null && reduce instanceof Code
-      ? reduce.scope
-      : {};
-
-    scope.ns = this.collectionName;
-    scope.keys = keys;
-    scope.condition = condition;
-    scope.initial = initial;
-
-    // Pass in the function text to execute within mongodb.
-    var groupfn = groupFunction.replace(/ reduce;/, reduce.toString() + ';');
-
-    this.db.eval(new Code(groupfn, scope), function (err, results) {
-      if (err) return callback(err, null);
-      callback(null, results.result || results);
-    });
-  }
-};
-
-var aggregate = function(pipeline, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  var self = this;
-
-  // If we have any of the supported options in the options object
-  var opts = args[args.length - 1];
-  options = opts.readPreference 
-    || opts.explain 
-    || opts.cursor 
-    || opts.out
-    || opts.allowDiskUsage ? args.pop() : {}
-  // If the callback is the option (as for cursor override it)
-  if(typeof callback == 'object' && callback != null) options = callback;
-
-  // Convert operations to an array
-  if(!Array.isArray(args[0])) {
-    pipeline = [];
-    // Push all the operations to the pipeline
-    for(var i = 0; i < args.length; i++) pipeline.push(args[i]);
-  }
-
-  // Is the user requesting a cursor
-  if(options.cursor != null && options.out == null) {
-    // Set the aggregation cursor options
-    var agg_cursor_options = options.cursor;
-    agg_cursor_options.pipe = pipeline;
-    agg_cursor_options.allowDiskUsage = options.allowDiskUsage == null ? false : options.allowDiskUsage;
-    // Return the aggregation cursor
-    return new AggregationCursor(this, this.serverCapabilities, agg_cursor_options);
-  }
-
-  // If out was specified
-  if(typeof options.out == 'string') {
-    pipeline.push({$out: options.out});
-  }
-
-  // Build the command
-  var command = { aggregate : this.collectionName, pipeline : pipeline};
-  // If we have allowDiskUsage defined
-  if(options.allowDiskUsage) command.allowDiskUsage = options.allowDiskUsage;
-
-  // Ensure we have the right read preference inheritance
-  options.readPreference = shared._getReadConcern(this, options);
-  // If explain has been specified add it
-  if(options.explain) command.explain = options.explain;
-  // Execute the command
-  this.db.command(command, options, function(err, result) {
-    if(err) {
-      callback(err);
-    } else if(result['err'] || result['errmsg']) {
-      callback(utils.toError(result));
-    } else if(typeof result == 'object' && result['serverPipeline']) {
-      callback(null, result['serverPipeline']);
-    } else if(typeof result == 'object' && result['stages']) {
-      callback(null, result['stages']);
-    } else {
-      callback(null, result.result);
-    }
-  });
-}
-
-exports.mapReduce = mapReduce;
-exports.group = group;
-exports.aggregate = aggregate;
-exports.pipe = pipe;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/collection/commands.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/commands.js b/web/demos/package/node_modules/mongodb/lib/mongodb/collection/commands.js
deleted file mode 100644
index 046f009..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/commands.js
+++ /dev/null
@@ -1,136 +0,0 @@
-var shared = require('./shared')
-  , utils = require('../utils')
-  , DbCommand = require('../commands/db_command').DbCommand;
-
-var stats = function stats(options, callback) {
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  // Fetch all commands
-  options = args.length ? args.shift() || {} : {};
-
-  // Build command object
-  var commandObject = {
-    collStats:this.collectionName,
-  }
-
-  // Check if we have the scale value
-  if(options['scale'] != null) commandObject['scale'] = options['scale'];
-
-  // Ensure we have the right read preference inheritance
-  options.readPreference = shared._getReadConcern(this, options);
-
-  // Execute the command
-  this.db.command(commandObject, options, callback);
-}
-
-var count = function count(query, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  query = args.length ? args.shift() || {} : {};
-  options = args.length ? args.shift() || {} : {};
-  var skip = options.skip;
-  var limit = options.limit;
-  var maxTimeMS = options.maxTimeMS;
-
-  // Final query
-  var commandObject = {
-      'count': this.collectionName
-    , 'query': query
-    , 'fields': null
-  };
-
-  // Add limit and skip if defined
-  if(typeof skip == 'number') commandObject.skip = skip;
-  if(typeof limit == 'number') commandObject.limit = limit;
-  if(typeof maxTimeMS == 'number') commandObject['$maxTimeMS'] = maxTimeMS;
-
-  // Set read preference if we set one
-  var readPreference = shared._getReadConcern(this, options);
-  // Execute the command
-  this.db._executeQueryCommand(DbCommand.createDbSlaveOkCommand(this.db, commandObject)
-    , {read: readPreference}
-    , utils.handleSingleCommandResultReturn(null, null, function(err, result) {
-      if(err) return callback(err, null);
-      if(result == null) return callback(new Error("no result returned for count"), null);
-      callback(null, result.n);
-    }));
-};
-
-var distinct = function distinct(key, query, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = args.pop();
-  query = args.length ? args.shift() || {} : {};
-  options = args.length ? args.shift() || {} : {};
-
-  var mapCommandHash = {
-      'distinct': this.collectionName
-    , 'query': query
-    , 'key': key
-  };
-
-  // Set read preference if we set one
-  var readPreference = options['readPreference'] ? options['readPreference'] : false;
-  // Create the command
-  var cmd = DbCommand.createDbSlaveOkCommand(this.db, mapCommandHash);
-
-  this.db._executeQueryCommand(cmd, {read:readPreference}, function (err, result) {
-    if(err)
-      return callback(err);
-    if(result.documents[0].ok != 1)
-      return callback(new Error(result.documents[0].errmsg));
-    callback(null, result.documents[0].values);
-  });
-};
-
-var rename = function rename (newName, options, callback) {
-  var self = this;
-  if(typeof options == 'function') {
-    callback = options;
-    options = {}
-  }
-
-  // Get collection class
-  var Collection = require('../collection').Collection;
-  // Ensure the new name is valid
-  shared.checkCollectionName(newName);
-  
-  // Execute the command, return the new renamed collection if successful
-  self.db._executeQueryCommand(DbCommand.createRenameCollectionCommand(self.db, self.collectionName, newName, options)
-    , utils.handleSingleCommandResultReturn(true, false, function(err, result) {
-      if(err) return callback(err, null)
-      try {
-        if(options.new_collection)
-          return callback(null, new Collection(self.db, newName, self.db.pkFactory));
-        self.collectionName = newName;
-        callback(null, self);
-      } catch(err) {
-        callback(err, null);
-      }
-    }));
-};
-
-var options = function options(callback) {
-  this.db.collectionsInfo(this.collectionName, function (err, cursor) {
-    if (err) return callback(err);
-    cursor.nextObject(function (err, document) {
-      callback(err, document && document.options || null);
-    });
-  });
-};
-
-var isCapped = function isCapped(callback) {
-  this.options(function(err, document) {
-    if(err != null) {
-      callback(err);
-    } else {
-      callback(null, document && document.capped);
-    }
-  });
-};
-
-exports.stats = stats;
-exports.count = count;
-exports.distinct = distinct;
-exports.rename = rename;
-exports.options = options;
-exports.isCapped = isCapped;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/collection/core.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/core.js b/web/demos/package/node_modules/mongodb/lib/mongodb/collection/core.js
deleted file mode 100644
index 208506e..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/core.js
+++ /dev/null
@@ -1,727 +0,0 @@
-var InsertCommand = require('../commands/insert_command').InsertCommand
-  , DeleteCommand = require('../commands/delete_command').DeleteCommand
-  , UpdateCommand = require('../commands/update_command').UpdateCommand
-  , DbCommand = require('../commands/db_command').DbCommand
-  , utils = require('../utils')
-  , hasWriteCommands = require('../utils').hasWriteCommands
-  , shared = require('./shared');
-
-/**
- * Precompiled regexes
- * @ignore
- **/
-var eErrorMessages = /No matching object found/;
-
-// ***************************************************
-// Insert function
-// ***************************************************
-var insert = function insert (docs, options, callback) {
-  if ('function' === typeof options) callback = options, options = {};
-  if(options == null) options = {};
-  if(!('function' === typeof callback)) callback = null;
-
-  // Get a connection
-  var connection = this.db.serverConfig.checkoutWriter();
-  var useLegacyOps = options.useLegacyOps == null || options.useLegacyOps == false ? false : true;
-  // If we support write commands let's perform the insert using it  
-  if(!useLegacyOps && hasWriteCommands(connection) 
-    && !Buffer.isBuffer(docs) 
-    && (!Array.isArray(docs) && docs.length > 0 && !Buffer.isBuffer(docs[0]))) {
-      insertWithWriteCommands(this, Array.isArray(docs) ? docs : [docs], options, callback);
-      return this
-  } 
-
-  // Backwards compatibility
-  insertAll(this, Array.isArray(docs) ? docs : [docs], options, callback);
-  return this;
-};
-
-//
-// Uses the new write commands available from 2.6 >
-//
-var insertWithWriteCommands = function(self, docs, options, callback) {
-  // Get the intended namespace for the operation
-  var namespace = self.collectionName;
-
-  // Ensure we have no \x00 bytes in the name causing wrong parsing
-  if(!!~namespace.indexOf("\x00")) {
-    return callback(new Error("namespace cannot contain a null character"), null);
-  }
-
-  // Check if we have passed in continue on error
-  var continueOnError = typeof options['keepGoing'] == 'boolean' 
-    ? options['keepGoing'] : false;
-  continueOnError = typeof options['continueOnError'] == 'boolean' 
-    ? options['continueOnError'] : continueOnError;
-
-  // Do we serialzie functions
-  var serializeFunctions = typeof options.serializeFunctions != 'boolean' 
-    ? self.serializeFunctions : options.serializeFunctions;
-
-  // Checkout a write connection
-  var connection = self.db.serverConfig.checkoutWriter();  
-
-  // Collect errorOptions
-  var errorOptions = shared._getWriteConcern(self, options);
-
-  // If we have a write command with no callback and w:0 fail
-  if(errorOptions.w && errorOptions.w != 0 && callback == null) {
-    throw new Error("writeConcern requires callback")
-  }
-
-  // Add the documents and decorate them with id's if they have none
-  for(var index = 0, len = docs.length; index < len; ++index) {
-    var doc = docs[index];
-
-    // Add id to each document if it's not already defined
-    if (!(Buffer.isBuffer(doc))
-      && doc['_id'] == null
-      && self.db.forceServerObjectId != true
-      && options.forceServerObjectId != true) {
-        doc['_id'] = self.pkFactory.createPk();
-    }
-  }
-
-  // Create the write command
-  var write_command = {
-      insert: namespace
-    , writeConcern: errorOptions
-    , ordered: !continueOnError
-    , documents: docs
-  }
-
-  // Execute the write command
-  self.db.command(write_command
-    , { connection:connection
-      , checkKeys: true
-      , serializeFunctions: serializeFunctions
-      , writeCommand: true }
-    , function(err, result) {  
-      if(errorOptions.w == 0 && typeof callback == 'function') return callback(null, null);
-      if(errorOptions.w == 0) return;
-      if(callback == null) return;
-      if(err != null) {
-        // Rewrite for backward compatibility
-        if(Array.isArray(err.errDetails)) err.code = err.errDetails[0].errCode;
-        // Return the error
-        return callback(err, null);
-      }
-
-      // Result has an error
-      if(!result.ok && (result.err != null || result.errmsg != null)) {
-        // Map the error
-        var error = utils.toError(result);        
-        // Backwards compatibility mapping
-        if(Array.isArray(error.errDetails)) error.code = error.errDetails[0].errCode;
-        // Return the error
-        return callback(error, null);
-      }
-
-      // Return the results for a whole batch
-      callback(null, docs)
-  });
-}
-
-//
-// Uses pre 2.6 OP_INSERT wire protocol
-//
-var insertAll = function insertAll (self, docs, options, callback) {
-  if('function' === typeof options) callback = options, options = {};
-  if(options == null) options = {};
-  if(!('function' === typeof callback)) callback = null;
-
-  // Insert options (flags for insert)
-  var insertFlags = {};
-  // If we have a mongodb version >= 1.9.1 support keepGoing attribute
-  if(options['keepGoing'] != null) {
-    insertFlags['keepGoing'] = options['keepGoing'];
-  }
-
-  // If we have a mongodb version >= 1.9.1 support keepGoing attribute
-  if(options['continueOnError'] != null) {
-    insertFlags['continueOnError'] = options['continueOnError'];
-  }
-
-  // DbName
-  var dbName = options['dbName'];
-  // If no dbname defined use the db one
-  if(dbName == null) {
-    dbName = self.db.databaseName;
-  }
-
-  // Either use override on the function, or go back to default on either the collection
-  // level or db
-  if(options['serializeFunctions'] != null) {
-    insertFlags['serializeFunctions'] = options['serializeFunctions'];
-  } else {
-    insertFlags['serializeFunctions'] = self.serializeFunctions;
-  }
-
-  // Get checkKeys value
-  var checkKeys = typeof options.checkKeys != 'boolean' ? true : options.checkKeys;
-
-  // Pass in options
-  var insertCommand = new InsertCommand(
-      self.db
-    , dbName + "." + self.collectionName, checkKeys, insertFlags);
-
-  // Add the documents and decorate them with id's if they have none
-  for(var index = 0, len = docs.length; index < len; ++index) {
-    var doc = docs[index];
-
-    // Add id to each document if it's not already defined
-    if (!(Buffer.isBuffer(doc))
-      && doc['_id'] == null
-      && self.db.forceServerObjectId != true
-      && options.forceServerObjectId != true) {
-        doc['_id'] = self.pkFactory.createPk();
-    }
-
-    insertCommand.add(doc);
-  }
-
-  // Collect errorOptions
-  var errorOptions = shared._getWriteConcern(self, options);
-  // Default command options
-  var commandOptions = {};
-  // If safe is defined check for error message
-  if(shared._hasWriteConcern(errorOptions) && typeof callback == 'function') {
-    // Insert options
-    commandOptions['read'] = false;
-    // If we have safe set set async to false
-    if(errorOptions == null) commandOptions['async'] = true;
-
-    // Set safe option
-    commandOptions['safe'] = errorOptions;
-    // If we have an error option
-    if(typeof errorOptions == 'object') {
-      var keys = Object.keys(errorOptions);
-      for(var i = 0; i < keys.length; i++) {
-        commandOptions[keys[i]] = errorOptions[keys[i]];
-      }
-    }
-
-    // Execute command with safe options (rolls up both command and safe command into one and executes them on the same connection)
-    self.db._executeInsertCommand(insertCommand, commandOptions, function (err, error) {
-      error = error && error.documents;
-      if(!callback) return;
-
-      if (err) {
-        callback(err);
-      } else if(error[0].err || error[0].errmsg) {
-        callback(utils.toError(error[0]));
-      } else if(error[0].jnote || error[0].wnote || error[0].wtimeout) {
-        callback(utils.toError(error[0]));
-      } else {
-        callback(null, docs);
-      }
-    });
-  } else if(shared._hasWriteConcern(errorOptions) && callback == null) {
-    throw new Error("Cannot use a writeConcern without a provided callback");
-  } else {
-    // Execute the call without a write concern
-    var result = self.db._executeInsertCommand(insertCommand, commandOptions);
-    // If no callback just return
-    if(!callback) return;
-    // If error return error
-    if(result instanceof Error) {
-      return callback(result);
-    }
-
-    // Otherwise just return
-    return callback(null, docs);
-  }
-};
-
-// ***************************************************
-// Remove function
-// ***************************************************
-var removeWithWriteCommands = function(self, selector, options, callback) {
-  if ('function' === typeof selector) {
-    callback = selector;
-    selector = options = {};
-  } else if ('function' === typeof options) {
-    callback = options;
-    options = {};
-  }
-
-  // Get the intended namespace for the operation
-  var namespace = self.collectionName;
-
-  // Ensure we have no \x00 bytes in the name causing wrong parsing
-  if(!!~namespace.indexOf("\x00")) {
-    return callback(new Error("namespace cannot contain a null character"), null);
-  }
-
-  // Set default empty selector if none
-  selector = selector == null ? {} : selector;
-
-  // Check if we have passed in continue on error
-  var continueOnError = typeof options['keepGoing'] == 'boolean' 
-    ? options['keepGoing'] : false;
-  continueOnError = typeof options['continueOnError'] == 'boolean' 
-    ? options['continueOnError'] : continueOnError;
-
-  // Do we serialzie functions
-  var serializeFunctions = typeof options.serializeFunctions != 'boolean' 
-    ? self.serializeFunctions : options.serializeFunctions;
-
-  // Checkout a write connection
-  var connection = self.db.serverConfig.checkoutWriter();  
-
-  // Figure out the value of top
-  var limit = options.single == true ? 1 : 0;
-  var upsert = typeof options.upsert == 'boolean' ? options.upsert : false;
-
-  // Collect errorOptions
-  var errorOptions = shared._getWriteConcern(self, options);
-
-  // If we have a write command with no callback and w:0 fail
-  if(errorOptions.w && errorOptions.w != 0 && callback == null) {
-    throw new Error("writeConcern requires callback")
-  }
-
-  // Create the write command
-  var write_command = {
-    delete: namespace,
-    writeConcern: errorOptions,
-    ordered: !continueOnError,
-    deletes: [{
-      q : selector,
-      limit: limit
-    }]
-  }
-
-  // Execute the write command
-  self.db.command(write_command
-    , { connection:connection
-      , checkKeys: true
-      , serializeFunctions: serializeFunctions
-      , writeCommand: true }
-    , function(err, result) {  
-      if(errorOptions.w == 0 && typeof callback == 'function') return callback(null, null);
-      if(errorOptions.w == 0) return;
-      if(callback == null) return;
-      if(err != null) {
-        if(Array.isArray(err.errDetails)) err.code = err.errDetails[0].errCode;
-        // Return the error
-        return callback(err, null);
-      }
-
-      // Result has an error
-      if(!result.ok  && (result.err != null || result.errmsg != null)) {
-        // Map the error
-        var error = utils.toError(result);        
-        // Backwards compatibility mapping
-        if(Array.isArray(error.errDetails)) error.code = error.errDetails[0].errCode;        
-        // Return the error
-        return callback(error, null);
-      }
-      
-      // Backward compatibility format
-      var r = backWardsCompatibiltyResults(result, 'remove');      
-      // Return the results for a whole batch
-      callback(null, r.n, r)
-  });
-}
-
-var remove = function remove(selector, options, callback) {
-  if('function' === typeof options) callback = options, options = null;
-  if(options == null) options = {};
-  if(!('function' === typeof callback)) callback = null;
-  // Get a connection
-  var connection = this.db.serverConfig.checkoutWriter();
-  var useLegacyOps = options.useLegacyOps == null || options.useLegacyOps == false ? false : true;
-  // If we support write commands let's perform the insert using it  
-  if(!useLegacyOps && hasWriteCommands(connection) && !Buffer.isBuffer(selector)) {
-    return removeWithWriteCommands(this, selector, options, callback);
-  }
-
-  if ('function' === typeof selector) {
-    callback = selector;
-    selector = options = {};
-  } else if ('function' === typeof options) {
-    callback = options;
-    options = {};
-  }
-
-  // Ensure options
-  if(options == null) options = {};
-  if(!('function' === typeof callback)) callback = null;
-  // Ensure we have at least an empty selector
-  selector = selector == null ? {} : selector;
-  // Set up flags for the command, if we have a single document remove
-  var flags = 0 | (options.single ? 1 : 0);
-
-  // DbName
-  var dbName = options['dbName'];
-  // If no dbname defined use the db one
-  if(dbName == null) {
-    dbName = this.db.databaseName;
-  }
-
-  // Create a delete command
-  var deleteCommand = new DeleteCommand(
-      this.db
-    , dbName + "." + this.collectionName
-    , selector
-    , flags);
-
-  var self = this;
-  var errorOptions = shared._getWriteConcern(self, options);
-  // Execute the command, do not add a callback as it's async
-  if(shared._hasWriteConcern(errorOptions) && typeof callback == 'function') {
-    // Insert options
-    var commandOptions = {read:false};
-    // If we have safe set set async to false
-    if(errorOptions == null) commandOptions['async'] = true;
-    // Set safe option
-    commandOptions['safe'] = true;
-    // If we have an error option
-    if(typeof errorOptions == 'object') {
-      var keys = Object.keys(errorOptions);
-      for(var i = 0; i < keys.length; i++) {
-        commandOptions[keys[i]] = errorOptions[keys[i]];
-      }
-    }
-
-    // Execute command with safe options (rolls up both command and safe command into one and executes them on the same connection)
-    this.db._executeRemoveCommand(deleteCommand, commandOptions, function (err, error) {
-      error = error && error.documents;
-      if(!callback) return;
-
-      if(err) {
-        callback(err);
-      } else if(error[0].err || error[0].errmsg) {
-        callback(utils.toError(error[0]));
-      } else if(error[0].jnote || error[0].wnote || error[0].wtimeout) {
-        callback(utils.toError(error[0]));
-      } else {
-        callback(null, error[0].n);
-      }
-    });
-  } else if(shared._hasWriteConcern(errorOptions) && callback == null) {
-    throw new Error("Cannot use a writeConcern without a provided callback");
-  } else {
-    var result = this.db._executeRemoveCommand(deleteCommand);
-    // If no callback just return
-    if (!callback) return;
-    // If error return error
-    if (result instanceof Error) {
-      return callback(result);
-    }
-    // Otherwise just return
-    return callback();
-  }
-};
-
-// ***************************************************
-// Save function
-// ***************************************************
-var save = function save(doc, options, callback) {
-  if('function' === typeof options) callback = options, options = null;
-  if(options == null) options = {};
-  if(!('function' === typeof callback)) callback = null;
-  // Throw an error if attempting to perform a bulk operation
-  if(Array.isArray(doc)) throw new Error("doc parameter must be a single document");
-  // Extract the id, if we have one we need to do a update command
-  var id = doc['_id'];
-  var commandOptions = shared._getWriteConcern(this, options);
-
-  if(id != null) {
-    commandOptions.upsert = true;
-    this.update({ _id: id }, doc, commandOptions, callback);
-  } else {
-    this.insert(doc, commandOptions, callback && function (err, docs) {
-      if(err) return callback(err, null);
-
-      if(Array.isArray(docs)) {
-        callback(err, docs[0]);
-      } else {
-        callback(err, docs);
-      }
-    });
-  }
-};
-
-// ***************************************************
-// Update document function
-// ***************************************************
-var updateWithWriteCommands = function(self, selector, document, options, callback) {
-  if('function' === typeof options) callback = options, options = null;
-  if(options == null) options = {};
-  if(!('function' === typeof callback)) callback = null;
-
-  // Get the intended namespace for the operation
-  var namespace = self.collectionName;
-
-  // Ensure we have no \x00 bytes in the name causing wrong parsing
-  if(!!~namespace.indexOf("\x00")) {
-    return callback(new Error("namespace cannot contain a null character"), null);
-  }
-
-  // If we are not providing a selector or document throw
-  if(selector == null || typeof selector != 'object') 
-    return callback(new Error("selector must be a valid JavaScript object"));
-  if(document == null || typeof document != 'object') 
-    return callback(new Error("document must be a valid JavaScript object"));    
-
-  // Check if we have passed in continue on error
-  var continueOnError = typeof options['keepGoing'] == 'boolean' 
-    ? options['keepGoing'] : false;
-  continueOnError = typeof options['continueOnError'] == 'boolean' 
-    ? options['continueOnError'] : continueOnError;
-
-  // Do we serialzie functions
-  var serializeFunctions = typeof options.serializeFunctions != 'boolean' 
-    ? self.serializeFunctions : options.serializeFunctions;
-
-  // Checkout a write connection
-  var connection = self.db.serverConfig.checkoutWriter();  
-
-  // Figure out the value of top
-  var multi = typeof options.multi == 'boolean' ? options.multi : false;
-  var upsert = typeof options.upsert == 'boolean' ? options.upsert : false;
-
-  // Collect errorOptions
-  var errorOptions = shared._getWriteConcern(self, options);
-
-  // If we have a write command with no callback and w:0 fail
-  if(errorOptions.w && errorOptions.w != 0 && callback == null) {
-    throw new Error("writeConcern requires callback")
-  }
-
-  // Create the write command
-  var write_command = {
-    update: namespace,
-    writeConcern: errorOptions,
-    ordered: !continueOnError,
-    updates: [{
-      q : selector,
-      u: document,
-      multi: multi,
-      upsert: upsert
-    }]
-  }
-
-  // Check if we have a checkKeys override
-  var checkKeys = typeof options.checkKeys == 'boolean' ? options.checkKeys : false;
-
-  // Execute the write command
-  self.db.command(write_command
-    , { connection:connection
-      , checkKeys: checkKeys
-      , serializeFunctions: serializeFunctions
-      , writeCommand: true }
-    , function(err, result) { 
-      if(errorOptions.w == 0 && typeof callback == 'function') return callback(null, null);
-      if(errorOptions.w == 0) return;
-      if(callback == null) return;
-      if(err != null) {
-        if(Array.isArray(err.errDetails)) err.code = err.errDetails[0].errCode;
-        // Return the error
-        return callback(err, null);
-      }
-
-      // Result has an error
-      if(!result.ok  && (result.err != null || result.errmsg != null)) {
-        // Map the error
-        var error = utils.toError(result);        
-        // Backwards compatibility mapping
-        if(Array.isArray(error.errDetails)) error.code = error.errDetails[0].errCode;        
-        // Return the error
-        return callback(error, null);
-      }
-      
-      // Backward compatibility format
-      var r = backWardsCompatibiltyResults(result, 'update');
-      // Return the results for a whole batch
-      callback(null, r.n, r)
-  });
-}
-
-var backWardsCompatibiltyResults = function(result, op) {
-  // Upserted
-  var upsertedValue = null;
-  var finalResult = null;
-  var updatedExisting = true;
-
-  // We have a single document upserted result
-  if(Array.isArray(result.upserted) || result.upserted != null) {
-    updatedExisting = false;
-    upsertedValue = result.upserted;
-  }
-
-  // Final result
-  if(op == 'remove' || op == 'insert') {
-    finalResult = {ok: true, n: result.n}
-  } else {
-    finalResult = {ok: true, n: result.n, updatedExisting: updatedExisting}    
-  }
-
-  if(upsertedValue != null) finalResult.upserted = upsertedValue;
-  return finalResult;
-}
-
-var update = function update(selector, document, options, callback) {
-  if('function' === typeof options) callback = options, options = null;
-  if(options == null) options = {};
-  if(!('function' === typeof callback)) callback = null;
-
-  // Get a connection
-  var connection = this.db.serverConfig.checkoutWriter();
-  var useLegacyOps = options.useLegacyOps == null || options.useLegacyOps == false ? false : true;
-  // If we support write commands let's perform the insert using it  
-  if(!useLegacyOps && hasWriteCommands(connection) && !Buffer.isBuffer(selector) && !Buffer.isBuffer(document)) {
-    return updateWithWriteCommands(this, selector, document, options, callback);
-  }
-
-  // DbName
-  var dbName = options['dbName'];
-  // If no dbname defined use the db one
-  if(dbName == null) {
-    dbName = this.db.databaseName;
-  }
-
-  // If we are not providing a selector or document throw
-  if(selector == null || typeof selector != 'object') return callback(new Error("selector must be a valid JavaScript object"));
-  if(document == null || typeof document != 'object') return callback(new Error("document must be a valid JavaScript object"));
-
-  // Either use override on the function, or go back to default on either the collection
-  // level or db
-  if(options['serializeFunctions'] != null) {
-    options['serializeFunctions'] = options['serializeFunctions'];
-  } else {
-    options['serializeFunctions'] = this.serializeFunctions;
-  }
-
-  // Build the options command
-  var updateCommand = new UpdateCommand(
-      this.db
-    , dbName + "." + this.collectionName
-    , selector
-    , document
-    , options);
-
-  var self = this;
-  // Unpack the error options if any
-  var errorOptions = shared._getWriteConcern(this, options);
-  // If safe is defined check for error message
-  if(shared._hasWriteConcern(errorOptions) && typeof callback == 'function') {
-    // Insert options
-    var commandOptions = {read:false};
-    // If we have safe set set async to false
-    if(errorOptions == null) commandOptions['async'] = true;
-    // Set safe option
-    commandOptions['safe'] = errorOptions;
-    // If we have an error option
-    if(typeof errorOptions == 'object') {
-      var keys = Object.keys(errorOptions);
-      for(var i = 0; i < keys.length; i++) {
-        commandOptions[keys[i]] = errorOptions[keys[i]];
-      }
-    }
-
-    // Execute command with safe options (rolls up both command and safe command into one and executes them on the same connection)
-    this.db._executeUpdateCommand(updateCommand, commandOptions, function (err, error) {
-      error = error && error.documents;
-      if(!callback) return;
-
-      if(err) {
-        callback(err);
-      } else if(error[0].err || error[0].errmsg) {
-        callback(utils.toError(error[0]));
-      } else if(error[0].jnote || error[0].wnote || error[0].wtimeout) {
-        callback(utils.toError(error[0]));
-      } else {
-        callback(null, error[0].n, error[0]);
-      }
-    });
-  } else if(shared._hasWriteConcern(errorOptions) && callback == null) {
-    throw new Error("Cannot use a writeConcern without a provided callback");
-  } else {
-    // Execute update
-    var result = this.db._executeUpdateCommand(updateCommand);
-    // If no callback just return
-    if (!callback) return;
-    // If error return error
-    if (result instanceof Error) {
-      return callback(result);
-    }
-    // Otherwise just return
-    return callback();
-  }
-};
-
-// ***************************************************
-// findAndModify function
-// ***************************************************
-var findAndModify = function findAndModify (query, sort, doc, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = args.pop();
-  sort = args.length ? args.shift() || [] : [];
-  doc = args.length ? args.shift() : null;
-  options = args.length ? args.shift() || {} : {};
-  var self = this;
-
-  var queryObject = {
-      'findandmodify': this.collectionName
-    , 'query': query
-    , 'sort': utils.formattedOrderClause(sort)
-  };
-
-  queryObject.new = options.new ? 1 : 0;
-  queryObject.remove = options.remove ? 1 : 0;
-  queryObject.upsert = options.upsert ? 1 : 0;
-
-  if (options.fields) {
-    queryObject.fields = options.fields;
-  }
-
-  if (doc && !options.remove) {
-    queryObject.update = doc;
-  }
-
-  // Checkout a write connection
-  options.connection = self.db.serverConfig.checkoutWriter();  
-
-  // Either use override on the function, or go back to default on either the collection
-  // level or db
-  if(options['serializeFunctions'] != null) {
-    options['serializeFunctions'] = options['serializeFunctions'];
-  } else {
-    options['serializeFunctions'] = this.serializeFunctions;
-  }
-
-  // No check on the documents
-  options.checkKeys = false
-
-  // Execute the command
-  this.db.command(queryObject
-    , options, function(err, result) {
-      if(err) return callback(err, null);
-      return callback(null, result.value, result);
-  });
-}
-
-// ***************************************************
-// findAndRemove function
-// ***************************************************
-var findAndRemove = function(query, sort, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = args.pop();
-  sort = args.length ? args.shift() || [] : [];
-  options = args.length ? args.shift() || {} : {};
-  // Add the remove option
-  options['remove'] = true;
-  // Execute the callback
-  this.findAndModify(query, sort, null, options, callback);
-}
-
-// Map methods
-exports.insert = insert;
-exports.remove = remove;
-exports.save = save;
-exports.update = update;
-exports.findAndModify = findAndModify;
-exports.findAndRemove = findAndRemove;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/collection/geo.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/geo.js b/web/demos/package/node_modules/mongodb/lib/mongodb/collection/geo.js
deleted file mode 100644
index d2d3f9e..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/geo.js
+++ /dev/null
@@ -1,78 +0,0 @@
-var shared = require('./shared')
-  , utils = require('../utils');
-
-var geoNear = function geoNear(x, y, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 2);
-  callback = args.pop();
-  // Fetch all commands
-  options = args.length ? args.shift() || {} : {};
-
-  // Build command object
-  var commandObject = {
-    geoNear:this.collectionName,
-    near: [x, y]
-  }
-
-  // Decorate object if any with known properties
-  if(options['num'] != null) commandObject['num'] = options['num'];
-  if(options['maxDistance'] != null) commandObject['maxDistance'] = options['maxDistance'];
-  if(options['distanceMultiplier'] != null) commandObject['distanceMultiplier'] = options['distanceMultiplier'];
-  if(options['query'] != null) commandObject['query'] = options['query'];
-  if(options['spherical'] != null) commandObject['spherical'] = options['spherical'];
-  if(options['uniqueDocs'] != null) commandObject['uniqueDocs'] = options['uniqueDocs'];
-  if(options['includeLocs'] != null) commandObject['includeLocs'] = options['includeLocs'];
-
-  // Ensure we have the right read preference inheritance
-  options.readPreference = shared._getReadConcern(this, options);
-
-  // Execute the command
-  this.db.command(commandObject, options, function (err, res) {
-    if (err) {
-      callback(err);
-    } else if (res.err || res.errmsg) {
-      callback(utils.toError(res));
-    } else {
-      // should we only be returning res.results here? Not sure if the user
-      // should see the other return information
-      callback(null, res);
-    }
-  });
-}
-
-var geoHaystackSearch = function geoHaystackSearch(x, y, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 2);
-  callback = args.pop();
-  // Fetch all commands
-  options = args.length ? args.shift() || {} : {};
-
-  // Build command object
-  var commandObject = {
-    geoSearch:this.collectionName,
-    near: [x, y]
-  }
-
-  // Decorate object if any with known properties
-  if(options['maxDistance'] != null) commandObject['maxDistance'] = options['maxDistance'];
-  if(options['query'] != null) commandObject['search'] = options['query'];
-  if(options['search'] != null) commandObject['search'] = options['search'];
-  if(options['limit'] != null) commandObject['limit'] = options['limit'];
-
-  // Ensure we have the right read preference inheritance
-  options.readPreference = shared._getReadConcern(this, options);
-
-  // Execute the command
-  this.db.command(commandObject, options, function (err, res) {
-    if (err) {
-      callback(err);
-    } else if (res.err || res.errmsg) {
-      callback(utils.toError(res));
-    } else {
-      // should we only be returning res.results here? Not sure if the user
-      // should see the other return information
-      callback(null, res);
-    }
-  });
-}
-
-exports.geoNear = geoNear;
-exports.geoHaystackSearch = geoHaystackSearch;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/collection/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/index.js b/web/demos/package/node_modules/mongodb/lib/mongodb/collection/index.js
deleted file mode 100644
index dda9cc8..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/collection/index.js
+++ /dev/null
@@ -1,72 +0,0 @@
-var _getWriteConcern = require('./shared')._getWriteConcern;
-
-var createIndex = function createIndex (fieldOrSpec, options, callback) {
-  // Clean up call
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = args.pop();
-  options = args.length ? args.shift() || {} : {};
-  options = typeof callback === 'function' ? options : callback;
-  options = options == null ? {} : options;
-
-  // Collect errorOptions
-  var errorOptions = _getWriteConcern(this, options);
-  // Execute create index
-  this.db.createIndex(this.collectionName, fieldOrSpec, options, callback);
-};
-
-var indexExists = function indexExists(indexes, callback) {
- this.indexInformation(function(err, indexInformation) {
-   // If we have an error return
-   if(err != null) return callback(err, null);
-   // Let's check for the index names
-   if(Array.isArray(indexes)) {
-     for(var i = 0; i < indexes.length; i++) {
-       if(indexInformation[indexes[i]] == null) {
-         return callback(null, false);
-       }
-     }
-
-     // All keys found return true
-     return callback(null, true);
-   } else {
-     return callback(null, indexInformation[indexes] != null);
-   }
- });
-}
-
-var dropAllIndexes = function dropIndexes (callback) {
-  this.db.dropIndex(this.collectionName, '*', function (err, result) {
-    if(err) return callback(err, false);
-    callback(null, true);
-  });
-};
-
-var indexInformation = function indexInformation (options, callback) {
-  // Unpack calls
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  options = args.length ? args.shift() || {} : {};
-  // Call the index information
-  this.db.indexInformation(this.collectionName, options, callback);
-};
-
-var ensureIndex = function ensureIndex (fieldOrSpec, options, callback) {
-  // Clean up call
-  if (typeof callback === 'undefined' && typeof options === 'function') {
-    callback = options;
-    options = {};
-  }
-
-  if (options == null) {
-    options = {};
-  }
-
-  // Execute create index
-  this.db.ensureIndex(this.collectionName, fieldOrSpec, options, callback);
-};
-
-exports.createIndex = createIndex;
-exports.indexExists = indexExists;
-exports.dropAllIndexes = dropAllIndexes;
-exports.indexInformation = indexInformation;
-exports.ensureIndex = ensureIndex;


[21/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/chmod.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/chmod.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/chmod.js
deleted file mode 100644
index 520dcb8..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/chmod.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-var ps = [ '', 'tmp' ];
-
-for (var i = 0; i < 25; i++) {
-    var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    ps.push(dir);
-}
-
-var file = ps.join('/');
-
-test('chmod-pre', function (t) {
-    var mode = 0744
-    mkdirp(file, mode, function (er) {
-        t.ifError(er, 'should not error');
-        fs.stat(file, function (er, stat) {
-            t.ifError(er, 'should exist');
-            t.ok(stat && stat.isDirectory(), 'should be directory');
-            t.equal(stat && stat.mode & 0777, mode, 'should be 0744');
-            t.end();
-        });
-    });
-});
-
-test('chmod', function (t) {
-    var mode = 0755
-    mkdirp(file, mode, function (er) {
-        t.ifError(er, 'should not error');
-        fs.stat(file, function (er, stat) {
-            t.ifError(er, 'should exist');
-            t.ok(stat && stat.isDirectory(), 'should be directory');
-            t.end();
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/clobber.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/clobber.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/clobber.js
deleted file mode 100644
index 0eb7099..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/clobber.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-var ps = [ '', 'tmp' ];
-
-for (var i = 0; i < 25; i++) {
-    var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    ps.push(dir);
-}
-
-var file = ps.join('/');
-
-// a file in the way
-var itw = ps.slice(0, 3).join('/');
-
-
-test('clobber-pre', function (t) {
-    console.error("about to write to "+itw)
-    fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.');
-
-    fs.stat(itw, function (er, stat) {
-        t.ifError(er)
-        t.ok(stat && stat.isFile(), 'should be file')
-        t.end()
-    })
-})
-
-test('clobber', function (t) {
-    t.plan(2);
-    mkdirp(file, 0755, function (err) {
-        t.ok(err);
-        t.equal(err.code, 'ENOTDIR');
-        t.end();
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/mkdirp.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/mkdirp.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/mkdirp.js
deleted file mode 100644
index b07cd70..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/mkdirp.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('woo', function (t) {
-    t.plan(2);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    
-    var file = '/tmp/' + [x,y,z].join('/');
-    
-    mkdirp(file, 0755, function (err) {
-        if (err) t.fail(err);
-        else path.exists(file, function (ex) {
-            if (!ex) t.fail('file not created')
-            else fs.stat(file, function (err, stat) {
-                if (err) t.fail(err)
-                else {
-                    t.equal(stat.mode & 0777, 0755);
-                    t.ok(stat.isDirectory(), 'target not a directory');
-                    t.end();
-                }
-            })
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/perm.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/perm.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/perm.js
deleted file mode 100644
index 23a7abb..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/perm.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('async perm', function (t) {
-    t.plan(2);
-    var file = '/tmp/' + (Math.random() * (1<<30)).toString(16);
-    
-    mkdirp(file, 0755, function (err) {
-        if (err) t.fail(err);
-        else path.exists(file, function (ex) {
-            if (!ex) t.fail('file not created')
-            else fs.stat(file, function (err, stat) {
-                if (err) t.fail(err)
-                else {
-                    t.equal(stat.mode & 0777, 0755);
-                    t.ok(stat.isDirectory(), 'target not a directory');
-                    t.end();
-                }
-            })
-        })
-    });
-});
-
-test('async root perm', function (t) {
-    mkdirp('/tmp', 0755, function (err) {
-        if (err) t.fail(err);
-        t.end();
-    });
-    t.end();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/perm_sync.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/perm_sync.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/perm_sync.js
deleted file mode 100644
index f685f60..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/perm_sync.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('sync perm', function (t) {
-    t.plan(2);
-    var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json';
-    
-    mkdirp.sync(file, 0755);
-    path.exists(file, function (ex) {
-        if (!ex) t.fail('file not created')
-        else fs.stat(file, function (err, stat) {
-            if (err) t.fail(err)
-            else {
-                t.equal(stat.mode & 0777, 0755);
-                t.ok(stat.isDirectory(), 'target not a directory');
-                t.end();
-            }
-        })
-    });
-});
-
-test('sync root perm', function (t) {
-    t.plan(1);
-    
-    var file = '/tmp';
-    mkdirp.sync(file, 0755);
-    path.exists(file, function (ex) {
-        if (!ex) t.fail('file not created')
-        else fs.stat(file, function (err, stat) {
-            if (err) t.fail(err)
-            else {
-                t.ok(stat.isDirectory(), 'target not a directory');
-                t.end();
-            }
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/race.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/race.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/race.js
deleted file mode 100644
index 96a0447..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/race.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('race', function (t) {
-    t.plan(4);
-    var ps = [ '', 'tmp' ];
-    
-    for (var i = 0; i < 25; i++) {
-        var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-        ps.push(dir);
-    }
-    var file = ps.join('/');
-    
-    var res = 2;
-    mk(file, function () {
-        if (--res === 0) t.end();
-    });
-    
-    mk(file, function () {
-        if (--res === 0) t.end();
-    });
-    
-    function mk (file, cb) {
-        mkdirp(file, 0755, function (err) {
-            if (err) t.fail(err);
-            else path.exists(file, function (ex) {
-                if (!ex) t.fail('file not created')
-                else fs.stat(file, function (err, stat) {
-                    if (err) t.fail(err)
-                    else {
-                        t.equal(stat.mode & 0777, 0755);
-                        t.ok(stat.isDirectory(), 'target not a directory');
-                        if (cb) cb();
-                    }
-                })
-            })
-        });
-    }
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/rel.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/rel.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/rel.js
deleted file mode 100644
index 7985824..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/rel.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('rel', function (t) {
-    t.plan(2);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    
-    var cwd = process.cwd();
-    process.chdir('/tmp');
-    
-    var file = [x,y,z].join('/');
-    
-    mkdirp(file, 0755, function (err) {
-        if (err) t.fail(err);
-        else path.exists(file, function (ex) {
-            if (!ex) t.fail('file not created')
-            else fs.stat(file, function (err, stat) {
-                if (err) t.fail(err)
-                else {
-                    process.chdir(cwd);
-                    t.equal(stat.mode & 0777, 0755);
-                    t.ok(stat.isDirectory(), 'target not a directory');
-                    t.end();
-                }
-            })
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/return.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/return.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/return.js
deleted file mode 100644
index bce68e5..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/return.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('return value', function (t) {
-    t.plan(4);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
-    var file = '/tmp/' + [x,y,z].join('/');
-
-    // should return the first dir created.
-    // By this point, it would be profoundly surprising if /tmp didn't
-    // already exist, since every other test makes things in there.
-    mkdirp(file, function (err, made) {
-        t.ifError(err);
-        t.equal(made, '/tmp/' + x);
-        mkdirp(file, function (err, made) {
-          t.ifError(err);
-          t.equal(made, null);
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/return_sync.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/return_sync.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/return_sync.js
deleted file mode 100644
index 7c222d3..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/return_sync.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('return value', function (t) {
-    t.plan(2);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
-    var file = '/tmp/' + [x,y,z].join('/');
-
-    // should return the first dir created.
-    // By this point, it would be profoundly surprising if /tmp didn't
-    // already exist, since every other test makes things in there.
-    // Note that this will throw on failure, which will fail the test.
-    var made = mkdirp.sync(file);
-    t.equal(made, '/tmp/' + x);
-
-    // making the same file again should have no effect.
-    made = mkdirp.sync(file);
-    t.equal(made, null);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/root.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/root.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/root.js
deleted file mode 100644
index 97ad7a2..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/root.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('root', function (t) {
-    // '/' on unix, 'c:/' on windows.
-    var file = path.resolve('/');
-
-    mkdirp(file, 0755, function (err) {
-        if (err) throw err
-        fs.stat(file, function (er, stat) {
-            if (er) throw er
-            t.ok(stat.isDirectory(), 'target is a directory');
-            t.end();
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/sync.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/sync.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/sync.js
deleted file mode 100644
index 7530cad..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/sync.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('sync', function (t) {
-    t.plan(2);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
-    var file = '/tmp/' + [x,y,z].join('/');
-
-    try {
-        mkdirp.sync(file, 0755);
-    } catch (err) {
-        t.fail(err);
-        return t.end();
-    }
-
-    path.exists(file, function (ex) {
-        if (!ex) t.fail('file not created')
-        else fs.stat(file, function (err, stat) {
-            if (err) t.fail(err)
-            else {
-                t.equal(stat.mode & 0777, 0755);
-                t.ok(stat.isDirectory(), 'target not a directory');
-                t.end();
-            }
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/umask.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/umask.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/umask.js
deleted file mode 100644
index 64ccafe..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/umask.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('implicit mode from umask', function (t) {
-    t.plan(2);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    
-    var file = '/tmp/' + [x,y,z].join('/');
-    
-    mkdirp(file, function (err) {
-        if (err) t.fail(err);
-        else path.exists(file, function (ex) {
-            if (!ex) t.fail('file not created')
-            else fs.stat(file, function (err, stat) {
-                if (err) t.fail(err)
-                else {
-                    t.equal(stat.mode & 0777, 0777 & (~process.umask()));
-                    t.ok(stat.isDirectory(), 'target not a directory');
-                    t.end();
-                }
-            })
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/umask_sync.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/umask_sync.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/umask_sync.js
deleted file mode 100644
index 35bd5cb..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/test/umask_sync.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('umask sync modes', function (t) {
-    t.plan(2);
-    var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
-    var file = '/tmp/' + [x,y,z].join('/');
-
-    try {
-        mkdirp.sync(file);
-    } catch (err) {
-        t.fail(err);
-        return t.end();
-    }
-
-    path.exists(file, function (ex) {
-        if (!ex) t.fail('file not created')
-        else fs.stat(file, function (err, stat) {
-            if (err) t.fail(err)
-            else {
-                t.equal(stat.mode & 0777, (0777 & (~process.umask())));
-                t.ok(stat.isDirectory(), 'target not a directory');
-                t.end();
-            }
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/.npmignore b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/.npmignore
deleted file mode 100644
index 9ecd205..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-node_modules
-.*.sw[op]
-.DS_Store
-test/fixtures/out

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/.travis.yml b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/.travis.yml
deleted file mode 100644
index f686c49..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/.travis.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-language: node_js
-
-node_js:
-  - 0.4
-  - 0.6
-  - 0.7
-  - 0.8

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/LICENSE.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/LICENSE.md b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/LICENSE.md
deleted file mode 100644
index e2b9b41..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# MIT License
-
-###Copyright (C) 2011 by Charlie McConnell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/README.md b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/README.md
deleted file mode 100644
index 79ad086..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# ncp - Asynchronous recursive file & directory copying
-
-[![Build Status](https://secure.travis-ci.org/AvianFlu/ncp.png)](http://travis-ci.org/AvianFlu/ncp)
-
-Think `cp -r`, but pure node, and asynchronous.  `ncp` can be used both as a CLI tool and programmatically.
-
-## Command Line usage
-
-Usage is simple: `ncp [source] [dest] [--limit=concurrency limit]
-[--filter=filter] --stopOnErr`
-
-The 'filter' is a Regular Expression - matched files will be copied.
-
-The 'concurrency limit' is an integer that represents how many pending file system requests `ncp` has at a time.
-
-'stopOnErr' is a boolean flag that will tell `ncp` to stop immediately if any
-errors arise, rather than attempting to continue while logging errors.
-
-If there are no errors, `ncp` will output `done.` when complete.  If there are errors, the error messages will be logged to `stdout` and to `./ncp-debug.log`, and the copy operation will attempt to continue.
-
-## Programmatic usage
-
-Programmatic usage of `ncp` is just as simple.  The only argument to the completion callback is a possible error.  
-
-```javascript
-var ncp = require('ncp').ncp;
-
-ncp.limit = 16;
-
-ncp(source, destination, function (err) {
- if (err) {
-   return console.error(err);
- }
- console.log('done!');
-});
-```
-
-You can also call ncp like `ncp(source, destination, options, callback)`. 
-`options` should be a dictionary. Currently, such options are available:
-
-  * `options.filter` - a `RegExp` instance, against which each file name is
-  tested to determine whether to copy it or not, or a function taking single
-  parameter: copied file name, returning `true` or `false`, determining
-  whether to copy file or not.
-
-  * `options.transform` - a function: `function (read, write) { read.pipe(write) }`
-  used to apply streaming transforms while copying.
-
-  * `options.clobber` - boolean=true. if set to false, `ncp` will not overwrite 
-  destination files that already exist.
-
-Please open an issue if any bugs arise.  As always, I accept (working) pull requests, and refunds are available at `/dev/null`.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/bin/ncp
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/bin/ncp b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/bin/ncp
deleted file mode 100755
index 388eaba..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/bin/ncp
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env node
-
-
-
-
-var ncp = require('../lib/ncp'),
-    args = process.argv.slice(2),
-    source, dest;
-
-if (args.length < 2) {
-  console.error('Usage: ncp [source] [destination] [--filter=filter] [--limit=concurrency limit]');
-  process.exit(1);
-}
-
-// parse arguments the hard way
-function startsWith(str, prefix) {
-  return str.substr(0, prefix.length) == prefix;
-}
-
-var options = {};
-args.forEach(function (arg) {
-  if (startsWith(arg, "--limit=")) {
-    options.limit = parseInt(arg.split('=', 2)[1], 10);
-  }
-  if (startsWith(arg, "--filter=")) {
-    options.filter = new RegExp(arg.split('=', 2)[1]);
-  }
-  if (startsWith(arg, "--stoponerr")) {
-    options.stopOnErr = true;
-  }
-});
-
-ncp.ncp(args[0], args[1], options, function (err) {
-  if (Array.isArray(err)) {
-    console.error('There were errors during the copy.');
-    err.forEach(function (err) {
-      console.error(err.stack || err.message);
-    });
-    process.exit(1);
-  }
-  else if (err) {
-    console.error('An error has occurred.');
-    console.error(err.stack || err.message);
-    process.exit(1);
-  }
-});
-
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/lib/ncp.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/lib/ncp.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/lib/ncp.js
deleted file mode 100644
index d871e00..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/lib/ncp.js
+++ /dev/null
@@ -1,222 +0,0 @@
-var fs = require('fs'),
-    path = require('path');
-
-module.exports = ncp
-ncp.ncp = ncp
-
-function ncp (source, dest, options, callback) {
-  if (!callback) {
-    callback = options;
-    options = {};
-  }
-
-  var basePath = process.cwd(),
-      currentPath = path.resolve(basePath, source),
-      targetPath = path.resolve(basePath, dest),
-      filter = options.filter,
-      transform = options.transform,
-      clobber = options.clobber !== false,
-      errs = null,
-      started = 0,
-      finished = 0,
-      running = 0,
-      limit = options.limit || ncp.limit || 16;
-
-  limit = (limit < 1) ? 1 : (limit > 512) ? 512 : limit;
-
-  startCopy(currentPath);
-  
-  function startCopy(source) {
-    started++;
-    if (filter) {
-      if (filter instanceof RegExp) {
-        if (!filter.test(source)) {
-          return cb(true);
-        }
-      }
-      else if (typeof filter === 'function') {
-        if (!filter(source)) {
-          return cb(true);
-        }
-      }
-    }
-    return getStats(source);
-  }
-
-  function defer(fn) {
-    if (typeof(setImmediate) === 'function')
-      return setImmediate(fn);
-    return process.nextTick(fn);
-  }
-
-  function getStats(source) {
-    if (running >= limit) {
-      return defer(function () {
-        getStats(source);
-      });
-    }
-    running++;
-    fs.lstat(source, function (err, stats) {
-      var item = {};
-      if (err) {
-        return onError(err);
-      }
-
-      // We need to get the mode from the stats object and preserve it.
-      item.name = source;
-      item.mode = stats.mode;
-
-      if (stats.isDirectory()) {
-        return onDir(item);
-      }
-      else if (stats.isFile()) {
-        return onFile(item);
-      }
-      else if (stats.isSymbolicLink()) {
-        // Symlinks don't really need to know about the mode.
-        return onLink(source);
-      }
-    });
-  }
-
-  function onFile(file) {
-    var target = file.name.replace(currentPath, targetPath);
-    isWritable(target, function (writable) {
-      if (writable) {
-        return copyFile(file, target);
-      }
-      if(clobber)
-        rmFile(target, function () {
-          copyFile(file, target);
-        });
-    });
-  }
-
-  function copyFile(file, target) {
-    var readStream = fs.createReadStream(file.name),
-        writeStream = fs.createWriteStream(target, { mode: file.mode });
-    if(transform) {
-      transform(readStream, writeStream,file);
-    } else {
-      readStream.pipe(writeStream);
-    }
-    readStream.once('end', cb);
-  }
-
-  function rmFile(file, done) {
-    fs.unlink(file, function (err) {
-      if (err) {
-        return onError(err);
-      }
-      return done();
-    });
-  }
-
-  function onDir(dir) {
-    var target = dir.name.replace(currentPath, targetPath);
-    isWritable(target, function (writable) {
-      if (writable) {
-        return mkDir(dir, target);
-      }
-      copyDir(dir.name);
-    });
-  }
-
-  function mkDir(dir, target) {
-    fs.mkdir(target, dir.mode, function (err) {
-      if (err) {
-        return onError(err);
-      }
-      copyDir(dir.name);
-    });
-  }
-
-  function copyDir(dir) {
-    fs.readdir(dir, function (err, items) {
-      if (err) {
-        return onError(err);
-      }
-      items.forEach(function (item) {
-        startCopy(dir + '/' + item);
-      });
-      return cb();
-    });
-  }
-
-  function onLink(link) {
-    var target = link.replace(currentPath, targetPath);
-    fs.readlink(link, function (err, resolvedPath) {
-      if (err) {
-        return onError(err);
-      }
-      checkLink(resolvedPath, target);
-    });
-  }
-
-  function checkLink(resolvedPath, target) {
-    isWritable(target, function (writable) {
-      if (writable) {
-        return makeLink(resolvedPath, target);
-      }
-      fs.readlink(target, function (err, targetDest) {
-        if (err) {
-          return onError(err);
-        }
-        if (targetDest === resolvedPath) {
-          return cb();
-        }
-        return rmFile(target, function () {
-          makeLink(resolvedPath, target);
-        });
-      });
-    });
-  }
-
-  function makeLink(linkPath, target) {
-    fs.symlink(linkPath, target, function (err) {
-      if (err) {
-        return onError(err);
-      }
-      return cb();
-    });
-  }
-
-  function isWritable(path, done) {
-    fs.lstat(path, function (err, stats) {
-      if (err) {
-        if (err.code === 'ENOENT') return done(true);
-        return done(false);
-      }
-      return done(false);
-    });
-  }
-
-  function onError(err) {
-    if (options.stopOnError) {
-      return callback(err);
-    }
-    else if (!errs && options.errs) {
-      errs = fs.createWriteStream(options.errs);
-    }
-    else if (!errs) {
-      errs = [];
-    }
-    if (typeof errs.write === 'undefined') {
-        errs.push(err);
-    }
-    else { 
-        errs.write(err.stack + '\n\n');
-    }
-    return cb();
-  }
-
-  function cb(skipped) {
-    if (!skipped) running--;
-    finished++;
-    if ((started === finished) && (running === 0)) {
-      return errs ? callback(errs) : callback(null);
-    }
-  }
-};
-
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/package.json b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/package.json
deleted file mode 100644
index 82608c9..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  "name": "ncp",
-  "version": "0.4.2",
-  "author": {
-    "name": "AvianFlu",
-    "email": "charlie@charlieistheman.com"
-  },
-  "description": "Asynchronous recursive file copy utility.",
-  "bin": {
-    "ncp": "./bin/ncp"
-  },
-  "devDependencies": {
-    "vows": "0.6.x",
-    "rimraf": "1.0.x",
-    "read-dir-files": "0.0.x"
-  },
-  "main": "./lib/ncp.js",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/AvianFlu/ncp.git"
-  },
-  "keywords": [
-    "cli",
-    "copy"
-  ],
-  "license": "MIT",
-  "engine": {
-    "node": ">=0.4"
-  },
-  "scripts": {
-    "test": "vows --isolate --spec"
-  },
-  "readme": "# ncp - Asynchronous recursive file & directory copying\n\n[![Build Status](https://secure.travis-ci.org/AvianFlu/ncp.png)](http://travis-ci.org/AvianFlu/ncp)\n\nThink `cp -r`, but pure node, and asynchronous.  `ncp` can be used both as a CLI tool and programmatically.\n\n## Command Line usage\n\nUsage is simple: `ncp [source] [dest] [--limit=concurrency limit]\n[--filter=filter] --stopOnErr`\n\nThe 'filter' is a Regular Expression - matched files will be copied.\n\nThe 'concurrency limit' is an integer that represents how many pending file system requests `ncp` has at a time.\n\n'stopOnErr' is a boolean flag that will tell `ncp` to stop immediately if any\nerrors arise, rather than attempting to continue while logging errors.\n\nIf there are no errors, `ncp` will output `done.` when complete.  If there are errors, the error messages will be logged to `stdout` and to `./ncp-debug.log`, and the copy operation will attempt to continue.\n\n## Programmatic usage\n\nProgramm
 atic usage of `ncp` is just as simple.  The only argument to the completion callback is a possible error.  \n\n```javascript\nvar ncp = require('ncp').ncp;\n\nncp.limit = 16;\n\nncp(source, destination, function (err) {\n if (err) {\n   return console.error(err);\n }\n console.log('done!');\n});\n```\n\nYou can also call ncp like `ncp(source, destination, options, callback)`. \n`options` should be a dictionary. Currently, such options are available:\n\n  * `options.filter` - a `RegExp` instance, against which each file name is\n  tested to determine whether to copy it or not, or a function taking single\n  parameter: copied file name, returning `true` or `false`, determining\n  whether to copy file or not.\n\n  * `options.transform` - a function: `function (read, write) { read.pipe(write) }`\n  used to apply streaming transforms while copying.\n\n  * `options.clobber` - boolean=true. if set to false, `ncp` will not overwrite \n  destination files that already exist.\n\nPlease open a
 n issue if any bugs arise.  As always, I accept (working) pull requests, and refunds are available at `/dev/null`.\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/AvianFlu/ncp/issues"
-  },
-  "homepage": "https://github.com/AvianFlu/ncp",
-  "_id": "ncp@0.4.2",
-  "_from": "ncp@0.4.x"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/a
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/a b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/a
deleted file mode 100644
index 802992c..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/a
+++ /dev/null
@@ -1 +0,0 @@
-Hello world

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/b
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/b b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/b
deleted file mode 100644
index 9f6bb18..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/b
+++ /dev/null
@@ -1 +0,0 @@
-Hello ncp

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/c
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/c b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/c
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/d
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/d b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/d
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/e
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/e b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/e
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/f
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/f b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/f
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/a
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/a b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/a
deleted file mode 100644
index cf291b5..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/a
+++ /dev/null
@@ -1 +0,0 @@
-Hello nodejitsu

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/b
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/b b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/b
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/ncp-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/ncp-test.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/ncp-test.js
deleted file mode 100644
index 3c613f7..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/ncp/test/ncp-test.js
+++ /dev/null
@@ -1,86 +0,0 @@
-var assert = require('assert'),
-    path = require('path'),
-    rimraf = require('rimraf'),
-    vows = require('vows'),
-    readDirFiles = require('read-dir-files'),
-    ncp = require('../').ncp;
-
-var fixtures = path.join(__dirname, 'fixtures'),
-    src = path.join(fixtures, 'src'),
-    out = path.join(fixtures, 'out');
-
-vows.describe('ncp').addBatch({
-  'When copying a directory of files': {
-    topic: function () {
-      var cb = this.callback;
-      rimraf(out, function () {
-        ncp(src, out, cb);
-      });
-    },
-    'files should be copied': {
-      topic: function () {
-        var cb = this.callback;
-
-        readDirFiles(src, 'utf8', function (srcErr, srcFiles) {
-          readDirFiles(out, 'utf8', function (outErr, outFiles) {
-            cb(outErr, srcFiles, outFiles);
-          });
-        });
-      },
-      'and the destination should match the source': function (err, srcFiles, outFiles) {
-        assert.isNull(err);
-        assert.deepEqual(srcFiles, outFiles);
-      }
-    }
-  }
-}).addBatch({
-  'When copying files using filter': {
-    topic: function() {
-      var cb = this.callback;
-      var filter = function(name) {
-        return name.substr(name.length - 1) != 'a'
-      }
-      rimraf(out, function () {
-        ncp(src, out, {filter: filter}, cb);
-      });
-    },
-    'it should copy files': {
-      topic: function () {
-        var cb = this.callback;
-
-        readDirFiles(src, 'utf8', function (srcErr, srcFiles) {
-          function filter(files) {
-            for (var fileName in files) {
-              var curFile = files[fileName];
-              if (curFile instanceof Object)
-                return filter(curFile);
-              if (fileName.substr(fileName.length - 1) == 'a')
-                delete files[fileName];
-            }
-          }
-          filter(srcFiles);
-          readDirFiles(out, 'utf8', function (outErr, outFiles) {
-            cb(outErr, srcFiles, outFiles);
-          });
-        });
-      },
-      'and destination files should match source files that pass filter': function (err, srcFiles, outFiles) {
-        assert.isNull(err);
-        assert.deepEqual(srcFiles, outFiles);
-      }
-    }
-  }
-}).addBatch({
-   'When copying files using transform': {
-      'it should pass file descriptors along to transform functions': function() {
-         ncp(src, out, {
-            transform: function(read,write,file) {
-               assert.notEqual(file.name, undefined);
-               assert.strictEqual(typeof file.mode,'number');
-               read.pipe(write);
-            }
-         }, function(){});
-      }
-  }
-}).export(module);
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/AUTHORS
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/AUTHORS b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/AUTHORS
deleted file mode 100644
index 247b754..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/AUTHORS
+++ /dev/null
@@ -1,6 +0,0 @@
-# Authors sorted by whether or not they're me.
-Isaac Z. Schlueter <i...@izs.me> (http://blog.izs.me)
-Wayne Larsen <wa...@larsen.st> (http://github.com/wvl)
-ritch <sk...@gmail.com>
-Marcel Laverdet
-Yosef Dinerstein <yo...@microsoft.com>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/LICENSE b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/LICENSE
deleted file mode 100644
index 05a4010..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-Copyright 2009, 2010, 2011 Isaac Z. Schlueter.
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/README.md b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/README.md
deleted file mode 100644
index cd123b6..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-`rm -rf` for node.
-
-Install with `npm install rimraf`, or just drop rimraf.js somewhere.
-
-## API
-
-`rimraf(f, callback)`
-
-The callback will be called with an error if there is one.  Certain
-errors are handled for you:
-
-* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of
-  `opts.maxBusyTries` times before giving up.
-* `ENOENT` - If the file doesn't exist, rimraf will return
-  successfully, since your desired outcome is already the case.
-
-## rimraf.sync
-
-It can remove stuff synchronously, too.  But that's not so good.  Use
-the async API.  It's better.
-
-## CLI
-
-If installed with `npm install rimraf -g` it can be used as a global
-command `rimraf <path>` which is useful for cross platform support.
-
-## mkdirp
-
-If you need to create a directory recursively, check out
-[mkdirp](https://github.com/substack/node-mkdirp).

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/bin.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/bin.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/bin.js
deleted file mode 100755
index 29bfa8a..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/bin.js
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env node
-
-var rimraf = require('./')
-
-var help = false
-var dashdash = false
-var args = process.argv.slice(2).filter(function(arg) {
-  if (dashdash)
-    return !!arg
-  else if (arg === '--')
-    dashdash = true
-  else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/))
-    help = true
-  else
-    return !!arg
-});
-
-if (help || args.length === 0) {
-  // If they didn't ask for help, then this is not a "success"
-  var log = help ? console.log : console.error
-  log('Usage: rimraf <path>')
-  log('')
-  log('  Deletes all files and folders at "path" recursively.')
-  log('')
-  log('Options:')
-  log('')
-  log('  -h, --help    Display this usage info')
-  process.exit(help ? 0 : 1)
-} else {
-  args.forEach(function(arg) {
-    rimraf.sync(arg)
-  })
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/package.json b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/package.json
deleted file mode 100644
index 70f8170..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "name": "rimraf",
-  "version": "2.2.6",
-  "main": "rimraf.js",
-  "description": "A deep deletion module for node (like `rm -rf`)",
-  "author": {
-    "name": "Isaac Z. Schlueter",
-    "email": "i@izs.me",
-    "url": "http://blog.izs.me/"
-  },
-  "license": {
-    "type": "MIT",
-    "url": "https://github.com/isaacs/rimraf/raw/master/LICENSE"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/rimraf.git"
-  },
-  "scripts": {
-    "test": "cd test && bash run.sh"
-  },
-  "bin": {
-    "rimraf": "./bin.js"
-  },
-  "contributors": [
-    {
-      "name": "Isaac Z. Schlueter",
-      "email": "i@izs.me",
-      "url": "http://blog.izs.me"
-    },
-    {
-      "name": "Wayne Larsen",
-      "email": "wayne@larsen.st",
-      "url": "http://github.com/wvl"
-    },
-    {
-      "name": "ritch",
-      "email": "skawful@gmail.com"
-    },
-    {
-      "name": "Marcel Laverdet"
-    },
-    {
-      "name": "Yosef Dinerstein",
-      "email": "yosefd@microsoft.com"
-    }
-  ],
-  "readme": "`rm -rf` for node.\n\nInstall with `npm install rimraf`, or just drop rimraf.js somewhere.\n\n## API\n\n`rimraf(f, callback)`\n\nThe callback will be called with an error if there is one.  Certain\nerrors are handled for you:\n\n* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of\n  `opts.maxBusyTries` times before giving up.\n* `ENOENT` - If the file doesn't exist, rimraf will return\n  successfully, since your desired outcome is already the case.\n\n## rimraf.sync\n\nIt can remove stuff synchronously, too.  But that's not so good.  Use\nthe async API.  It's better.\n\n## CLI\n\nIf installed with `npm install rimraf -g` it can be used as a global\ncommand `rimraf <path>` which is useful for cross platform support.\n\n## mkdirp\n\nIf you need to create a directory recursively, check out\n[mkdirp](https://github.com/substack/node-mkdirp).\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/isaacs/rimraf/issues"
-  },
-  "homepage": "https://github.com/isaacs/rimraf",
-  "_id": "rimraf@2.2.6",
-  "_from": "rimraf@2.x.x"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/rimraf.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/rimraf.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/rimraf.js
deleted file mode 100644
index ce62051..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/rimraf.js
+++ /dev/null
@@ -1,178 +0,0 @@
-module.exports = rimraf
-rimraf.sync = rimrafSync
-
-var path = require("path")
-var fs = require("fs")
-
-// for EMFILE handling
-var timeout = 0
-exports.EMFILE_MAX = 1000
-exports.BUSYTRIES_MAX = 3
-
-var isWindows = (process.platform === "win32")
-
-function rimraf (p, cb) {
-  if (!cb) throw new Error("No callback passed to rimraf()")
-
-  var busyTries = 0
-  rimraf_(p, function CB (er) {
-    if (er) {
-      if (isWindows && (er.code === "EBUSY" || er.code === "ENOTEMPTY") &&
-          busyTries < exports.BUSYTRIES_MAX) {
-        busyTries ++
-        var time = busyTries * 100
-        // try again, with the same exact callback as this one.
-        return setTimeout(function () {
-          rimraf_(p, CB)
-        }, time)
-      }
-
-      // this one won't happen if graceful-fs is used.
-      if (er.code === "EMFILE" && timeout < exports.EMFILE_MAX) {
-        return setTimeout(function () {
-          rimraf_(p, CB)
-        }, timeout ++)
-      }
-
-      // already gone
-      if (er.code === "ENOENT") er = null
-    }
-
-    timeout = 0
-    cb(er)
-  })
-}
-
-// Two possible strategies.
-// 1. Assume it's a file.  unlink it, then do the dir stuff on EPERM or EISDIR
-// 2. Assume it's a directory.  readdir, then do the file stuff on ENOTDIR
-//
-// Both result in an extra syscall when you guess wrong.  However, there
-// are likely far more normal files in the world than directories.  This
-// is based on the assumption that a the average number of files per
-// directory is >= 1.
-//
-// If anyone ever complains about this, then I guess the strategy could
-// be made configurable somehow.  But until then, YAGNI.
-function rimraf_ (p, cb) {
-  fs.unlink(p, function (er) {
-    if (er) {
-      if (er.code === "ENOENT")
-        return cb(null)
-      if (er.code === "EPERM")
-        return (isWindows) ? fixWinEPERM(p, er, cb) : rmdir(p, er, cb)
-      if (er.code === "EISDIR")
-        return rmdir(p, er, cb)
-    }
-    return cb(er)
-  })
-}
-
-function fixWinEPERM (p, er, cb) {
-  fs.chmod(p, 666, function (er2) {
-    if (er2)
-      cb(er2.code === "ENOENT" ? null : er)
-    else
-      fs.stat(p, function(er3, stats) {
-        if (er3)
-          cb(er3.code === "ENOENT" ? null : er)
-        else if (stats.isDirectory())
-          rmdir(p, er, cb)
-        else
-          fs.unlink(p, cb)
-      })
-  })
-}
-
-function fixWinEPERMSync (p, er, cb) {
-  try {
-    fs.chmodSync(p, 666)
-  } catch (er2) {
-    if (er2.code !== "ENOENT")
-      throw er
-  }
-
-  try {
-    var stats = fs.statSync(p)
-  } catch (er3) {
-    if (er3 !== "ENOENT")
-      throw er
-  }
-
-  if (stats.isDirectory())
-    rmdirSync(p, er)
-  else
-    fs.unlinkSync(p)
-}
-
-function rmdir (p, originalEr, cb) {
-  // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)
-  // if we guessed wrong, and it's not a directory, then
-  // raise the original error.
-  fs.rmdir(p, function (er) {
-    if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM"))
-      rmkids(p, cb)
-    else if (er && er.code === "ENOTDIR")
-      cb(originalEr)
-    else
-      cb(er)
-  })
-}
-
-function rmkids(p, cb) {
-  fs.readdir(p, function (er, files) {
-    if (er)
-      return cb(er)
-    var n = files.length
-    if (n === 0)
-      return fs.rmdir(p, cb)
-    var errState
-    files.forEach(function (f) {
-      rimraf(path.join(p, f), function (er) {
-        if (errState)
-          return
-        if (er)
-          return cb(errState = er)
-        if (--n === 0)
-          fs.rmdir(p, cb)
-      })
-    })
-  })
-}
-
-// this looks simpler, and is strictly *faster*, but will
-// tie up the JavaScript thread and fail on excessively
-// deep directory trees.
-function rimrafSync (p) {
-  try {
-    fs.unlinkSync(p)
-  } catch (er) {
-    if (er.code === "ENOENT")
-      return
-    if (er.code === "EPERM")
-      return isWindows ? fixWinEPERMSync(p, er) : rmdirSync(p, er)
-    if (er.code !== "EISDIR")
-      throw er
-    rmdirSync(p, er)
-  }
-}
-
-function rmdirSync (p, originalEr) {
-  try {
-    fs.rmdirSync(p)
-  } catch (er) {
-    if (er.code === "ENOENT")
-      return
-    if (er.code === "ENOTDIR")
-      throw originalEr
-    if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")
-      rmkidsSync(p)
-  }
-}
-
-function rmkidsSync (p) {
-  fs.readdirSync(p).forEach(function (f) {
-    rimrafSync(path.join(p, f))
-  })
-  fs.rmdirSync(p)
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/run.sh
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/run.sh b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/run.sh
deleted file mode 100644
index 598f016..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/run.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-set -e
-for i in test-*.js; do
-  echo -n $i ...
-  bash setup.sh
-  node $i
-  ! [ -d target ]
-  echo "pass"
-done
-rm -rf target

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/setup.sh
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/setup.sh b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/setup.sh
deleted file mode 100644
index 2602e63..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/setup.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-
-set -e
-
-files=10
-folders=2
-depth=4
-target="$PWD/target"
-
-rm -rf target
-
-fill () {
-  local depth=$1
-  local files=$2
-  local folders=$3
-  local target=$4
-
-  if ! [ -d $target ]; then
-    mkdir -p $target
-  fi
-
-  local f
-
-  f=$files
-  while [ $f -gt 0 ]; do
-    touch "$target/f-$depth-$f"
-    let f--
-  done
-
-  let depth--
-
-  if [ $depth -le 0 ]; then
-    return 0
-  fi
-
-  f=$folders
-  while [ $f -gt 0 ]; do
-    mkdir "$target/folder-$depth-$f"
-    fill $depth $files $folders "$target/d-$depth-$f"
-    let f--
-  done
-}
-
-fill $depth $files $folders $target
-
-# sanity assert
-[ -d $target ]

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/test-async.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/test-async.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/test-async.js
deleted file mode 100644
index 9c2e0b7..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/test-async.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var rimraf = require("../rimraf")
-  , path = require("path")
-rimraf(path.join(__dirname, "target"), function (er) {
-  if (er) throw er
-})

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/test-sync.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/test-sync.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/test-sync.js
deleted file mode 100644
index eb71f10..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/rimraf/test/test-sync.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var rimraf = require("../rimraf")
-  , path = require("path")
-rimraf.sync(path.join(__dirname, "target"))

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/package.json b/web/demos/package/node_modules/http-proxy/node_modules/utile/package.json
deleted file mode 100644
index 4ed29cf..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-  "name": "utile",
-  "description": "A drop-in replacement for `util` with some additional advantageous functions",
-  "version": "0.2.1",
-  "author": {
-    "name": "Nodejitsu Inc.",
-    "email": "info@nodejitsu.com"
-  },
-  "maintainers": [
-    {
-      "name": "indexzero",
-      "email": "charlie@nodejitsu.com"
-    }
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/flatiron/utile.git"
-  },
-  "dependencies": {
-    "async": "~0.2.9",
-    "deep-equal": "*",
-    "i": "0.3.x",
-    "mkdirp": "0.x.x",
-    "ncp": "0.4.x",
-    "rimraf": "2.x.x"
-  },
-  "devDependencies": {
-    "vows": "0.7.x"
-  },
-  "scripts": {
-    "test": "vows --spec"
-  },
-  "main": "./lib/index",
-  "engines": {
-    "node": ">= 0.6.4"
-  },
-  "readme": "# utile [![Build Status](https://secure.travis-ci.org/flatiron/utile.png)](http://travis-ci.org/flatiron/utile)\n\nA drop-in replacement for `util` with some additional advantageous functions\n\n## Motivation\nJavascript is definitely a \"batteries not included language\" when compared to languages like Ruby or Python. Node.js has a simple utility library which exposes some basic (but important) functionality:\n\n```\n$ node\n> var util = require('util');\n> util.\n(...)\n\nutil.debug                 util.error                 util.exec                  util.inherits              util.inspect\nutil.log                   util.p                     util.print                 util.pump                  util.puts\n```\n\nWhen one considers their own utility library, why ever bother requiring `util` again? That is the approach taken by this module. To compare:\n\n```\n$ node\n> var utile = require('./lib')\n> utile.\n(...)\n\nutile.async                 utile.capitalize     
        utile.clone                 utile.cpr                   utile.createPath            utile.debug\nutile.each                  utile.error                 utile.exec                  utile.file                  utile.filter                utile.find\nutile.inherits              utile.log                   utile.mixin                 utile.mkdirp                utile.p                     utile.path\nutile.print                 utile.pump                  utile.puts                  utile.randomString          utile.requireDir            uile.requireDirLazy\nutile.rimraf\n```\n\nAs you can see all of the original methods from `util` are there, but there are several new methods specific to `utile`. A note about implementation: _no node.js native modules are modified by utile, it simply copies those methods._\n\n## Methods\nThe `utile` modules exposes some simple utility methods:\n\n* `.each(obj, iterator)`: Iterate over the keys of an object.\n* `.mixin(target [source0, source1, 
 ...])`: Copies enumerable properties from `source0 ... sourceN` onto `target` and returns the resulting object.\n* `.clone(obj)`: Shallow clones the specified object.\n* `.capitalize(str)`: Capitalizes the specified `str`.\n* `.randomString(length)`: randomString returns a pseudo-random ASCII string (subset) the return value is a string of length āŒˆbits/6āŒ‰ of characters from the base64 alphabet.\n* `.filter(obj, test)`: return an object with the properties that `test` returns true on.\n* `.args(arguments)`: Converts function arguments into actual array with special `callback`, `cb`, `array`, and `last` properties. Also supports *optional* argument contracts. See [the example](https://github.com/flatiron/utile/blob/master/examples/utile-args.js) for more details.\n* `.requireDir(directory)`: Requires all files and directories from `directory`, returning an object with keys being filenames (without trailing `.js`) and respective values being return values of `require(filename)`.\n*
  `.requireDirLazy(directory)`: Lazily requires all files and directories from `directory`, returning an object with keys being filenames (without trailing `.js`) and respective values (getters) being return values of `require(filename)`.\n* `.format([string] text, [array] formats, [array] replacements)`: Replace `formats` in `text` with `replacements`. This will fall back to the original `util.format` command if it is called improperly.\n\n## Packaged Dependencies\nIn addition to the methods that are built-in, utile includes a number of commonly used dependencies to reduce the number of includes in your package.json. These modules _are not eagerly loaded to be respectful of startup time,_ but instead are lazy-loaded getters on the `utile` object\n\n* `.async`: [Async utilities for node and the browser][0]\n* `.inflect`: [Customizable inflections for node.js][6]\n* `.mkdirp`: [Recursively mkdir, like mkdir -p, but in node.js][1]\n* `.rimraf`: [A rm -rf util for nodejs][2]\n* `.cpr`: 
 [Asynchronous recursive file copying with Node.js][3]\n\n## Installation\n\n### Installing npm (node package manager)\n```\n  curl http://npmjs.org/install.sh | sh\n```\n\n### Installing utile\n```\n  [sudo] npm install utile\n```\n\n## Tests\nAll tests are written with [vows][4] and should be run with [npm][5]:\n\n``` bash\n  $ npm test\n```\n\n#### Author: [Nodejitsu Inc.](http://www.nodejitsu.com)\n#### Contributors: [Charlie Robbins](http://github.com/indexzero), [Dominic Tarr](http://github.com/dominictarr)\n#### License: MIT\n\n[0]: https://github.com/caolan/async\n[1]: https://github.com/substack/node-mkdirp\n[2]: https://github.com/isaacs/rimraf\n[3]: https://github.com/avianflu/ncp\n[4]: https://vowsjs.org\n[5]: https://npmjs.org\n[6]: https://github.com/pksunkara/inflect\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/flatiron/utile/issues"
-  },
-  "homepage": "https://github.com/flatiron/utile",
-  "_id": "utile@0.2.1",
-  "_from": "utile@~0.2.1"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/test/file-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/file-test.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/test/file-test.js
deleted file mode 100644
index 93ea089..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/file-test.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * file-test.js: Tests for `utile.file` module.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    path = require('path'),
-    vows = require('vows'),
-    macros = require('./helpers/macros'),
-    utile = require('../');
-
-var fixture = path.join(__dirname, 'fixtures', 'read-json-file', 'config.json');
-
-vows.describe('utile/file').addBatch({
-  'When using utile': {
-    'the `.file.readJson()` function': {
-      topic: function () {
-        utile.file.readJson(fixture, this.callback);
-      },
-      'should return correct JSON structure': macros.assertReadCorrectJson
-    },
-    'the `.file.readJsonSync()` function': {
-      topic: utile.file.readJsonSync(fixture),
-      'should return correct JSON structure': macros.assertReadCorrectJson
-    }
-  }
-}).export(module);
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/test/fixtures/read-json-file/config.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/fixtures/read-json-file/config.json b/web/demos/package/node_modules/http-proxy/node_modules/utile/test/fixtures/read-json-file/config.json
deleted file mode 100644
index e12a106..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/fixtures/read-json-file/config.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "hello": "World",
-  "I am": ["the utile module"],
-  "thisMakesMe": {
-    "really": 1337,
-    "right?": true
-  }
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/test/fixtures/require-directory/directory/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/fixtures/require-directory/directory/index.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/test/fixtures/require-directory/directory/index.js
deleted file mode 100644
index 1afb489..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/fixtures/require-directory/directory/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-exports.me = 'directory/index.js';
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/test/fixtures/require-directory/helloWorld.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/fixtures/require-directory/helloWorld.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/test/fixtures/require-directory/helloWorld.js
deleted file mode 100644
index 1c842ec..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/fixtures/require-directory/helloWorld.js
+++ /dev/null
@@ -1,2 +0,0 @@
-exports.me = 'helloWorld.js';
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/test/format-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/format-test.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/test/format-test.js
deleted file mode 100644
index fb1a2b7..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/format-test.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * format-test.js: Tests for `utile.format` module.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var vows = require('vows'),
-    assert = require('assert'),
-    utile = require('../lib');
-
-vows.describe('utile/format').addBatch({
-
-  'Should use the original `util.format` if there are no custom parameters to replace.': function() {
-    assert.equal(utile.format('%s %s %s', 'test', 'test2', 'test3'), 'test test2 test3');
-  },
-
-  'Should use `utile.format` if custom parameters are provided.': function() {
-    assert.equal(utile.format('%a %b %c', [
-      '%a',
-      '%b',
-      '%c'
-    ], [
-      'test',
-      'test2',
-      'test3'
-    ]), 'test test2 test3');
-  }
-
-}).export(module);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/test/function-args-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/function-args-test.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/test/function-args-test.js
deleted file mode 100644
index b2852eb..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/function-args-test.js
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * function-args-test.js: Tests for `args` method
- *
- * (C) 2012, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    path = require('path'),
-    vows = require('vows'),
-    macros = require('./helpers/macros'),
-    utile = require('../');
-
-vows.describe('utile/args').addBatch({
-  'When using utile': {
-    'the `args` function': {
-      topic: utile,
-      'should be a function': function (_utile) {
-        assert.isFunction(_utile.args);
-      },
-    }
-  },
-  'utile.rargs()': {
-    'with no arguments': {
-      topic: utile.rargs(),
-      'should return an empty object': function (result) {
-        assert.isArray(result);
-        assert.lengthOf(result, 0);
-      }
-    },
-    'with simple arguments': {
-      topic: function () {
-        return (function () {
-          return utile.rargs(arguments);
-        })('a', 'b', 'c');
-      },
-      'should return an array with three items': function (result) {
-        assert.isArray(result);
-        assert.equal(3, result.length);
-        assert.equal(result[0], 'a');
-        assert.equal(result[1], 'b');
-        assert.equal(result[2], 'c');
-      }
-    },
-    'with a simple slice': {
-      topic: function () {
-        return (function () {
-          return utile.rargs(arguments, 1);
-        })('a', 'b', 'c');
-      },
-      'should return an array with three items': function (result) {
-        assert.isArray(result);
-        assert.equal(2, result.length);
-        assert.equal(result[0], 'b');
-        assert.equal(result[1], 'c');
-      }
-    }
-  },
-  'utile.args()': {
-    'with no arguments': {
-      topic: utile.args(),
-      'should return an empty Array': function (result) {
-        assert.isUndefined(result.callback);
-        assert.isArray(result);
-        assert.lengthOf(result, 0);
-      }
-    },
-    'with simple arguments': {
-      topic: function () {
-        return (function () {
-          return utile.args(arguments);
-        })('a', 'b', 'c', function () {
-          return 'ok';
-        });
-      },
-      'should return an array with three items': function (result) {
-        assert.isArray(result);
-        assert.equal(3, result.length);
-        assert.equal(result[0], 'a');
-        assert.equal(result[1], 'b');
-        assert.equal(result[2], 'c');
-
-        //
-        // Ensure that the Array returned
-        // by `utile.args()` enumerates correctly
-        //
-        var length = 0;
-        result.forEach(function (item) {
-          length++;
-        });
-
-        assert.equal(length, 3);
-      },
-      'should return lookup helpers': function (result) {
-        assert.isArray(result);
-        assert.equal(result.first, 'a');
-        assert.equal(result.last, 'c');
-        assert.isFunction(result.callback);
-        assert.isFunction(result.cb);
-      }
-    }
-  }
-}).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/test/helpers/macros.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/helpers/macros.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/test/helpers/macros.js
deleted file mode 100644
index 66f386d..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/helpers/macros.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * macros.js: Test macros for `utile` module.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    utile = require('../../lib');
-
-var macros = exports;
-
-macros.assertReadCorrectJson = function (obj) {
-  assert.isObject(obj);
-  utile.deepEqual(obj, {
-    hello: 'World',
-    'I am': ['the utile module'],
-    thisMakesMe: {
-      really: 1337,
-      'right?': true
-    }
-  });
-};
-
-macros.assertDirectoryRequired = function (obj) {
-  assert.isObject(obj);
-  utile.deepEqual(obj, {
-    directory: {
-      me: 'directory/index.js'
-    },
-    helloWorld: {
-      me: 'helloWorld.js'
-    }
-  });
-};
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/test/random-string-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/random-string-test.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/test/random-string-test.js
deleted file mode 100644
index c21af3f..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/random-string-test.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * common-test.js : testing common.js for expected functionality
- *
- * (C) 2011, Nodejitsu Inc.
- *
- */
-
-var assert = require('assert'),
-    vows = require('vows'),
-    utile = require('../lib');
-
-vows.describe('utile/randomString').addBatch({
-  "When using utile": {
-    "the randomString() function": {
-      topic: function () {
-        return utile.randomString();
-      },
-      "should return 16 characters that are actually random by default": function (random) {
-        assert.isString(random);
-        assert.lengthOf(random, 16);
-        assert.notEqual(random, utile.randomString());
-      },
-      "when you can asked for different length strings": {
-        topic: function () {
-          return [utile.randomString(4), utile.randomString(128)];
-        },
-        "where they actually are of length 4, 128": function (strings) {
-          assert.isArray(strings);
-          assert.lengthOf(strings,2);
-          assert.isString(strings[0]);
-          assert.isString(strings[1]);
-          assert.lengthOf(strings[0], 4);
-          assert.lengthOf(strings[1], 128);
-          assert.notEqual(strings[0], strings[1].substr(0,4));
-        }
-      }
-    }
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/test/require-directory-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/require-directory-test.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/test/require-directory-test.js
deleted file mode 100644
index ce7ea83..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/require-directory-test.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * require-directory-test.js: Tests for `requireDir` and `requireDirLazy`
- * methods.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    path = require('path'),
-    vows = require('vows'),
-    macros = require('./helpers/macros'),
-    utile = require('../');
-
-var requireFixtures = path.join(__dirname, 'fixtures', 'require-directory');
-
-vows.describe('utile/require-directory').addBatch({
-  'When using utile': {
-    'the `requireDir()` function': {
-      topic: utile.requireDir(requireFixtures),
-      'should contain all wanted modules': macros.assertDirectoryRequired
-    },
-    'the `requireDirLazy()` function': {
-      topic: utile.requireDirLazy(requireFixtures),
-      'all properties should be getters': function (obj) {
-        assert.isObject(obj);
-        assert.isTrue(!!Object.getOwnPropertyDescriptor(obj, 'directory').get);
-        assert.isTrue(!!Object.getOwnPropertyDescriptor(obj, 'helloWorld').get);
-      },
-      'should contain all wanted modules': macros.assertDirectoryRequired
-    }
-  }
-}).export(module);
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/test/utile-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/utile-test.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/test/utile-test.js
deleted file mode 100644
index 7dd5b0f..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/test/utile-test.js
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * utile-test.js: Tests for `utile` module.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    vows = require('vows'),
-    utile = require('../lib');
-
-var obj1, obj2;
-
-obj1 = {
-  foo: true,
-  bar: {
-    bar1: true,
-    bar2: 'bar2'
-  }
-};
-
-obj2 = {
-  baz: true,
-  buzz: 'buzz'
-};
-
-Object.defineProperties(obj2, {
-
-  'bazz': {
-    get: function() {
-      return 'bazz';
-    },
-
-    set: function() {
-      return 'bazz';
-    }
-  },
-
-  'wat': {
-    set: function() {
-      return 'wat';
-    }
-  }
-
-});
-
-vows.describe('utile').addBatch({
-  "When using utile": {
-    "it should have the same methods as the `util` module": function () {
-      Object.keys(require('util')).forEach(function (fn) {
-        assert.isFunction(utile[fn]);
-      });
-    },
-    "it should have the correct methods defined": function () {
-      assert.isFunction(utile.mixin);
-      assert.isFunction(utile.clone);
-      assert.isFunction(utile.rimraf);
-      assert.isFunction(utile.mkdirp);
-      assert.isFunction(utile.cpr);
-    },
-    "the mixin() method": function () {
-      var mixed = utile.mixin({}, obj1, obj2);
-      assert.isTrue(mixed.foo);
-      assert.isObject(mixed.bar);
-      assert.isTrue(mixed.baz);
-      assert.isString(mixed.buzz);
-      assert.isTrue(!!Object.getOwnPropertyDescriptor(mixed, 'bazz').get);
-      assert.isTrue(!!Object.getOwnPropertyDescriptor(mixed, 'bazz').set);
-      assert.isTrue(!!Object.getOwnPropertyDescriptor(mixed, 'wat').set);
-      assert.isString(mixed.bazz);
-    },
-    "the clone() method": function () {
-      var clone = utile.clone(obj1);
-      assert.isTrue(clone.foo);
-      assert.isObject(clone.bar);
-      assert.notStrictEqual(obj1, clone);
-    },
-    "the createPath() method": function () {
-      var x = {},
-          r = Math.random();
-
-      utile.createPath(x, ['a','b','c'], r)
-      assert.equal(x.a.b.c, r)
-    },
-    "the capitalize() method": function () {
-      assert.isFunction(utile.capitalize);
-      assert.equal(utile.capitalize('bullet'), 'Bullet');
-      assert.equal(utile.capitalize('bullet_train'), 'BulletTrain');
-    },
-    "the escapeRegExp() method": function () {
-      var ans = "\\/path\\/to\\/resource\\.html\\?search=query";
-      assert.isFunction(utile.escapeRegExp);
-      assert.equal(utile.escapeRegExp('/path/to/resource.html?search=query'), ans);
-    },
-    "the underscoreToCamel() method": function () {
-      var obj = utile.underscoreToCamel({
-        key_with_underscore: {
-          andNested: 'values',
-          several: [1, 2, 3],
-          nested_underscores: true
-        },
-        just_one: 'underscore'
-      });
-
-      assert.isObject(obj.keyWithUnderscore);
-      assert.isString(obj.justOne);
-      assert.isTrue(obj.keyWithUnderscore.nestedUnderscores);
-    },
-    "the camelToUnderscore() method": function () {
-      var obj = utile.camelToUnderscore({
-        keyWithCamel: {
-          andNested: 'values',
-          several: [1, 2, 3],
-          nestedCamel: true
-        },
-        justOne: 'camel'
-      });
-
-      assert.isObject(obj.key_with_camel);
-      assert.isString(obj.just_one);
-      assert.isTrue(obj.key_with_camel.nested_camel);
-    }
-  }
-}).export(module);
-


[34/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/commander/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/commander/index.js b/web/demos/package/node_modules/express/node_modules/commander/index.js
deleted file mode 100644
index 0ceaf18..0000000
--- a/web/demos/package/node_modules/express/node_modules/commander/index.js
+++ /dev/null
@@ -1,1152 +0,0 @@
-/*!
- * commander
- * Copyright(c) 2011 TJ Holowaychuk <tj...@vision-media.ca>
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var EventEmitter = require('events').EventEmitter
-  , spawn = require('child_process').spawn
-  , keypress = require('keypress')
-  , fs = require('fs')
-  , exists = fs.existsSync
-  , path = require('path')
-  , tty = require('tty')
-  , dirname = path.dirname
-  , basename = path.basename;
-
-/**
- * Expose the root command.
- */
-
-exports = module.exports = new Command;
-
-/**
- * Expose `Command`.
- */
-
-exports.Command = Command;
-
-/**
- * Expose `Option`.
- */
-
-exports.Option = Option;
-
-/**
- * Initialize a new `Option` with the given `flags` and `description`.
- *
- * @param {String} flags
- * @param {String} description
- * @api public
- */
-
-function Option(flags, description) {
-  this.flags = flags;
-  this.required = ~flags.indexOf('<');
-  this.optional = ~flags.indexOf('[');
-  this.bool = !~flags.indexOf('-no-');
-  flags = flags.split(/[ ,|]+/);
-  if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift();
-  this.long = flags.shift();
-  this.description = description || '';
-}
-
-/**
- * Return option name.
- *
- * @return {String}
- * @api private
- */
-
-Option.prototype.name = function(){
-  return this.long
-    .replace('--', '')
-    .replace('no-', '');
-};
-
-/**
- * Check if `arg` matches the short or long flag.
- *
- * @param {String} arg
- * @return {Boolean}
- * @api private
- */
-
-Option.prototype.is = function(arg){
-  return arg == this.short
-    || arg == this.long;
-};
-
-/**
- * Initialize a new `Command`.
- *
- * @param {String} name
- * @api public
- */
-
-function Command(name) {
-  this.commands = [];
-  this.options = [];
-  this._args = [];
-  this._name = name;
-}
-
-/**
- * Inherit from `EventEmitter.prototype`.
- */
-
-Command.prototype.__proto__ = EventEmitter.prototype;
-
-/**
- * Add command `name`.
- *
- * The `.action()` callback is invoked when the
- * command `name` is specified via __ARGV__,
- * and the remaining arguments are applied to the
- * function for access.
- *
- * When the `name` is "*" an un-matched command
- * will be passed as the first arg, followed by
- * the rest of __ARGV__ remaining.
- *
- * Examples:
- *
- *      program
- *        .version('0.0.1')
- *        .option('-C, --chdir <path>', 'change the working directory')
- *        .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf')
- *        .option('-T, --no-tests', 'ignore test hook')
- *     
- *      program
- *        .command('setup')
- *        .description('run remote setup commands')
- *        .action(function(){
- *          console.log('setup');
- *        });
- *     
- *      program
- *        .command('exec <cmd>')
- *        .description('run the given remote command')
- *        .action(function(cmd){
- *          console.log('exec "%s"', cmd);
- *        });
- *     
- *      program
- *        .command('*')
- *        .description('deploy the given env')
- *        .action(function(env){
- *          console.log('deploying "%s"', env);
- *        });
- *     
- *      program.parse(process.argv);
-  *
- * @param {String} name
- * @param {String} [desc]
- * @return {Command} the new command
- * @api public
- */
-
-Command.prototype.command = function(name, desc){
-  var args = name.split(/ +/);
-  var cmd = new Command(args.shift());
-  if (desc) cmd.description(desc);
-  if (desc) this.executables = true;
-  this.commands.push(cmd);
-  cmd.parseExpectedArgs(args);
-  cmd.parent = this;
-  if (desc) return this;
-  return cmd;
-};
-
-/**
- * Add an implicit `help [cmd]` subcommand
- * which invokes `--help` for the given command.
- *
- * @api private
- */
-
-Command.prototype.addImplicitHelpCommand = function() {
-  this.command('help [cmd]', 'display help for [cmd]');
-};
-
-/**
- * Parse expected `args`.
- *
- * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`.
- *
- * @param {Array} args
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.parseExpectedArgs = function(args){
-  if (!args.length) return;
-  var self = this;
-  args.forEach(function(arg){
-    switch (arg[0]) {
-      case '<':
-        self._args.push({ required: true, name: arg.slice(1, -1) });
-        break;
-      case '[':
-        self._args.push({ required: false, name: arg.slice(1, -1) });
-        break;
-    }
-  });
-  return this;
-};
-
-/**
- * Register callback `fn` for the command.
- *
- * Examples:
- *
- *      program
- *        .command('help')
- *        .description('display verbose help')
- *        .action(function(){
- *           // output help here
- *        });
- *
- * @param {Function} fn
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.action = function(fn){
-  var self = this;
-  this.parent.on(this._name, function(args, unknown){    
-    // Parse any so-far unknown options
-    unknown = unknown || [];
-    var parsed = self.parseOptions(unknown);
-    
-    // Output help if necessary
-    outputHelpIfNecessary(self, parsed.unknown);
-    
-    // If there are still any unknown options, then we simply 
-    // die, unless someone asked for help, in which case we give it
-    // to them, and then we die.
-    if (parsed.unknown.length > 0) {      
-      self.unknownOption(parsed.unknown[0]);
-    }
-    
-    // Leftover arguments need to be pushed back. Fixes issue #56
-    if (parsed.args.length) args = parsed.args.concat(args);
-    
-    self._args.forEach(function(arg, i){
-      if (arg.required && null == args[i]) {
-        self.missingArgument(arg.name);
-      }
-    });
-    
-    // Always append ourselves to the end of the arguments,
-    // to make sure we match the number of arguments the user
-    // expects
-    if (self._args.length) {
-      args[self._args.length] = self;
-    } else {
-      args.push(self);
-    }
-    
-    fn.apply(this, args);
-  });
-  return this;
-};
-
-/**
- * Define option with `flags`, `description` and optional
- * coercion `fn`. 
- *
- * The `flags` string should contain both the short and long flags,
- * separated by comma, a pipe or space. The following are all valid
- * all will output this way when `--help` is used.
- *
- *    "-p, --pepper"
- *    "-p|--pepper"
- *    "-p --pepper"
- *
- * Examples:
- *
- *     // simple boolean defaulting to false
- *     program.option('-p, --pepper', 'add pepper');
- *
- *     --pepper
- *     program.pepper
- *     // => Boolean
- *
- *     // simple boolean defaulting to false
- *     program.option('-C, --no-cheese', 'remove cheese');
- *
- *     program.cheese
- *     // => true
- *
- *     --no-cheese
- *     program.cheese
- *     // => true
- *
- *     // required argument
- *     program.option('-C, --chdir <path>', 'change the working directory');
- *
- *     --chdir /tmp
- *     program.chdir
- *     // => "/tmp"
- *
- *     // optional argument
- *     program.option('-c, --cheese [type]', 'add cheese [marble]');
- *
- * @param {String} flags
- * @param {String} description
- * @param {Function|Mixed} fn or default
- * @param {Mixed} defaultValue
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.option = function(flags, description, fn, defaultValue){
-  var self = this
-    , option = new Option(flags, description)
-    , oname = option.name()
-    , name = camelcase(oname);
-
-  // default as 3rd arg
-  if ('function' != typeof fn) defaultValue = fn, fn = null;
-
-  // preassign default value only for --no-*, [optional], or <required>
-  if (false == option.bool || option.optional || option.required) {
-    // when --no-* we make sure default is true
-    if (false == option.bool) defaultValue = true;
-    // preassign only if we have a default
-    if (undefined !== defaultValue) self[name] = defaultValue;
-  }
-
-  // register the option
-  this.options.push(option);
-
-  // when it's passed assign the value
-  // and conditionally invoke the callback
-  this.on(oname, function(val){
-    // coercion
-    if (null != val && fn) val = fn(val);
-
-    // unassigned or bool
-    if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) {
-      // if no value, bool true, and we have a default, then use it!
-      if (null == val) {
-        self[name] = option.bool
-          ? defaultValue || true
-          : false;
-      } else {
-        self[name] = val;
-      }
-    } else if (null !== val) {
-      // reassign
-      self[name] = val;
-    }
-  });
-
-  return this;
-};
-
-/**
- * Parse `argv`, settings options and invoking commands when defined.
- *
- * @param {Array} argv
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.parse = function(argv){
-  // implicit help
-  if (this.executables) this.addImplicitHelpCommand();
-
-  // store raw args
-  this.rawArgs = argv;
-
-  // guess name
-  this._name = this._name || basename(argv[1]);
-
-  // process argv
-  var parsed = this.parseOptions(this.normalize(argv.slice(2)));
-  var args = this.args = parsed.args;
- 
-  // executable sub-commands, skip .parseArgs()
-  if (this.executables) return this.executeSubCommand(argv, args, parsed.unknown);
-
-  return this.parseArgs(this.args, parsed.unknown);
-};
-
-/**
- * Execute a sub-command executable.
- *
- * @param {Array} argv
- * @param {Array} args
- * @param {Array} unknown
- * @api private
- */
-
-Command.prototype.executeSubCommand = function(argv, args, unknown) {
-  args = args.concat(unknown);
-
-  if (!args.length) this.help();
-  if ('help' == args[0] && 1 == args.length) this.help();
-
-  // <cmd> --help
-  if ('help' == args[0]) {
-    args[0] = args[1];
-    args[1] = '--help';
-  }
-
-  // executable
-  var dir = dirname(argv[1]);
-  var bin = basename(argv[1]) + '-' + args[0];
-
-  // check for ./<bin> first
-  var local = path.join(dir, bin);
-  if (exists(local)) bin = local;
-
-  // run it
-  args = args.slice(1);
-  var proc = spawn(bin, args, { stdio: 'inherit', customFds: [0, 1, 2] });
-  proc.on('exit', function(code){
-    if (code == 127) {
-      console.error('\n  %s(1) does not exist\n', bin);
-    }
-  });
-};
-
-/**
- * Normalize `args`, splitting joined short flags. For example
- * the arg "-abc" is equivalent to "-a -b -c".
- * This also normalizes equal sign and splits "--abc=def" into "--abc def".
- *
- * @param {Array} args
- * @return {Array}
- * @api private
- */
-
-Command.prototype.normalize = function(args){
-  var ret = []
-    , arg
-    , index;
-
-  for (var i = 0, len = args.length; i < len; ++i) {
-    arg = args[i];
-    if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) {
-      arg.slice(1).split('').forEach(function(c){
-        ret.push('-' + c);
-      });
-    } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) {
-      ret.push(arg.slice(0, index), arg.slice(index + 1));
-    } else {
-      ret.push(arg);
-    }
-  }
-
-  return ret;
-};
-
-/**
- * Parse command `args`.
- *
- * When listener(s) are available those
- * callbacks are invoked, otherwise the "*"
- * event is emitted and those actions are invoked.
- *
- * @param {Array} args
- * @return {Command} for chaining
- * @api private
- */
-
-Command.prototype.parseArgs = function(args, unknown){
-  var cmds = this.commands
-    , len = cmds.length
-    , name;
-
-  if (args.length) {
-    name = args[0];
-    if (this.listeners(name).length) {
-      this.emit(args.shift(), args, unknown);
-    } else {
-      this.emit('*', args);
-    }
-  } else {
-    outputHelpIfNecessary(this, unknown);
-    
-    // If there were no args and we have unknown options,
-    // then they are extraneous and we need to error.
-    if (unknown.length > 0) {      
-      this.unknownOption(unknown[0]);
-    }
-  }
-
-  return this;
-};
-
-/**
- * Return an option matching `arg` if any.
- *
- * @param {String} arg
- * @return {Option}
- * @api private
- */
-
-Command.prototype.optionFor = function(arg){
-  for (var i = 0, len = this.options.length; i < len; ++i) {
-    if (this.options[i].is(arg)) {
-      return this.options[i];
-    }
-  }
-};
-
-/**
- * Parse options from `argv` returning `argv`
- * void of these options.
- *
- * @param {Array} argv
- * @return {Array}
- * @api public
- */
-
-Command.prototype.parseOptions = function(argv){
-  var args = []
-    , len = argv.length
-    , literal
-    , option
-    , arg;
-
-  var unknownOptions = [];
-
-  // parse options
-  for (var i = 0; i < len; ++i) {
-    arg = argv[i];
-
-    // literal args after --
-    if ('--' == arg) {
-      literal = true;
-      continue;
-    }
-
-    if (literal) {
-      args.push(arg);
-      continue;
-    }
-
-    // find matching Option
-    option = this.optionFor(arg);
-
-    // option is defined
-    if (option) {
-      // requires arg
-      if (option.required) {
-        arg = argv[++i];
-        if (null == arg) return this.optionMissingArgument(option);
-        if ('-' == arg[0] && '-' != arg) return this.optionMissingArgument(option, arg);
-        this.emit(option.name(), arg);
-      // optional arg
-      } else if (option.optional) {
-        arg = argv[i+1];
-        if (null == arg || ('-' == arg[0] && '-' != arg)) {
-          arg = null;
-        } else {
-          ++i;
-        }
-        this.emit(option.name(), arg);
-      // bool
-      } else {
-        this.emit(option.name());
-      }
-      continue;
-    }
-    
-    // looks like an option
-    if (arg.length > 1 && '-' == arg[0]) {
-      unknownOptions.push(arg);
-      
-      // If the next argument looks like it might be
-      // an argument for this option, we pass it on.
-      // If it isn't, then it'll simply be ignored
-      if (argv[i+1] && '-' != argv[i+1][0]) {
-        unknownOptions.push(argv[++i]);
-      }
-      continue;
-    }
-    
-    // arg
-    args.push(arg);
-  }
-  
-  return { args: args, unknown: unknownOptions };
-};
-
-/**
- * Argument `name` is missing.
- *
- * @param {String} name
- * @api private
- */
-
-Command.prototype.missingArgument = function(name){
-  console.error();
-  console.error("  error: missing required argument `%s'", name);
-  console.error();
-  process.exit(1);
-};
-
-/**
- * `Option` is missing an argument, but received `flag` or nothing.
- *
- * @param {String} option
- * @param {String} flag
- * @api private
- */
-
-Command.prototype.optionMissingArgument = function(option, flag){
-  console.error();
-  if (flag) {
-    console.error("  error: option `%s' argument missing, got `%s'", option.flags, flag);
-  } else {
-    console.error("  error: option `%s' argument missing", option.flags);
-  }
-  console.error();
-  process.exit(1);
-};
-
-/**
- * Unknown option `flag`.
- *
- * @param {String} flag
- * @api private
- */
-
-Command.prototype.unknownOption = function(flag){
-  console.error();
-  console.error("  error: unknown option `%s'", flag);
-  console.error();
-  process.exit(1);
-};
-
-
-/**
- * Set the program version to `str`.
- *
- * This method auto-registers the "-V, --version" flag
- * which will print the version number when passed.
- *
- * @param {String} str
- * @param {String} flags
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.version = function(str, flags){
-  if (0 == arguments.length) return this._version;
-  this._version = str;
-  flags = flags || '-V, --version';
-  this.option(flags, 'output the version number');
-  this.on('version', function(){
-    console.log(str);
-    process.exit(0);
-  });
-  return this;
-};
-
-/**
- * Set the description `str`.
- *
- * @param {String} str
- * @return {String|Command}
- * @api public
- */
-
-Command.prototype.description = function(str){
-  if (0 == arguments.length) return this._description;
-  this._description = str;
-  return this;
-};
-
-/**
- * Set / get the command usage `str`.
- *
- * @param {String} str
- * @return {String|Command}
- * @api public
- */
-
-Command.prototype.usage = function(str){
-  var args = this._args.map(function(arg){
-    return arg.required
-      ? '<' + arg.name + '>'
-      : '[' + arg.name + ']';
-  });
-
-  var usage = '[options'
-    + (this.commands.length ? '] [command' : '')
-    + ']'
-    + (this._args.length ? ' ' + args : '');
-
-  if (0 == arguments.length) return this._usage || usage;
-  this._usage = str;
-
-  return this;
-};
-
-/**
- * Return the largest option length.
- *
- * @return {Number}
- * @api private
- */
-
-Command.prototype.largestOptionLength = function(){
-  return this.options.reduce(function(max, option){
-    return Math.max(max, option.flags.length);
-  }, 0);
-};
-
-/**
- * Return help for options.
- *
- * @return {String}
- * @api private
- */
-
-Command.prototype.optionHelp = function(){
-  var width = this.largestOptionLength();
-  
-  // Prepend the help information
-  return [pad('-h, --help', width) + '  ' + 'output usage information']
-    .concat(this.options.map(function(option){
-      return pad(option.flags, width)
-        + '  ' + option.description;
-      }))
-    .join('\n');
-};
-
-/**
- * Return command help documentation.
- *
- * @return {String}
- * @api private
- */
-
-Command.prototype.commandHelp = function(){
-  if (!this.commands.length) return '';
-  return [
-      ''
-    , '  Commands:'
-    , ''
-    , this.commands.map(function(cmd){
-      var args = cmd._args.map(function(arg){
-        return arg.required
-          ? '<' + arg.name + '>'
-          : '[' + arg.name + ']';
-      }).join(' ');
-
-      return pad(cmd._name
-        + (cmd.options.length 
-          ? ' [options]'
-          : '') + ' ' + args, 22)
-        + (cmd.description()
-          ? ' ' + cmd.description()
-          : '');
-    }).join('\n').replace(/^/gm, '    ')
-    , ''
-  ].join('\n');
-};
-
-/**
- * Return program help documentation.
- *
- * @return {String}
- * @api private
- */
-
-Command.prototype.helpInformation = function(){
-  return [
-      ''
-    , '  Usage: ' + this._name + ' ' + this.usage()
-    , '' + this.commandHelp()
-    , '  Options:'
-    , ''
-    , '' + this.optionHelp().replace(/^/gm, '    ')
-    , ''
-    , ''
-  ].join('\n');
-};
-
-/**
- * Prompt for a `Number`.
- *
- * @param {String} str
- * @param {Function} fn
- * @api private
- */
-
-Command.prototype.promptForNumber = function(str, fn){
-  var self = this;
-  this.promptSingleLine(str, function parseNumber(val){
-    val = Number(val);
-    if (isNaN(val)) return self.promptSingleLine(str + '(must be a number) ', parseNumber);
-    fn(val);
-  });
-};
-
-/**
- * Prompt for a `Date`.
- *
- * @param {String} str
- * @param {Function} fn
- * @api private
- */
-
-Command.prototype.promptForDate = function(str, fn){
-  var self = this;
-  this.promptSingleLine(str, function parseDate(val){
-    val = new Date(val);
-    if (isNaN(val.getTime())) return self.promptSingleLine(str + '(must be a date) ', parseDate);
-    fn(val);
-  });
-};
-
-
-/**
- * Prompt for a `Regular Expression`.
- *
- * @param {String} str
- * @param {Object} pattern regular expression object to test
- * @param {Function} fn
- * @api private
- */
-
-Command.prototype.promptForRegexp = function(str, pattern, fn){
-  var self = this;
-  this.promptSingleLine(str, function parseRegexp(val){
-    if(!pattern.test(val)) return self.promptSingleLine(str + '(regular expression mismatch) ', parseRegexp);
-    fn(val);
-  });
-};
-
-
-/**
- * Single-line prompt.
- *
- * @param {String} str
- * @param {Function} fn
- * @api private
- */
-
-Command.prototype.promptSingleLine = function(str, fn){
-  // determine if the 2nd argument is a regular expression
-  if (arguments[1].global !== undefined && arguments[1].multiline !== undefined) {
-    return this.promptForRegexp(str, arguments[1], arguments[2]);
-  } else if ('function' == typeof arguments[2]) {
-    return this['promptFor' + (fn.name || fn)](str, arguments[2]);
-  }
-
-  process.stdout.write(str);
-  process.stdin.setEncoding('utf8');
-  process.stdin.once('data', function(val){
-    fn(val.trim());
-  }).resume();
-};
-
-/**
- * Multi-line prompt.
- *
- * @param {String} str
- * @param {Function} fn
- * @api private
- */
-
-Command.prototype.promptMultiLine = function(str, fn){
-  var buf = [];
-  console.log(str);
-  process.stdin.setEncoding('utf8');
-  process.stdin.on('data', function(val){
-    if ('\n' == val || '\r\n' == val) {
-      process.stdin.removeAllListeners('data');
-      fn(buf.join('\n'));
-    } else {
-      buf.push(val.trimRight());
-    }
-  }).resume();
-};
-
-/**
- * Prompt `str` and callback `fn(val)`
- *
- * Commander supports single-line and multi-line prompts.
- * To issue a single-line prompt simply add white-space
- * to the end of `str`, something like "name: ", whereas
- * for a multi-line prompt omit this "description:".
- *
- *
- * Examples:
- *
- *     program.prompt('Username: ', function(name){
- *       console.log('hi %s', name);
- *     });
- *     
- *     program.prompt('Description:', function(desc){
- *       console.log('description was "%s"', desc.trim());
- *     });
- *
- * @param {String|Object} str
- * @param {Function} fn
- * @api public
- */
-
-Command.prototype.prompt = function(str, fn){
-  var self = this;
-  if ('string' == typeof str) {
-    if (/ $/.test(str)) return this.promptSingleLine.apply(this, arguments);
-    this.promptMultiLine(str, fn);
-  } else {
-    var keys = Object.keys(str)
-      , obj = {};
-
-    function next() {
-      var key = keys.shift()
-        , label = str[key];
-
-      if (!key) return fn(obj);
-      self.prompt(label, function(val){
-        obj[key] = val;
-        next();
-      });
-    }
-
-    next();
-  }
-};
-
-/**
- * Prompt for password with `str`, `mask` char and callback `fn(val)`.
- *
- * The mask string defaults to '', aka no output is
- * written while typing, you may want to use "*" etc.
- *
- * Examples:
- *
- *     program.password('Password: ', function(pass){
- *       console.log('got "%s"', pass);
- *       process.stdin.destroy();
- *     });
- *
- *     program.password('Password: ', '*', function(pass){
- *       console.log('got "%s"', pass);
- *       process.stdin.destroy();
- *     });
- *
- * @param {String} str
- * @param {String} mask
- * @param {Function} fn
- * @api public
- */
-
-Command.prototype.password = function(str, mask, fn){
-  var self = this
-    , buf = '';
-
-  // default mask
-  if ('function' == typeof mask) {
-    fn = mask;
-    mask = '';
-  }
-
-  keypress(process.stdin);
-
-  function setRawMode(mode) {
-    if (process.stdin.setRawMode) {
-      process.stdin.setRawMode(mode);
-    } else {
-      tty.setRawMode(mode);
-    }
-  };
-  setRawMode(true);
-  process.stdout.write(str);
-
-  // keypress
-  process.stdin.on('keypress', function(c, key){
-    if (key && 'enter' == key.name) {
-      console.log();
-      process.stdin.pause();
-      process.stdin.removeAllListeners('keypress');
-      setRawMode(false);
-      if (!buf.trim().length) return self.password(str, mask, fn);
-      fn(buf);
-      return;
-    }
-
-    if (key && key.ctrl && 'c' == key.name) {
-      console.log('%s', buf);
-      process.exit();
-    }
-
-    process.stdout.write(mask);
-    buf += c;
-  }).resume();
-};
-
-/**
- * Confirmation prompt with `str` and callback `fn(bool)`
- *
- * Examples:
- *
- *      program.confirm('continue? ', function(ok){
- *        console.log(' got %j', ok);
- *        process.stdin.destroy();
- *      });
- *
- * @param {String} str
- * @param {Function} fn
- * @api public
- */
-
-
-Command.prototype.confirm = function(str, fn, verbose){
-  var self = this;
-  this.prompt(str, function(ok){
-    if (!ok.trim()) {
-      if (!verbose) str += '(yes or no) ';
-      return self.confirm(str, fn, true);
-    }
-    fn(parseBool(ok));
-  });
-};
-
-/**
- * Choice prompt with `list` of items and callback `fn(index, item)`
- *
- * Examples:
- *
- *      var list = ['tobi', 'loki', 'jane', 'manny', 'luna'];
- *      
- *      console.log('Choose the coolest pet:');
- *      program.choose(list, function(i){
- *        console.log('you chose %d "%s"', i, list[i]);
- *        process.stdin.destroy();
- *      });
- *
- * @param {Array} list
- * @param {Number|Function} index or fn
- * @param {Function} fn
- * @api public
- */
-
-Command.prototype.choose = function(list, index, fn){
-  var self = this
-    , hasDefault = 'number' == typeof index;
-
-  if (!hasDefault) {
-    fn = index;
-    index = null;
-  }
-
-  list.forEach(function(item, i){
-    if (hasDefault && i == index) {
-      console.log('* %d) %s', i + 1, item);
-    } else {
-      console.log('  %d) %s', i + 1, item);
-    }
-  });
-
-  function again() {
-    self.prompt('  : ', function(val){
-      val = parseInt(val, 10) - 1;
-      if (hasDefault && isNaN(val)) val = index;
-
-      if (null == list[val]) {
-        again();
-      } else {
-        fn(val, list[val]);
-      }
-    });
-  }
-
-  again();
-};
-
-
-/**
- * Output help information for this command
- *
- * @api public
- */
-
-Command.prototype.outputHelp = function(){
-  process.stdout.write(this.helpInformation());
-  this.emit('--help');
-};
-
-/**
- * Output help information and exit.
- *
- * @api public
- */
-
-Command.prototype.help = function(){
-  this.outputHelp();
-  process.exit();
-};
-
-/**
- * Camel-case the given `flag`
- *
- * @param {String} flag
- * @return {String}
- * @api private
- */
-
-function camelcase(flag) {
-  return flag.split('-').reduce(function(str, word){
-    return str + word[0].toUpperCase() + word.slice(1);
-  });
-}
-
-/**
- * Parse a boolean `str`.
- *
- * @param {String} str
- * @return {Boolean}
- * @api private
- */
-
-function parseBool(str) {
-  return /^y|yes|ok|true$/i.test(str);
-}
-
-/**
- * Pad `str` to `width`.
- *
- * @param {String} str
- * @param {Number} width
- * @return {String}
- * @api private
- */
-
-function pad(str, width) {
-  var len = Math.max(0, width - str.length);
-  return str + Array(len + 1).join(' ');
-}
-
-/**
- * Output help information if necessary
- *
- * @param {Command} command to output help for
- * @param {Array} array of options to search for -h or --help
- * @api private
- */
-
-function outputHelpIfNecessary(cmd, options) {
-  options = options || [];
-  for (var i = 0; i < options.length; i++) {
-    if (options[i] == '--help' || options[i] == '-h') {
-      cmd.outputHelp();
-      process.exit(0);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/README.md b/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/README.md
deleted file mode 100644
index a768e8f..0000000
--- a/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/README.md
+++ /dev/null
@@ -1,101 +0,0 @@
-keypress
-========
-### Make any Node ReadableStream emit "keypress" events
-
-
-Previous to Node `v0.8.x`, there was an undocumented `"keypress"` event that
-`process.stdin` would emit when it was a TTY. Some people discovered this hidden
-gem, and started using it in their own code.
-
-Now in Node `v0.8.x`, this `"keypress"` event does not get emitted by default,
-but rather only when it is being used in conjuction with the `readline` (or by
-extension, the `repl`) module.
-
-This module is the exact logic from the node `v0.8.x` releases ripped out into its
-own module.
-
-__Bonus:__ Now with mouse support!
-
-Installation
-------------
-
-Install with `npm`:
-
-``` bash
-$ npm install keypress
-```
-
-Or add it to the `"dependencies"` section of your _package.json_ file.
-
-
-Example
--------
-
-#### Listening for "keypress" events
-
-``` js
-var keypress = require('keypress');
-
-// make `process.stdin` begin emitting "keypress" events
-keypress(process.stdin);
-
-// listen for the "keypress" event
-process.stdin.on('keypress', function (ch, key) {
-  console.log('got "keypress"', key);
-  if (key && key.ctrl && key.name == 'c') {
-    process.stdin.pause();
-  }
-});
-
-process.stdin.setRawMode(true);
-process.stdin.resume();
-```
-
-#### Listening for "mousepress" events
-
-``` js
-var keypress = require('keypress');
-
-// make `process.stdin` begin emitting "mousepress" (and "keypress") events
-keypress(process.stdin);
-
-// you must enable the mouse events before they will begin firing
-keypress.enableMouse(process.stdout);
-
-process.stdin.on('mousepress', function (info) {
-  console.log('got "mousepress" event at %d x %d', info.x, info.y);
-});
-
-process.on('exit', function () {
-  // disable mouse on exit, so that the state
-  // is back to normal for the terminal
-  keypress.disableMouse(process.stdout);
-});
-```
-
-
-License
--------
-
-(The MIT License)
-
-Copyright (c) 2012 Nathan Rajlich &lt;nathan@tootallnate.net&gt;
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/index.js b/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/index.js
deleted file mode 100644
index c2ba488..0000000
--- a/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/index.js
+++ /dev/null
@@ -1,346 +0,0 @@
-
-/**
- * This module offers the internal "keypress" functionality from node-core's
- * `readline` module, for your own programs and modules to use.
- *
- * Usage:
- *
- *   require('keypress')(process.stdin);
- *
- *   process.stdin.on('keypress', function (ch, key) {
- *     console.log(ch, key);
- *     if (key.ctrl && key.name == 'c') {
- *       process.stdin.pause();
- *     }
- *   });
- *   proces.stdin.resume();
- */
-var exports = module.exports = keypress;
-
-exports.enableMouse = function (stream) {
-  stream.write('\x1b' +'[?1000h')
-}
-
-exports.disableMouse = function (stream) {
-  stream.write('\x1b' +'[?1000l')
-}
-
-
-/**
- * accepts a readable Stream instance and makes it emit "keypress" events
- */
-
-function keypress(stream) {
-  if (isEmittingKeypress(stream)) return;
-  stream._emitKeypress = true;
-
-  function onData(b) {
-    if (stream.listeners('keypress').length > 0) {
-      emitKey(stream, b);
-    } else {
-      // Nobody's watching anyway
-      stream.removeListener('data', onData);
-      stream.on('newListener', onNewListener);
-    }
-  }
-
-  function onNewListener(event) {
-    if (event == 'keypress') {
-      stream.on('data', onData);
-      stream.removeListener('newListener', onNewListener);
-    }
-  }
-
-  if (stream.listeners('keypress').length > 0) {
-    stream.on('data', onData);
-  } else {
-    stream.on('newListener', onNewListener);
-  }
-}
-
-/**
- * Returns `true` if the stream is already emitting "keypress" events.
- * `false` otherwise.
- */
-
-function isEmittingKeypress(stream) {
-  var rtn = stream._emitKeypress;
-  if (!rtn) {
-    // hack: check for the v0.6.x "data" event
-    stream.listeners('data').forEach(function (l) {
-      if (l.name == 'onData' && /emitKey/.test(l.toString())) {
-        rtn = true;
-        stream._emitKeypress = true;
-      }
-    });
-  }
-  if (!rtn) {
-    // hack: check for the v0.6.x "newListener" event
-    stream.listeners('newListener').forEach(function (l) {
-      if (l.name == 'onNewListener' && /keypress/.test(l.toString())) {
-        rtn = true;
-        stream._emitKeypress = true;
-      }
-    });
-  }
-  return rtn;
-}
-
-
-/*
-  Some patterns seen in terminal key escape codes, derived from combos seen
-  at http://www.midnight-commander.org/browser/lib/tty/key.c
-
-  ESC letter
-  ESC [ letter
-  ESC [ modifier letter
-  ESC [ 1 ; modifier letter
-  ESC [ num char
-  ESC [ num ; modifier char
-  ESC O letter
-  ESC O modifier letter
-  ESC O 1 ; modifier letter
-  ESC N letter
-  ESC [ [ num ; modifier char
-  ESC [ [ 1 ; modifier letter
-  ESC ESC [ num char
-  ESC ESC O letter
-
-  - char is usually ~ but $ and ^ also happen with rxvt
-  - modifier is 1 +
-                (shift     * 1) +
-                (left_alt  * 2) +
-                (ctrl      * 4) +
-                (right_alt * 8)
-  - two leading ESCs apparently mean the same as one leading ESC
-*/
-
-// Regexes used for ansi escape code splitting
-var metaKeyCodeRe = /^(?:\x1b)([a-zA-Z0-9])$/;
-var functionKeyCodeRe =
-    /^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/;
-
-function emitKey(stream, s) {
-  var ch,
-      key = {
-        name: undefined,
-        ctrl: false,
-        meta: false,
-        shift: false
-      },
-      parts;
-
-  if (Buffer.isBuffer(s)) {
-    if (s[0] > 127 && s[1] === undefined) {
-      s[0] -= 128;
-      s = '\x1b' + s.toString(stream.encoding || 'utf-8');
-    } else {
-      s = s.toString(stream.encoding || 'utf-8');
-    }
-  }
-
-  key.sequence = s;
-
-  if (s === '\r' || s === '\n') {
-    // enter
-    key.name = 'enter';
-
-  } else if (s === '\t') {
-    // tab
-    key.name = 'tab';
-
-  } else if (s === '\b' || s === '\x7f' ||
-             s === '\x1b\x7f' || s === '\x1b\b') {
-    // backspace or ctrl+h
-    key.name = 'backspace';
-    key.meta = (s.charAt(0) === '\x1b');
-
-  } else if (s === '\x1b' || s === '\x1b\x1b') {
-    // escape key
-    key.name = 'escape';
-    key.meta = (s.length === 2);
-
-  } else if (s === ' ' || s === '\x1b ') {
-    key.name = 'space';
-    key.meta = (s.length === 2);
-
-  } else if (s <= '\x1a') {
-    // ctrl+letter
-    key.name = String.fromCharCode(s.charCodeAt(0) + 'a'.charCodeAt(0) - 1);
-    key.ctrl = true;
-
-  } else if (s.length === 1 && s >= 'a' && s <= 'z') {
-    // lowercase letter
-    key.name = s;
-
-  } else if (s.length === 1 && s >= 'A' && s <= 'Z') {
-    // shift+letter
-    key.name = s.toLowerCase();
-    key.shift = true;
-
-  } else if (parts = metaKeyCodeRe.exec(s)) {
-    // meta+character key
-    key.name = parts[1].toLowerCase();
-    key.meta = true;
-    key.shift = /^[A-Z]$/.test(parts[1]);
-
-  } else if (parts = functionKeyCodeRe.exec(s)) {
-    // ansi escape sequence
-
-    // reassemble the key code leaving out leading \x1b's,
-    // the modifier key bitflag and any meaningless "1;" sequence
-    var code = (parts[1] || '') + (parts[2] || '') +
-               (parts[4] || '') + (parts[6] || ''),
-        modifier = (parts[3] || parts[5] || 1) - 1;
-
-    // Parse the key modifier
-    key.ctrl = !!(modifier & 4);
-    key.meta = !!(modifier & 10);
-    key.shift = !!(modifier & 1);
-    key.code = code;
-
-    // Parse the key itself
-    switch (code) {
-      /* xterm/gnome ESC O letter */
-      case 'OP': key.name = 'f1'; break;
-      case 'OQ': key.name = 'f2'; break;
-      case 'OR': key.name = 'f3'; break;
-      case 'OS': key.name = 'f4'; break;
-
-      /* xterm/rxvt ESC [ number ~ */
-      case '[11~': key.name = 'f1'; break;
-      case '[12~': key.name = 'f2'; break;
-      case '[13~': key.name = 'f3'; break;
-      case '[14~': key.name = 'f4'; break;
-
-      /* from Cygwin and used in libuv */
-      case '[[A': key.name = 'f1'; break;
-      case '[[B': key.name = 'f2'; break;
-      case '[[C': key.name = 'f3'; break;
-      case '[[D': key.name = 'f4'; break;
-      case '[[E': key.name = 'f5'; break;
-
-      /* common */
-      case '[15~': key.name = 'f5'; break;
-      case '[17~': key.name = 'f6'; break;
-      case '[18~': key.name = 'f7'; break;
-      case '[19~': key.name = 'f8'; break;
-      case '[20~': key.name = 'f9'; break;
-      case '[21~': key.name = 'f10'; break;
-      case '[23~': key.name = 'f11'; break;
-      case '[24~': key.name = 'f12'; break;
-
-      /* xterm ESC [ letter */
-      case '[A': key.name = 'up'; break;
-      case '[B': key.name = 'down'; break;
-      case '[C': key.name = 'right'; break;
-      case '[D': key.name = 'left'; break;
-      case '[E': key.name = 'clear'; break;
-      case '[F': key.name = 'end'; break;
-      case '[H': key.name = 'home'; break;
-
-      /* xterm/gnome ESC O letter */
-      case 'OA': key.name = 'up'; break;
-      case 'OB': key.name = 'down'; break;
-      case 'OC': key.name = 'right'; break;
-      case 'OD': key.name = 'left'; break;
-      case 'OE': key.name = 'clear'; break;
-      case 'OF': key.name = 'end'; break;
-      case 'OH': key.name = 'home'; break;
-
-      /* xterm/rxvt ESC [ number ~ */
-      case '[1~': key.name = 'home'; break;
-      case '[2~': key.name = 'insert'; break;
-      case '[3~': key.name = 'delete'; break;
-      case '[4~': key.name = 'end'; break;
-      case '[5~': key.name = 'pageup'; break;
-      case '[6~': key.name = 'pagedown'; break;
-
-      /* putty */
-      case '[[5~': key.name = 'pageup'; break;
-      case '[[6~': key.name = 'pagedown'; break;
-
-      /* rxvt */
-      case '[7~': key.name = 'home'; break;
-      case '[8~': key.name = 'end'; break;
-
-      /* rxvt keys with modifiers */
-      case '[a': key.name = 'up'; key.shift = true; break;
-      case '[b': key.name = 'down'; key.shift = true; break;
-      case '[c': key.name = 'right'; key.shift = true; break;
-      case '[d': key.name = 'left'; key.shift = true; break;
-      case '[e': key.name = 'clear'; key.shift = true; break;
-
-      case '[2$': key.name = 'insert'; key.shift = true; break;
-      case '[3$': key.name = 'delete'; key.shift = true; break;
-      case '[5$': key.name = 'pageup'; key.shift = true; break;
-      case '[6$': key.name = 'pagedown'; key.shift = true; break;
-      case '[7$': key.name = 'home'; key.shift = true; break;
-      case '[8$': key.name = 'end'; key.shift = true; break;
-
-      case 'Oa': key.name = 'up'; key.ctrl = true; break;
-      case 'Ob': key.name = 'down'; key.ctrl = true; break;
-      case 'Oc': key.name = 'right'; key.ctrl = true; break;
-      case 'Od': key.name = 'left'; key.ctrl = true; break;
-      case 'Oe': key.name = 'clear'; key.ctrl = true; break;
-
-      case '[2^': key.name = 'insert'; key.ctrl = true; break;
-      case '[3^': key.name = 'delete'; key.ctrl = true; break;
-      case '[5^': key.name = 'pageup'; key.ctrl = true; break;
-      case '[6^': key.name = 'pagedown'; key.ctrl = true; break;
-      case '[7^': key.name = 'home'; key.ctrl = true; break;
-      case '[8^': key.name = 'end'; key.ctrl = true; break;
-
-      /* misc. */
-      case '[Z': key.name = 'tab'; key.shift = true; break;
-      default: key.name = 'undefined'; break;
-
-    }
-  } else if (s.length > 1 && s[0] !== '\x1b') {
-    // Got a longer-than-one string of characters.
-    // Probably a paste, since it wasn't a control sequence.
-    Array.prototype.forEach.call(s, function(c) {
-      emitKey(stream, c);
-    });
-    return;
-  }
-
-  if (key.code == '[M') {
-    key.name = 'mouse';
-    var s = key.sequence;
-    var b = s.charCodeAt(3);
-    key.x = s.charCodeAt(4) - 040;
-    key.y = s.charCodeAt(5) - 040;
-
-    key.scroll = 0;
-
-    key.ctrl  = !!(1<<4 & b);
-    key.meta  = !!(1<<3 & b);
-    key.shift = !!(1<<2 & b);
-
-    key.release = (3 & b) === 3;
-
-    if (1<<6 & b) { //scroll
-      key.scroll = 1 & b ? 1 : -1;
-    }
-
-    if (!key.release && !key.scroll) {
-      key.button = b & 3;
-    }
-  }
-
-  // Don't emit a key if no name was found
-  if (key.name === undefined) {
-    key = undefined;
-  }
-
-  if (s.length === 1) {
-    ch = s;
-  }
-
-  if (key && key.name == 'mouse') {
-    stream.emit('mousepress', key)
-  } else if (key || ch) {
-    stream.emit('keypress', ch, key);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/package.json b/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/package.json
deleted file mode 100644
index c546205..0000000
--- a/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/package.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-  "name": "keypress",
-  "version": "0.1.0",
-  "description": "Make any Node ReadableStream emit \"keypress\" events",
-  "author": {
-    "name": "Nathan Rajlich",
-    "email": "nathan@tootallnate.net",
-    "url": "http://tootallnate.net"
-  },
-  "main": "index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/TooTallNate/keypress.git"
-  },
-  "keywords": [
-    "keypress",
-    "readline",
-    "core"
-  ],
-  "license": "MIT",
-  "readme": "keypress\n========\n### Make any Node ReadableStream emit \"keypress\" events\n\n\nPrevious to Node `v0.8.x`, there was an undocumented `\"keypress\"` event that\n`process.stdin` would emit when it was a TTY. Some people discovered this hidden\ngem, and started using it in their own code.\n\nNow in Node `v0.8.x`, this `\"keypress\"` event does not get emitted by default,\nbut rather only when it is being used in conjuction with the `readline` (or by\nextension, the `repl`) module.\n\nThis module is the exact logic from the node `v0.8.x` releases ripped out into its\nown module.\n\n__Bonus:__ Now with mouse support!\n\nInstallation\n------------\n\nInstall with `npm`:\n\n``` bash\n$ npm install keypress\n```\n\nOr add it to the `\"dependencies\"` section of your _package.json_ file.\n\n\nExample\n-------\n\n#### Listening for \"keypress\" events\n\n``` js\nvar keypress = require('keypress');\n\n// make `process.stdin` begin emitting \"keypress\" events\nkeypress(process.
 stdin);\n\n// listen for the \"keypress\" event\nprocess.stdin.on('keypress', function (ch, key) {\n  console.log('got \"keypress\"', key);\n  if (key && key.ctrl && key.name == 'c') {\n    process.stdin.pause();\n  }\n});\n\nprocess.stdin.setRawMode(true);\nprocess.stdin.resume();\n```\n\n#### Listening for \"mousepress\" events\n\n``` js\nvar keypress = require('keypress');\n\n// make `process.stdin` begin emitting \"mousepress\" (and \"keypress\") events\nkeypress(process.stdin);\n\n// you must enable the mouse events before they will begin firing\nkeypress.enableMouse(process.stdout);\n\nprocess.stdin.on('mousepress', function (info) {\n  console.log('got \"mousepress\" event at %d x %d', info.x, info.y);\n});\n\nprocess.on('exit', function () {\n  // disable mouse on exit, so that the state\n  // is back to normal for the terminal\n  keypress.disableMouse(process.stdout);\n});\n```\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich &lt;nathan@tootal
 lnate.net&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH 
 THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/TooTallNate/keypress/issues"
-  },
-  "homepage": "https://github.com/TooTallNate/keypress",
-  "_id": "keypress@0.1.0",
-  "_from": "keypress@0.1.x"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/test.js b/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/test.js
deleted file mode 100644
index c3f61d7..0000000
--- a/web/demos/package/node_modules/express/node_modules/commander/node_modules/keypress/test.js
+++ /dev/null
@@ -1,28 +0,0 @@
-
-var keypress = require('./')
-keypress(process.stdin)
-
-if (process.stdin.setRawMode)
-  process.stdin.setRawMode(true)
-else
-  require('tty').setRawMode(true)
-
-process.stdin.on('keypress', function (c, key) {
-  console.log(0, c, key)
-  if (key && key.ctrl && key.name == 'c') {
-    process.stdin.pause()
-  }
-})
-process.stdin.on('mousepress', function (mouse) {
-  console.log(mouse)
-})
-
-keypress.enableMouse(process.stdout)
-process.on('exit', function () {
-  //disable mouse on exit, so that the state is back to normal
-  //for the terminal.
-  keypress.disableMouse(process.stdout)
-})
-
-process.stdin.resume()
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/commander/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/commander/package.json b/web/demos/package/node_modules/express/node_modules/commander/package.json
deleted file mode 100644
index ffec062..0000000
--- a/web/demos/package/node_modules/express/node_modules/commander/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  "name": "commander",
-  "version": "1.2.0",
-  "description": "the complete solution for node.js command-line programs",
-  "keywords": [
-    "command",
-    "option",
-    "parser",
-    "prompt",
-    "stdin"
-  ],
-  "author": {
-    "name": "TJ Holowaychuk",
-    "email": "tj@vision-media.ca"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/visionmedia/commander.js.git"
-  },
-  "dependencies": {
-    "keypress": "0.1.x"
-  },
-  "devDependencies": {
-    "should": ">= 0.0.1"
-  },
-  "scripts": {
-    "test": "make test"
-  },
-  "main": "index",
-  "engines": {
-    "node": ">= 0.6.x"
-  },
-  "readme": "# Commander.js\n\n  The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n    $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n  .version('0.0.1')\n  .option('-p, --peppers', 'Add peppers')\n  .option('-P, --pineapple', 'Add pineapple')\n  .option('-b, --bbq', 'Add bbq sauce')\n  .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]'
 , 'marble')\n  .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log('  - peppers');\nif (program.pineapple) console.log('  - pineappe');\nif (program.bbq) console.log('  - bbq');\nconsole.log('  - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n```  \n $ ./examples/pizza --help\n\n   Usage: pizza [options]\n\n   Options:\n\n     -V, --version        output the version number\n     -p, --peppers        Add peppers\n     -P, --pineapple      Add pineappe\n     -b, --bbq            Add bbq sauce\n     -c, --cheese <type>  Add the specified type of cheese [marble]\n     -h, --he
 lp           output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n  return val.split('..').map(Number);\n}\n\nfunction list(val) {\n  return val.split(',');\n}\n\nprogram\n  .version('0.0.1')\n  .usage('[options] <file ...>')\n  .option('-i, --integer <n>', 'An integer argument', parseInt)\n  .option('-f, --float <n>', 'A float argument', parseFloat)\n  .option('-r, --range <a>..<b>', 'A range', range)\n  .option('-l, --list <items>', 'A list', list)\n  .option('-o, --optional [value]', 'An optional value')\n  .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\"
 . Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n  return val.split(',').map(Number);\n}\n\nprogram\n  .version('0.0.1')\n  .option('-f, --foo', 'enable some foo')\n  .option('-b, --bar', 'enable some bar')\n  .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n  console.log('  Examples:');\n  console.log('');\n  console.log('    $ custom-help --help');\n  console.log('    $ custom-help -h');\n  console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n  -h, --help    
  output usage information\n  -V, --version  output the version number\n  -f, --foo      enable some foo\n  -b, --bar      enable some bar\n  -B, --baz      enable some baz\n\nExamples:\n\n  $ custom-help --help\n  $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n  console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n  console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n  console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n  console.log('date: %s', date);\n});\n```\n\n```js\nprogram.prompt('Email: ', /^.+@.+\\..+$/, function(email){\n  console.log('email: %j', email);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n  console.log('got \"%s\"', pass);
 \n  process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Password: ', '*', function(pass){\n  console.log('got \"%s\"', pass);\n  process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n  console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n  console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## .outputHelp()\n\n  Output help information without exiting.\n\n## .help()\n\n  Output help information and exit immediately.\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress
  bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND N
 ONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
-  "readmeFilename": "Readme.md",
-  "bugs": {
-    "url": "https://github.com/visionmedia/commander.js/issues"
-  },
-  "homepage": "https://github.com/visionmedia/commander.js",
-  "_id": "commander@1.2.0",
-  "_from": "commander@1.2.0"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/.npmignore b/web/demos/package/node_modules/express/node_modules/connect/.npmignore
deleted file mode 100644
index 9046dde..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/.npmignore
+++ /dev/null
@@ -1,12 +0,0 @@
-*.markdown
-*.md
-.git*
-Makefile
-benchmarks/
-docs/
-examples/
-install.sh
-support/
-test/
-.DS_Store
-coverage.html

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/.travis.yml b/web/demos/package/node_modules/express/node_modules/connect/.travis.yml
deleted file mode 100644
index a12e3f0..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
-  - "0.8"
-  - "0.10"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/LICENSE b/web/demos/package/node_modules/express/node_modules/connect/LICENSE
deleted file mode 100644
index 0c5d22d..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2010 Sencha Inc.
-Copyright (c) 2011 LearnBoost
-Copyright (c) 2011 TJ Holowaychuk
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/Readme.md b/web/demos/package/node_modules/express/node_modules/connect/Readme.md
deleted file mode 100644
index 7d65f9c..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/Readme.md
+++ /dev/null
@@ -1,133 +0,0 @@
-[![build status](https://secure.travis-ci.org/senchalabs/connect.png)](http://travis-ci.org/senchalabs/connect)
-# Connect
-
-  Connect is an extensible HTTP server framework for [node](http://nodejs.org), providing high performance "plugins" known as _middleware_.
-
- Connect is bundled with over _20_ commonly used middleware, including
- a logger, session support, cookie parser, and [more](http://senchalabs.github.com/connect). Be sure to view the 2.x [documentation](http://senchalabs.github.com/connect/).
-
-```js
-var connect = require('connect')
-  , http = require('http');
-
-var app = connect()
-  .use(connect.favicon())
-  .use(connect.logger('dev'))
-  .use(connect.static('public'))
-  .use(connect.directory('public'))
-  .use(connect.cookieParser())
-  .use(connect.session({ secret: 'my secret here' }))
-  .use(function(req, res){
-    res.end('Hello from Connect!\n');
-  });
-
-http.createServer(app).listen(3000);
-```
-
-## Middleware
-
-  - [csrf](http://www.senchalabs.org/connect/csrf.html)
-  - [basicAuth](http://www.senchalabs.org/connect/basicAuth.html)
-  - [bodyParser](http://www.senchalabs.org/connect/bodyParser.html)
-  - [json](http://www.senchalabs.org/connect/json.html)
-  - [multipart](http://www.senchalabs.org/connect/multipart.html)
-  - [urlencoded](http://www.senchalabs.org/connect/urlencoded.html)
-  - [cookieParser](http://www.senchalabs.org/connect/cookieParser.html)
-  - [directory](http://www.senchalabs.org/connect/directory.html)
-  - [compress](http://www.senchalabs.org/connect/compress.html)
-  - [errorHandler](http://www.senchalabs.org/connect/errorHandler.html)
-  - [favicon](http://www.senchalabs.org/connect/favicon.html)
-  - [limit](http://www.senchalabs.org/connect/limit.html)
-  - [logger](http://www.senchalabs.org/connect/logger.html)
-  - [methodOverride](http://www.senchalabs.org/connect/methodOverride.html)
-  - [query](http://www.senchalabs.org/connect/query.html)
-  - [responseTime](http://www.senchalabs.org/connect/responseTime.html)
-  - [session](http://www.senchalabs.org/connect/session.html)
-  - [static](http://www.senchalabs.org/connect/static.html)
-  - [staticCache](http://www.senchalabs.org/connect/staticCache.html)
-  - [vhost](http://www.senchalabs.org/connect/vhost.html)
-  - [subdomains](http://www.senchalabs.org/connect/subdomains.html)
-  - [cookieSession](http://www.senchalabs.org/connect/cookieSession.html)
-
-## Running Tests
-
-first:
-
-    $ npm install -d
-
-then:
-
-    $ make test
-
-## Authors
-
- Below is the output from [git-summary](http://github.com/visionmedia/git-extras).
-
-
-     project: connect
-     commits: 2033
-     active : 301 days
-     files  : 171
-     authors: 
-      1414	Tj Holowaychuk          69.6%
-       298	visionmedia             14.7%
-       191	Tim Caswell             9.4%
-        51	TJ Holowaychuk          2.5%
-        10	Ryan Olds               0.5%
-         8	Astro                   0.4%
-         5	Nathan Rajlich          0.2%
-         5	Jakub NeÅ”etřil          0.2%
-         3	Daniel Dickison         0.1%
-         3	David Rio Deiros        0.1%
-         3	Alexander Simmerl       0.1%
-         3	Andreas Lind Petersen   0.1%
-         2	Aaron Heckmann          0.1%
-         2	Jacques Crocker         0.1%
-         2	Fabian Jakobs           0.1%
-         2	Brian J Brennan         0.1%
-         2	Adam Malcontenti-Wilson 0.1%
-         2	Glen Mailer             0.1%
-         2	James Campos            0.1%
-         1	Trent Mick              0.0%
-         1	Troy Kruthoff           0.0%
-         1	Wei Zhu                 0.0%
-         1	comerc                  0.0%
-         1	darobin                 0.0%
-         1	nateps                  0.0%
-         1	Marco Sanson            0.0%
-         1	Arthur Taylor           0.0%
-         1	Aseem Kishore           0.0%
-         1	Bart Teeuwisse          0.0%
-         1	Cameron Howey           0.0%
-         1	Chad Weider             0.0%
-         1	Craig Barnes            0.0%
-         1	Eran Hammer-Lahav       0.0%
-         1	Gregory McWhirter       0.0%
-         1	Guillermo Rauch         0.0%
-         1	Jae Kwon                0.0%
-         1	Jakub Nesetril          0.0%
-         1	Joshua Peek             0.0%
-         1	Jxck                    0.0%
-         1	AJ ONeal                0.0%
-         1	Michael Hemesath        0.0%
-         1	Morten Siebuhr          0.0%
-         1	Samori Gorse            0.0%
-         1	Tom Jensen              0.0%
-
-## Node Compatibility
-
-  Connect `< 1.x` is compatible with node 0.2.x
-
-
-  Connect `1.x` is compatible with node 0.4.x
-
-
-  Connect (_master_) `2.x` is compatible with node 0.6.x
-
-## CLA
-
- [http://sencha.com/cla](http://sencha.com/cla)
-
-## License
-
-View the [LICENSE](https://github.com/senchalabs/connect/blob/master/LICENSE) file. The [Silk](http://www.famfamfam.com/lab/icons/silk/) icons used by the `directory` middleware created by/copyright of [FAMFAMFAM](http://www.famfamfam.com/).

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/index.js b/web/demos/package/node_modules/express/node_modules/connect/index.js
deleted file mode 100644
index 23240ee..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-
-module.exports = process.env.CONNECT_COV
-  ? require('./lib-cov/connect')
-  : require('./lib/connect');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/cache.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/cache.js b/web/demos/package/node_modules/express/node_modules/connect/lib/cache.js
deleted file mode 100644
index 052fcdb..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/cache.js
+++ /dev/null
@@ -1,81 +0,0 @@
-
-/*!
- * Connect - Cache
- * Copyright(c) 2011 Sencha Inc.
- * MIT Licensed
- */
-
-/**
- * Expose `Cache`.
- */
-
-module.exports = Cache;
-
-/**
- * LRU cache store.
- *
- * @param {Number} limit
- * @api private
- */
-
-function Cache(limit) {
-  this.store = {};
-  this.keys = [];
-  this.limit = limit;
-}
-
-/**
- * Touch `key`, promoting the object.
- *
- * @param {String} key
- * @param {Number} i
- * @api private
- */
-
-Cache.prototype.touch = function(key, i){
-  this.keys.splice(i,1);
-  this.keys.push(key);
-};
-
-/**
- * Remove `key`.
- *
- * @param {String} key
- * @api private
- */
-
-Cache.prototype.remove = function(key){
-  delete this.store[key];
-};
-
-/**
- * Get the object stored for `key`.
- *
- * @param {String} key
- * @return {Array}
- * @api private
- */
-
-Cache.prototype.get = function(key){
-  return this.store[key];
-};
-
-/**
- * Add a cache `key`.
- *
- * @param {String} key
- * @return {Array}
- * @api private
- */
-
-Cache.prototype.add = function(key){
-  // initialize store
-  var len = this.keys.push(key);
-
-  // limit reached, invalidate LRU
-  if (len > this.limit) this.remove(this.keys.shift());
-
-  var arr = this.store[key] = [];
-  arr.createdAt = new Date;
-  return arr;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/connect.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/connect.js b/web/demos/package/node_modules/express/node_modules/connect/lib/connect.js
deleted file mode 100644
index 72961dc..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/connect.js
+++ /dev/null
@@ -1,92 +0,0 @@
-/*!
- * Connect
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var EventEmitter = require('events').EventEmitter
-  , proto = require('./proto')
-  , utils = require('./utils')
-  , path = require('path')
-  , basename = path.basename
-  , fs = require('fs');
-
-// node patches
-
-require('./patch');
-
-// expose createServer() as the module
-
-exports = module.exports = createServer;
-
-/**
- * Framework version.
- */
-
-exports.version = '2.7.11';
-
-/**
- * Expose mime module.
- */
-
-exports.mime = require('./middleware/static').mime;
-
-/**
- * Expose the prototype.
- */
-
-exports.proto = proto;
-
-/**
- * Auto-load middleware getters.
- */
-
-exports.middleware = {};
-
-/**
- * Expose utilities.
- */
-
-exports.utils = utils;
-
-/**
- * Create a new connect server.
- *
- * @return {Function}
- * @api public
- */
-
-function createServer() {
-  function app(req, res, next){ app.handle(req, res, next); }
-  utils.merge(app, proto);
-  utils.merge(app, EventEmitter.prototype);
-  app.route = '/';
-  app.stack = [];
-  for (var i = 0; i < arguments.length; ++i) {
-    app.use(arguments[i]);
-  }
-  return app;
-};
-
-/**
- * Support old `.createServer()` method.
- */
-
-createServer.createServer = createServer;
-
-/**
- * Auto-load bundled middleware with getters.
- */
-
-fs.readdirSync(__dirname + '/middleware').forEach(function(filename){
-  if (!/\.js$/.test(filename)) return;
-  var name = basename(filename, '.js');
-  function load(){ return require('./middleware/' + name); }
-  exports.middleware.__defineGetter__(name, load);
-  exports.__defineGetter__(name, load);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/index.js b/web/demos/package/node_modules/express/node_modules/connect/lib/index.js
deleted file mode 100644
index 2618ddc..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/index.js
+++ /dev/null
@@ -1,50 +0,0 @@
-
-/**
- * Connect is a middleware framework for node,
- * shipping with over 18 bundled middleware and a rich selection of
- * 3rd-party middleware.
- *
- *     var app = connect()
- *       .use(connect.logger('dev'))
- *       .use(connect.static('public'))
- *       .use(function(req, res){
- *         res.end('hello world\n');
- *       })
- *      .listen(3000);
- *     
- * Installation:
- * 
- *     $ npm install connect
- *
- * Middleware:
- *
- *  - [logger](logger.html) request logger with custom format support
- *  - [csrf](csrf.html) Cross-site request forgery protection
- *  - [compress](compress.html) Gzip compression middleware
- *  - [basicAuth](basicAuth.html) basic http authentication
- *  - [bodyParser](bodyParser.html) extensible request body parser
- *  - [json](json.html) application/json parser
- *  - [urlencoded](urlencoded.html) application/x-www-form-urlencoded parser
- *  - [multipart](multipart.html) multipart/form-data parser
- *  - [timeout](timeout.html) request timeouts
- *  - [cookieParser](cookieParser.html) cookie parser
- *  - [session](session.html) session management support with bundled MemoryStore
- *  - [cookieSession](cookieSession.html) cookie-based session support
- *  - [methodOverride](methodOverride.html) faux HTTP method support
- *  - [responseTime](responseTime.html) calculates response-time and exposes via X-Response-Time
- *  - [staticCache](staticCache.html) memory cache layer for the static() middleware
- *  - [static](static.html) streaming static file server supporting `Range` and more
- *  - [directory](directory.html) directory listing middleware
- *  - [vhost](vhost.html) virtual host sub-domain mapping middleware
- *  - [favicon](favicon.html) efficient favicon server (with default icon)
- *  - [limit](limit.html) limit the bytesize of request bodies
- *  - [query](query.html) automatic querystring parser, populating `req.query`
- *  - [errorHandler](errorHandler.html) flexible error handler
- *
- * Links:
- * 
- *   - list of [3rd-party](https://github.com/senchalabs/connect/wiki) middleware
- *   - GitHub [repository](http://github.com/senchalabs/connect)
- *   - [test documentation](https://github.com/senchalabs/connect/blob/gh-pages/tests.md)
- * 
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js
deleted file mode 100644
index bc7ec97..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js
+++ /dev/null
@@ -1,103 +0,0 @@
-
-/*!
- * Connect - basicAuth
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var utils = require('../utils')
-  , unauthorized = utils.unauthorized;
-
-/**
- * Basic Auth:
- *
- * Enfore basic authentication by providing a `callback(user, pass)`,
- * which must return `true` in order to gain access. Alternatively an async
- * method is provided as well, invoking `callback(user, pass, callback)`. Populates
- * `req.user`. The final alternative is simply passing username / password
- * strings.
- *
- *  Simple username and password
- *
- *     connect(connect.basicAuth('username', 'password'));
- *
- *  Callback verification
- *
- *     connect()
- *       .use(connect.basicAuth(function(user, pass){
- *         return 'tj' == user & 'wahoo' == pass;
- *       }))
- *
- *  Async callback verification, accepting `fn(err, user)`.
- *
- *     connect()
- *       .use(connect.basicAuth(function(user, pass, fn){
- *         User.authenticate({ user: user, pass: pass }, fn);
- *       }))
- *
- * @param {Function|String} callback or username
- * @param {String} realm
- * @api public
- */
-
-module.exports = function basicAuth(callback, realm) {
-  var username, password;
-
-  // user / pass strings
-  if ('string' == typeof callback) {
-    username = callback;
-    password = realm;
-    if ('string' != typeof password) throw new Error('password argument required');
-    realm = arguments[2];
-    callback = function(user, pass){
-      return user == username && pass == password;
-    }
-  }
-
-  realm = realm || 'Authorization Required';
-
-  return function(req, res, next) {
-    var authorization = req.headers.authorization;
-
-    if (req.user) return next();
-    if (!authorization) return unauthorized(res, realm);
-
-    var parts = authorization.split(' ');
-
-    if (parts.length !== 2) return next(utils.error(400));
-
-    var scheme = parts[0]
-      , credentials = new Buffer(parts[1], 'base64').toString()
-      , index = credentials.indexOf(':');
-
-    if ('Basic' != scheme || index < 0) return next(utils.error(400));
-    
-    var user = credentials.slice(0, index)
-      , pass = credentials.slice(index + 1);
-
-    // async
-    if (callback.length >= 3) {
-      var pause = utils.pause(req);
-      callback(user, pass, function(err, user){
-        if (err || !user)  return unauthorized(res, realm);
-        req.user = req.remoteUser = user;
-        next();
-        pause.resume();
-      });
-    // sync
-    } else {
-      if (callback(user, pass)) {
-        req.user = req.remoteUser = user;
-        next();
-      } else {
-        unauthorized(res, realm);
-      }
-    }
-  }
-};
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js
deleted file mode 100644
index 9f692cd..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js
+++ /dev/null
@@ -1,61 +0,0 @@
-
-/*!
- * Connect - bodyParser
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var multipart = require('./multipart')
-  , urlencoded = require('./urlencoded')
-  , json = require('./json');
-
-/**
- * Body parser:
- * 
- *   Parse request bodies, supports _application/json_,
- *   _application/x-www-form-urlencoded_, and _multipart/form-data_.
- *
- *   This is equivalent to: 
- *
- *     app.use(connect.json());
- *     app.use(connect.urlencoded());
- *     app.use(connect.multipart());
- *
- * Examples:
- *
- *      connect()
- *        .use(connect.bodyParser())
- *        .use(function(req, res) {
- *          res.end('viewing user ' + req.body.user.name);
- *        });
- *
- *      $ curl -d 'user[name]=tj' http://local/
- *      $ curl -d '{"user":{"name":"tj"}}' -H "Content-Type: application/json" http://local/
- *
- *  View [json](json.html), [urlencoded](urlencoded.html), and [multipart](multipart.html) for more info.
- *
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-exports = module.exports = function bodyParser(options){
-  var _urlencoded = urlencoded(options)
-    , _multipart = multipart(options)
-    , _json = json(options);
-
-  return function bodyParser(req, res, next) {
-    _json(req, res, function(err){
-      if (err) return next(err);
-      _urlencoded(req, res, function(err){
-        if (err) return next(err);
-        _multipart(req, res, next);
-      });
-    });
-  }
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/compress.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/compress.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/compress.js
deleted file mode 100644
index 550e457..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/compress.js
+++ /dev/null
@@ -1,189 +0,0 @@
-/*!
- * Connect - compress
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var zlib = require('zlib');
-var utils = require('../utils');
-
-/**
- * Supported content-encoding methods.
- */
-
-exports.methods = {
-    gzip: zlib.createGzip
-  , deflate: zlib.createDeflate
-};
-
-/**
- * Default filter function.
- */
-
-exports.filter = function(req, res){
-  return /json|text|javascript|dart/.test(res.getHeader('Content-Type'));
-};
-
-/**
- * Compress:
- *
- * Compress response data with gzip/deflate.
- *
- * Filter:
- *
- *  A `filter` callback function may be passed to
- *  replace the default logic of:
- *
- *     exports.filter = function(req, res){
- *       return /json|text|javascript/.test(res.getHeader('Content-Type'));
- *     };
- *
- * Threshold:
- *
- *  Only compress the response if the byte size is at or above a threshold.
- *  Always compress while streaming.
- *
- *   - `threshold` - string representation of size or bytes as an integer.
- *
- * Options:
- *
- *  All remaining options are passed to the gzip/deflate
- *  creation functions. Consult node's docs for additional details.
- *
- *   - `chunkSize` (default: 16*1024)
- *   - `windowBits`
- *   - `level`: 0-9 where 0 is no compression, and 9 is slow but best compression
- *   - `memLevel`: 1-9 low is slower but uses less memory, high is fast but uses more
- *   - `strategy`: compression strategy
- *
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-module.exports = function compress(options) {
-  options = options || {};
-  var names = Object.keys(exports.methods)
-    , filter = options.filter || exports.filter
-    , threshold;
-
-  if (false === options.threshold || 0 === options.threshold) {
-    threshold = 0
-  } else if ('string' === typeof options.threshold) {
-    threshold = utils.parseBytes(options.threshold)
-  } else {
-    threshold = options.threshold || 1024
-  }
-
-  return function compress(req, res, next){
-    var accept = req.headers['accept-encoding']
-      , vary = res.getHeader('Vary')
-      , write = res.write
-      , end = res.end
-      , compress = true
-      , stream
-      , method;
-
-    // vary
-    if (!vary) {
-      res.setHeader('Vary', 'Accept-Encoding');
-    } else if (!~vary.indexOf('Accept-Encoding')) {
-      res.setHeader('Vary', vary + ', Accept-Encoding');
-    }
-
-    // see #724
-    req.on('close', function(){
-      res.write = res.end = function(){};
-    });
-
-    // proxy
-
-    res.write = function(chunk, encoding){
-      if (!this.headerSent) this._implicitHeader();
-      return stream
-        ? stream.write(new Buffer(chunk, encoding))
-        : write.call(res, chunk, encoding);
-    };
-
-    res.end = function(chunk, encoding){
-      if (chunk) {
-        if (!this.headerSent && getSize(chunk) < threshold) compress = false;
-        this.write(chunk, encoding);
-      } else if (!this.headerSent) {
-        // response size === 0
-        compress = false;
-      }
-      return stream
-        ? stream.end()
-        : end.call(res);
-    };
-
-    res.on('header', function(){
-      if (!compress) return;
-
-      var encoding = res.getHeader('Content-Encoding') || 'identity';
-
-      // already encoded
-      if ('identity' != encoding) return;
-
-      // default request filter
-      if (!filter(req, res)) return;
-
-      // SHOULD use identity
-      if (!accept) return;
-
-      // head
-      if ('HEAD' == req.method) return;
-
-      // default to gzip
-      if ('*' == accept.trim()) method = 'gzip';
-
-      // compression method
-      if (!method) {
-        for (var i = 0, len = names.length; i < len; ++i) {
-          if (~accept.indexOf(names[i])) {
-            method = names[i];
-            break;
-          }
-        }
-      }
-
-      // compression method
-      if (!method) return;
-
-      // compression stream
-      stream = exports.methods[method](options);
-
-      // header fields
-      res.setHeader('Content-Encoding', method);
-      res.removeHeader('Content-Length');
-
-      // compression
-
-      stream.on('data', function(chunk){
-        write.call(res, chunk);
-      });
-
-      stream.on('end', function(){
-        end.call(res);
-      });
-
-      stream.on('drain', function() {
-        res.emit('drain');
-      });
-    });
-
-    next();
-  };
-};
-
-function getSize(chunk) {
-  return Buffer.isBuffer(chunk)
-    ? chunk.length
-    : Buffer.byteLength(chunk);
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js
deleted file mode 100644
index 5da23f2..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js
+++ /dev/null
@@ -1,62 +0,0 @@
-
-/*!
- * Connect - cookieParser
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var utils = require('./../utils')
-  , cookie = require('cookie');
-
-/**
- * Cookie parser:
- *
- * Parse _Cookie_ header and populate `req.cookies`
- * with an object keyed by the cookie names. Optionally
- * you may enabled signed cookie support by passing
- * a `secret` string, which assigns `req.secret` so
- * it may be used by other middleware.
- *
- * Examples:
- *
- *     connect()
- *       .use(connect.cookieParser('optional secret string'))
- *       .use(function(req, res, next){
- *         res.end(JSON.stringify(req.cookies));
- *       })
- *
- * @param {String} secret
- * @return {Function}
- * @api public
- */
-
-module.exports = function cookieParser(secret){
-  return function cookieParser(req, res, next) {
-    if (req.cookies) return next();
-    var cookies = req.headers.cookie;
-
-    req.secret = secret;
-    req.cookies = {};
-    req.signedCookies = {};
-
-    if (cookies) {
-      try {
-        req.cookies = cookie.parse(cookies);
-        if (secret) {
-          req.signedCookies = utils.parseSignedCookies(req.cookies, secret);
-          req.signedCookies = utils.parseJSONCookies(req.signedCookies);
-        }
-        req.cookies = utils.parseJSONCookies(req.cookies);
-      } catch (err) {
-        err.status = 400;
-        return next(err);
-      }
-    }
-    next();
-  };
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js b/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js
deleted file mode 100644
index 21011b8..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js
+++ /dev/null
@@ -1,115 +0,0 @@
-/*!
- * Connect - cookieSession
- * Copyright(c) 2011 Sencha Inc.
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var utils = require('./../utils')
-  , Cookie = require('./session/cookie')
-  , debug = require('debug')('connect:cookieSession')
-  , signature = require('cookie-signature')
-  , crc32 = require('buffer-crc32');
-
-/**
- * Cookie Session:
- *
- *   Cookie session middleware.
- *
- *      var app = connect();
- *      app.use(connect.cookieParser());
- *      app.use(connect.cookieSession({ secret: 'tobo!', cookie: { maxAge: 60 * 60 * 1000 }}));
- *
- * Options:
- *
- *   - `key` cookie name defaulting to `connect.sess`
- *   - `secret` prevents cookie tampering
- *   - `cookie` session cookie settings, defaulting to `{ path: '/', httpOnly: true, maxAge: null }`
- *   - `proxy` trust the reverse proxy when setting secure cookies (via "x-forwarded-proto")
- *
- * Clearing sessions:
- *
- *  To clear the session simply set its value to `null`,
- *  `cookieSession()` will then respond with a 1970 Set-Cookie.
- *
- *     req.session = null;
- *
- * @param {Object} options
- * @return {Function}
- * @api public
- */
-
-module.exports = function cookieSession(options){
-  // TODO: utilize Session/Cookie to unify API
-  options = options || {};
-  var key = options.key || 'connect.sess'
-    , trustProxy = options.proxy;
-
-  return function cookieSession(req, res, next) {
-
-    // req.secret is for backwards compatibility
-    var secret = options.secret || req.secret;
-    if (!secret) throw new Error('`secret` option required for cookie sessions');
-
-    // default session
-    req.session = {};
-    var cookie = req.session.cookie = new Cookie(options.cookie);
-
-    // pathname mismatch
-    if (0 != req.originalUrl.indexOf(cookie.path)) return next();
-
-    // cookieParser secret
-    if (!options.secret && req.secret) {
-      req.session = req.signedCookies[key] || {};
-      req.session.cookie = cookie;
-    } else {
-      // TODO: refactor
-      var rawCookie = req.cookies[key];
-      if (rawCookie) {
-        var unsigned = utils.parseSignedCookie(rawCookie, secret);
-        if (unsigned) {
-          var originalHash = crc32.signed(unsigned);
-          req.session = utils.parseJSONCookie(unsigned) || {};
-          req.session.cookie = cookie;
-        }
-      }
-    }
-
-    res.on('header', function(){
-      // removed
-      if (!req.session) {
-        debug('clear session');
-        cookie.expires = new Date(0);
-        res.setHeader('Set-Cookie', cookie.serialize(key, ''));
-        return;
-      }
-
-      delete req.session.cookie;
-
-      // check security
-      var proto = (req.headers['x-forwarded-proto'] || '').toLowerCase()
-        , tls = req.connection.encrypted || (trustProxy && 'https' == proto.split(/\s*,\s*/)[0]);
-
-      // only send secure cookies via https
-      if (cookie.secure && !tls) return debug('not secured');
-
-      // serialize
-      debug('serializing %j', req.session);
-      var val = 'j:' + JSON.stringify(req.session);
-
-      // compare hashes, no need to set-cookie if unchanged
-      if (originalHash == crc32.signed(val)) return debug('unmodified session');
-
-      // set-cookie
-      val = 's:' + signature.sign(val, secret);
-      val = cookie.serialize(key, val);
-      debug('set-cookie %j', cookie);
-      res.setHeader('Set-Cookie', val);
-    });
-
-    next();
-  };
-};



[43/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/scripts/9f21e177.modules.js
----------------------------------------------------------------------
diff --git a/web/demos/package/app/scripts/9f21e177.modules.js b/web/demos/package/app/scripts/9f21e177.modules.js
deleted file mode 100644
index 53d94ed..0000000
--- a/web/demos/package/app/scripts/9f21e177.modules.js
+++ /dev/null
@@ -1,29 +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.
- */
-function Gauge(a,b){this.element=a;var c=this;this.configure=function(a){this.config=a,this.config.size=.9*this.config.size,this.config.raduis=.97*this.config.size/2,this.config.cx=this.config.size/2,this.config.cy=this.config.size/2,this.config.min=void 0!=a.min?a.min:0,this.config.max=void 0!=a.max?a.max:100,this.config.range=this.config.max-this.config.min,this.config.majorTicks=a.majorTicks||5,this.config.minorTicks=a.minorTicks||2,this.config.greenColor=a.greenColor||"#109618",this.config.yellowColor=a.yellowColor||"#FF9900",this.config.redColor=a.redColor||"#DC3912",this.config.transitionDuration=a.transitionDuration||500},this.render=function(){this.body=d3.select(this.element).append("svg:svg").attr("class","gauge").attr("width",this.config.size).attr("height",this.config.size),this.body.append("svg:circle").attr("cx",this.config.cx).attr("cy",this.config.cy).attr("r",this.config.raduis).style("fill","#ccc").style("stroke","#000").style("stroke-width","0.5px"),this.body.appe
 nd("svg:circle").attr("cx",this.config.cx).attr("cy",this.config.cy).attr("r",.9*this.config.raduis).style("fill","#fff").style("stroke","#e0e0e0").style("stroke-width","2px");for(var a in this.config.greenZones)this.drawBand(this.config.greenZones[a].from,this.config.greenZones[a].to,c.config.greenColor);for(var a in this.config.yellowZones)this.drawBand(this.config.yellowZones[a].from,this.config.yellowZones[a].to,c.config.yellowColor);for(var a in this.config.redZones)this.drawBand(this.config.redZones[a].from,this.config.redZones[a].to,c.config.redColor);if(void 0!=this.config.label){var b=Math.round(this.config.size/9);this.body.append("svg:text").attr("x",this.config.cx).attr("y",this.config.cy/2+b/2).attr("dy",b/2).attr("text-anchor","middle").text(this.config.label).style("font-size",b+"px").style("fill","#333").style("stroke-width","0px")}for(var b=Math.round(this.config.size/16),d=this.config.range/(this.config.majorTicks-1),e=this.config.min;e<=this.config.max;e+=d){for(v
 ar f=d/this.config.minorTicks,g=e+f;g<Math.min(e+d,this.config.max);g+=f){var h=this.valueToPoint(g,.75),i=this.valueToPoint(g,.85);this.body.append("svg:line").attr("x1",h.x).attr("y1",h.y).attr("x2",i.x).attr("y2",i.y).style("stroke","#666").style("stroke-width","1px")}var h=this.valueToPoint(e,.7),i=this.valueToPoint(e,.85);if(this.body.append("svg:line").attr("x1",h.x).attr("y1",h.y).attr("x2",i.x).attr("y2",i.y).style("stroke","#333").style("stroke-width","2px"),e==this.config.min||e==this.config.max){var j=this.valueToPoint(e,.63);this.body.append("svg:text").attr("x",j.x).attr("y",j.y).attr("dy",b/3).attr("text-anchor",e==this.config.min?"start":"end").text(e).style("font-size",b+"px").style("fill","#333").style("stroke-width","0px")}}var k=this.body.append("svg:g").attr("class","pointerContainer"),l=(this.config.min+this.config.max)/2,m=this.buildPointerPath(l),n=d3.svg.line().x(function(a){return a.x}).y(function(a){return a.y}).interpolate("basis");k.selectAll("path").data
 ([m]).enter().append("svg:path").attr("d",n).style("fill","#dc3912").style("stroke","#c63310").style("fill-opacity",.7),k.append("svg:circle").attr("cx",this.config.cx).attr("cy",this.config.cy).attr("r",.12*this.config.raduis).style("fill","#4684EE").style("stroke","#666").style("opacity",1);var b=Math.round(this.config.size/10);k.selectAll("text").data([l]).enter().append("svg:text").attr("x",this.config.cx).attr("y",this.config.size-this.config.cy/4-b).attr("dy",b/2).attr("text-anchor","middle").style("font-size",b+"px").style("fill","#000").style("stroke-width","0px"),this.redraw(this.config.min,0)},this.buildPointerPath=function(a){function b(a,b){var d=c.valueToPoint(a,b);return d.x-=c.config.cx,d.y-=c.config.cy,d}var d=this.config.range/13,e=b(a,.85),f=b(a-d,.12),g=b(a+d,.12),h=a-this.config.range*(1/.75)/2,i=b(h,.28),j=b(h-d,.12),k=b(h+d,.12);return[e,f,k,i,j,g,e]},this.drawBand=function(a,b,d){0>=b-a||this.body.append("svg:path").style("fill",d).attr("d",d3.svg.arc().startA
 ngle(this.valueToRadians(a)).endAngle(this.valueToRadians(b)).innerRadius(.65*this.config.raduis).outerRadius(.85*this.config.raduis)).attr("transform",function(){return"translate("+c.config.cx+", "+c.config.cy+") rotate(270)"})},this.redraw=function(a,b){var d=this.body.select(".pointerContainer");d.selectAll("text").text(Math.round(a));var e=d.selectAll("path");e.transition().duration(void 0!=b?b:this.config.transitionDuration).attrTween("transform",function(){var b=a;a>c.config.max?b=c.config.max+.02*c.config.range:a<c.config.min&&(b=c.config.min-.02*c.config.range);var d=c.valueToDegrees(b)-90,e=c._currentRotation||d;return c._currentRotation=d,function(a){var b=e+(d-e)*a;return"translate("+c.config.cx+", "+c.config.cy+") rotate("+b+")"}})},this.valueToDegrees=function(a){return a/this.config.range*270-(this.config.min/this.config.range*270+45)},this.valueToRadians=function(a){return this.valueToDegrees(a)*Math.PI/180},this.valueToPoint=function(a,b){return{x:this.config.cx-this
 .config.raduis*b*Math.cos(this.valueToRadians(a)),y:this.config.cy-this.config.raduis*b*Math.sin(this.valueToRadians(a))}},this.configure(b)}(function(){var a=this,b=a._,c={},d=Array.prototype,e=Object.prototype,f=Function.prototype,g=d.push,h=d.slice,i=d.concat,j=e.toString,k=e.hasOwnProperty,l=d.forEach,m=d.map,n=d.reduce,o=d.reduceRight,p=d.filter,q=d.every,r=d.some,s=d.indexOf,t=d.lastIndexOf,u=Array.isArray,v=Object.keys,w=f.bind,x=function(a){return a instanceof x?a:this instanceof x?void(this._wrapped=a):new x(a)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=x),exports._=x):a._=x,x.VERSION="1.5.2";var y=x.each=x.forEach=function(a,b,d){if(null!=a)if(l&&a.forEach===l)a.forEach(b,d);else if(a.length===+a.length){for(var e=0,f=a.length;f>e;e++)if(b.call(d,a[e],e,a)===c)return}else for(var g=x.keys(a),e=0,f=g.length;f>e;e++)if(b.call(d,a[g[e]],g[e],a)===c)return};x.map=x.collect=function(a,b,c){var d=[];return null==a?d:m&&a.map
 ===m?a.map(b,c):(y(a,function(a,e,f){d.push(b.call(c,a,e,f))}),d)};var z="Reduce of empty array with no initial value";x.reduce=x.foldl=x.inject=function(a,b,c,d){var e=arguments.length>2;if(null==a&&(a=[]),n&&a.reduce===n)return d&&(b=x.bind(b,d)),e?a.reduce(b,c):a.reduce(b);if(y(a,function(a,f,g){e?c=b.call(d,c,a,f,g):(c=a,e=!0)}),!e)throw new TypeError(z);return c},x.reduceRight=x.foldr=function(a,b,c,d){var e=arguments.length>2;if(null==a&&(a=[]),o&&a.reduceRight===o)return d&&(b=x.bind(b,d)),e?a.reduceRight(b,c):a.reduceRight(b);var f=a.length;if(f!==+f){var g=x.keys(a);f=g.length}if(y(a,function(h,i,j){i=g?g[--f]:--f,e?c=b.call(d,c,a[i],i,j):(c=a[i],e=!0)}),!e)throw new TypeError(z);return c},x.find=x.detect=function(a,b,c){var d;return A(a,function(a,e,f){return b.call(c,a,e,f)?(d=a,!0):void 0}),d},x.filter=x.select=function(a,b,c){var d=[];return null==a?d:p&&a.filter===p?a.filter(b,c):(y(a,function(a,e,f){b.call(c,a,e,f)&&d.push(a)}),d)},x.reject=function(a,b,c){return x.fi
 lter(a,function(a,d,e){return!b.call(c,a,d,e)},c)},x.every=x.all=function(a,b,d){b||(b=x.identity);var e=!0;return null==a?e:q&&a.every===q?a.every(b,d):(y(a,function(a,f,g){return(e=e&&b.call(d,a,f,g))?void 0:c}),!!e)};var A=x.some=x.any=function(a,b,d){b||(b=x.identity);var e=!1;return null==a?e:r&&a.some===r?a.some(b,d):(y(a,function(a,f,g){return e||(e=b.call(d,a,f,g))?c:void 0}),!!e)};x.contains=x.include=function(a,b){return null==a?!1:s&&a.indexOf===s?-1!=a.indexOf(b):A(a,function(a){return a===b})},x.invoke=function(a,b){var c=h.call(arguments,2),d=x.isFunction(b);return x.map(a,function(a){return(d?b:a[b]).apply(a,c)})},x.pluck=function(a,b){return x.map(a,function(a){return a[b]})},x.where=function(a,b,c){return x.isEmpty(b)?c?void 0:[]:x[c?"find":"filter"](a,function(a){for(var c in b)if(b[c]!==a[c])return!1;return!0})},x.findWhere=function(a,b){return x.where(a,b,!0)},x.max=function(a,b,c){if(!b&&x.isArray(a)&&a[0]===+a[0]&&a.length<65535)return Math.max.apply(Math,a);if
 (!b&&x.isEmpty(a))return-1/0;var d={computed:-1/0,value:-1/0};return y(a,function(a,e,f){var g=b?b.call(c,a,e,f):a;g>d.computed&&(d={value:a,computed:g})}),d.value},x.min=function(a,b,c){if(!b&&x.isArray(a)&&a[0]===+a[0]&&a.length<65535)return Math.min.apply(Math,a);if(!b&&x.isEmpty(a))return 1/0;var d={computed:1/0,value:1/0};return y(a,function(a,e,f){var g=b?b.call(c,a,e,f):a;g<d.computed&&(d={value:a,computed:g})}),d.value},x.shuffle=function(a){var b,c=0,d=[];return y(a,function(a){b=x.random(c++),d[c-1]=d[b],d[b]=a}),d},x.sample=function(a,b,c){return arguments.length<2||c?a[x.random(a.length-1)]:x.shuffle(a).slice(0,Math.max(0,b))};var B=function(a){return x.isFunction(a)?a:function(b){return b[a]}};x.sortBy=function(a,b,c){var d=B(b);return x.pluck(x.map(a,function(a,b,e){return{value:a,index:b,criteria:d.call(c,a,b,e)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;if(c!==d){if(c>d||void 0===c)return 1;if(d>c||void 0===d)return-1}return a.index-b.index}),"value")};var C
 =function(a){return function(b,c,d){var e={},f=null==c?x.identity:B(c);return y(b,function(c,g){var h=f.call(d,c,g,b);a(e,h,c)}),e}};x.groupBy=C(function(a,b,c){(x.has(a,b)?a[b]:a[b]=[]).push(c)}),x.indexBy=C(function(a,b,c){a[b]=c}),x.countBy=C(function(a,b){x.has(a,b)?a[b]++:a[b]=1}),x.sortedIndex=function(a,b,c,d){c=null==c?x.identity:B(c);for(var e=c.call(d,b),f=0,g=a.length;g>f;){var h=f+g>>>1;c.call(d,a[h])<e?f=h+1:g=h}return f},x.toArray=function(a){return a?x.isArray(a)?h.call(a):a.length===+a.length?x.map(a,x.identity):x.values(a):[]},x.size=function(a){return null==a?0:a.length===+a.length?a.length:x.keys(a).length},x.first=x.head=x.take=function(a,b,c){return null==a?void 0:null==b||c?a[0]:h.call(a,0,b)},x.initial=function(a,b,c){return h.call(a,0,a.length-(null==b||c?1:b))},x.last=function(a,b,c){return null==a?void 0:null==b||c?a[a.length-1]:h.call(a,Math.max(a.length-b,0))},x.rest=x.tail=x.drop=function(a,b,c){return h.call(a,null==b||c?1:b)},x.compact=function(a){retu
 rn x.filter(a,x.identity)};var D=function(a,b,c){return b&&x.every(a,x.isArray)?i.apply(c,a):(y(a,function(a){x.isArray(a)||x.isArguments(a)?b?g.apply(c,a):D(a,b,c):c.push(a)}),c)};x.flatten=function(a,b){return D(a,b,[])},x.without=function(a){return x.difference(a,h.call(arguments,1))},x.uniq=x.unique=function(a,b,c,d){x.isFunction(b)&&(d=c,c=b,b=!1);var e=c?x.map(a,c,d):a,f=[],g=[];return y(e,function(c,d){(b?d&&g[g.length-1]===c:x.contains(g,c))||(g.push(c),f.push(a[d]))}),f},x.union=function(){return x.uniq(x.flatten(arguments,!0))},x.intersection=function(a){var b=h.call(arguments,1);return x.filter(x.uniq(a),function(a){return x.every(b,function(b){return x.indexOf(b,a)>=0})})},x.difference=function(a){var b=i.apply(d,h.call(arguments,1));return x.filter(a,function(a){return!x.contains(b,a)})},x.zip=function(){for(var a=x.max(x.pluck(arguments,"length").concat(0)),b=new Array(a),c=0;a>c;c++)b[c]=x.pluck(arguments,""+c);return b},x.object=function(a,b){if(null==a)return{};for(
 var c={},d=0,e=a.length;e>d;d++)b?c[a[d]]=b[d]:c[a[d][0]]=a[d][1];return c},x.indexOf=function(a,b,c){if(null==a)return-1;var d=0,e=a.length;if(c){if("number"!=typeof c)return d=x.sortedIndex(a,b),a[d]===b?d:-1;d=0>c?Math.max(0,e+c):c}if(s&&a.indexOf===s)return a.indexOf(b,c);for(;e>d;d++)if(a[d]===b)return d;return-1},x.lastIndexOf=function(a,b,c){if(null==a)return-1;var d=null!=c;if(t&&a.lastIndexOf===t)return d?a.lastIndexOf(b,c):a.lastIndexOf(b);for(var e=d?c:a.length;e--;)if(a[e]===b)return e;return-1},x.range=function(a,b,c){arguments.length<=1&&(b=a||0,a=0),c=arguments[2]||1;for(var d=Math.max(Math.ceil((b-a)/c),0),e=0,f=new Array(d);d>e;)f[e++]=a,a+=c;return f};var E=function(){};x.bind=function(a,b){var c,d;if(w&&a.bind===w)return w.apply(a,h.call(arguments,1));if(!x.isFunction(a))throw new TypeError;return c=h.call(arguments,2),d=function(){if(!(this instanceof d))return a.apply(b,c.concat(h.call(arguments)));E.prototype=a.prototype;var e=new E;E.prototype=null;var f=a.app
 ly(e,c.concat(h.call(arguments)));return Object(f)===f?f:e}},x.partial=function(a){var b=h.call(arguments,1);return function(){return a.apply(this,b.concat(h.call(arguments)))}},x.bindAll=function(a){var b=h.call(arguments,1);if(0===b.length)throw new Error("bindAll must be passed function names");return y(b,function(b){a[b]=x.bind(a[b],a)}),a},x.memoize=function(a,b){var c={};return b||(b=x.identity),function(){var d=b.apply(this,arguments);return x.has(c,d)?c[d]:c[d]=a.apply(this,arguments)}},x.delay=function(a,b){var c=h.call(arguments,2);return setTimeout(function(){return a.apply(null,c)},b)},x.defer=function(a){return x.delay.apply(x,[a,1].concat(h.call(arguments,1)))},x.throttle=function(a,b,c){var d,e,f,g=null,h=0;c||(c={});var i=function(){h=c.leading===!1?0:new Date,g=null,f=a.apply(d,e)};return function(){var j=new Date;h||c.leading!==!1||(h=j);var k=b-(j-h);return d=this,e=arguments,0>=k?(clearTimeout(g),g=null,h=j,f=a.apply(d,e)):g||c.trailing===!1||(g=setTimeout(i,k)),
 f}},x.debounce=function(a,b,c){var d,e,f,g,h;return function(){f=this,e=arguments,g=new Date;var i=function(){var j=new Date-g;b>j?d=setTimeout(i,b-j):(d=null,c||(h=a.apply(f,e)))},j=c&&!d;return d||(d=setTimeout(i,b)),j&&(h=a.apply(f,e)),h}},x.once=function(a){var b,c=!1;return function(){return c?b:(c=!0,b=a.apply(this,arguments),a=null,b)}},x.wrap=function(a,b){return function(){var c=[a];return g.apply(c,arguments),b.apply(this,c)}},x.compose=function(){var a=arguments;return function(){for(var b=arguments,c=a.length-1;c>=0;c--)b=[a[c].apply(this,b)];return b[0]}},x.after=function(a,b){return function(){return--a<1?b.apply(this,arguments):void 0}},x.keys=v||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var b=[];for(var c in a)x.has(a,c)&&b.push(c);return b},x.values=function(a){for(var b=x.keys(a),c=b.length,d=new Array(c),e=0;c>e;e++)d[e]=a[b[e]];return d},x.pairs=function(a){for(var b=x.keys(a),c=b.length,d=new Array(c),e=0;c>e;e++)d[e]=[b[e],a[b[e]]];retu
 rn d},x.invert=function(a){for(var b={},c=x.keys(a),d=0,e=c.length;e>d;d++)b[a[c[d]]]=c[d];return b},x.functions=x.methods=function(a){var b=[];for(var c in a)x.isFunction(a[c])&&b.push(c);return b.sort()},x.extend=function(a){return y(h.call(arguments,1),function(b){if(b)for(var c in b)a[c]=b[c]}),a},x.pick=function(a){var b={},c=i.apply(d,h.call(arguments,1));return y(c,function(c){c in a&&(b[c]=a[c])}),b},x.omit=function(a){var b={},c=i.apply(d,h.call(arguments,1));for(var e in a)x.contains(c,e)||(b[e]=a[e]);return b},x.defaults=function(a){return y(h.call(arguments,1),function(b){if(b)for(var c in b)void 0===a[c]&&(a[c]=b[c])}),a},x.clone=function(a){return x.isObject(a)?x.isArray(a)?a.slice():x.extend({},a):a},x.tap=function(a,b){return b(a),a};var F=function(a,b,c,d){if(a===b)return 0!==a||1/a==1/b;if(null==a||null==b)return a===b;a instanceof x&&(a=a._wrapped),b instanceof x&&(b=b._wrapped);var e=j.call(a);if(e!=j.call(b))return!1;switch(e){case"[object String]":return a==Str
 ing(b);case"[object Number]":return a!=+a?b!=+b:0==a?1/a==1/b:a==+b;case"[object Date]":case"[object Boolean]":return+a==+b;case"[object RegExp]":return a.source==b.source&&a.global==b.global&&a.multiline==b.multiline&&a.ignoreCase==b.ignoreCase}if("object"!=typeof a||"object"!=typeof b)return!1;for(var f=c.length;f--;)if(c[f]==a)return d[f]==b;var g=a.constructor,h=b.constructor;if(g!==h&&!(x.isFunction(g)&&g instanceof g&&x.isFunction(h)&&h instanceof h))return!1;c.push(a),d.push(b);var i=0,k=!0;if("[object Array]"==e){if(i=a.length,k=i==b.length)for(;i--&&(k=F(a[i],b[i],c,d)););}else{for(var l in a)if(x.has(a,l)&&(i++,!(k=x.has(b,l)&&F(a[l],b[l],c,d))))break;if(k){for(l in b)if(x.has(b,l)&&!i--)break;k=!i}}return c.pop(),d.pop(),k};x.isEqual=function(a,b){return F(a,b,[],[])},x.isEmpty=function(a){if(null==a)return!0;if(x.isArray(a)||x.isString(a))return 0===a.length;for(var b in a)if(x.has(a,b))return!1;return!0},x.isElement=function(a){return!(!a||1!==a.nodeType)},x.isArray=u||
 function(a){return"[object Array]"==j.call(a)},x.isObject=function(a){return a===Object(a)},y(["Arguments","Function","String","Number","Date","RegExp"],function(a){x["is"+a]=function(b){return j.call(b)=="[object "+a+"]"}}),x.isArguments(arguments)||(x.isArguments=function(a){return!(!a||!x.has(a,"callee"))}),"function"!=typeof/./&&(x.isFunction=function(a){return"function"==typeof a}),x.isFinite=function(a){return isFinite(a)&&!isNaN(parseFloat(a))},x.isNaN=function(a){return x.isNumber(a)&&a!=+a},x.isBoolean=function(a){return a===!0||a===!1||"[object Boolean]"==j.call(a)},x.isNull=function(a){return null===a},x.isUndefined=function(a){return void 0===a},x.has=function(a,b){return k.call(a,b)},x.noConflict=function(){return a._=b,this},x.identity=function(a){return a},x.times=function(a,b,c){for(var d=Array(Math.max(0,a)),e=0;a>e;e++)d[e]=b.call(c,e);return d},x.random=function(a,b){return null==b&&(b=a,a=0),a+Math.floor(Math.random()*(b-a+1))};var G={escape:{"&":"&amp;","<":"&lt
 ;",">":"&gt;",'"':"&quot;","'":"&#x27;"}};G.unescape=x.invert(G.escape);var H={escape:new RegExp("["+x.keys(G.escape).join("")+"]","g"),unescape:new RegExp("("+x.keys(G.unescape).join("|")+")","g")};x.each(["escape","unescape"],function(a){x[a]=function(b){return null==b?"":(""+b).replace(H[a],function(b){return G[a][b]})}}),x.result=function(a,b){if(null==a)return void 0;var c=a[b];return x.isFunction(c)?c.call(a):c},x.mixin=function(a){y(x.functions(a),function(b){var c=x[b]=a[b];x.prototype[b]=function(){var a=[this._wrapped];return g.apply(a,arguments),M.call(this,c.apply(x,a))}})};var I=0;x.uniqueId=function(a){var b=++I+"";return a?a+b:b},x.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var J=/(.)^/,K={"'":"'","\\":"\\","\r":"r","\n":"n","	":"t","\u2028":"u2028","\u2029":"u2029"},L=/\\|'|\r|\n|\t|\u2028|\u2029/g;x.template=function(a,b,c){var d;c=x.defaults({},c,x.templateSettings);var e=new RegExp([(c.escape||J).source,(
 c.interpolate||J).source,(c.evaluate||J).source].join("|")+"|$","g"),f=0,g="__p+='";a.replace(e,function(b,c,d,e,h){return g+=a.slice(f,h).replace(L,function(a){return"\\"+K[a]}),c&&(g+="'+\n((__t=("+c+"))==null?'':_.escape(__t))+\n'"),d&&(g+="'+\n((__t=("+d+"))==null?'':__t)+\n'"),e&&(g+="';\n"+e+"\n__p+='"),f=h+b.length,b}),g+="';\n",c.variable||(g="with(obj||{}){\n"+g+"}\n"),g="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+g+"return __p;\n";try{d=new Function(c.variable||"obj","_",g)}catch(h){throw h.source=g,h}if(b)return d(b,x);var i=function(a){return d.call(this,a,x)};return i.source="function("+(c.variable||"obj")+"){\n"+g+"}",i},x.chain=function(a){return x(a).chain()};var M=function(a){return this._chain?x(a).chain():a};x.mixin(x),y(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var b=d[a];x.prototype[a]=function(){var c=this._wrapped;return b.apply(c,arguments),"shift"!=a&&"splice"!=a||0!==c.length||dele
 te c[0],M.call(this,c)}}),y(["concat","join","slice"],function(a){var b=d[a];x.prototype[a]=function(){return M.call(this,b.apply(this._wrapped,arguments))}}),x.extend(x.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this),function(a,b){"use strict";function c(){function a(a,c){return b.extend(new(b.extend(function(){},{prototype:a})),c)}function c(a,b){var c=b.caseInsensitiveMatch,d={originalPath:a,regexp:a},e=d.keys=[];return a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,b,c,d){var f="?"===d?d:null,g="*"===d?d:null;return e.push({name:c,optional:!!f}),b=b||"",""+(f?"":b)+"(?:"+(f?b:"")+(g&&"(.+?)"||"([^/]+)")+(f||"")+")"+(f||"")}).replace(/([\/$\*])/g,"\\$1"),d.regexp=new RegExp("^"+a+"$",c?"i":""),d}var d={};this.when=function(a,e){if(d[a]=b.extend({reloadOnSearch:!0},e,a&&c(a,e)),a){var f="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";d[f]=b.extend({redirectTo:a},c(f,e))}return this},this.other
 wise=function(a){return this.when(null,a),this},this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(c,e,f,g,h,i,j,k){function l(a,b){var c=b.keys,d={};if(!b.regexp)return null;var e=b.regexp.exec(a);if(!e)return null;for(var f=1,g=e.length;g>f;++f){var h=c[f-1],i="string"==typeof e[f]?decodeURIComponent(e[f]):e[f];h&&i&&(d[h.name]=i)}return d}function m(){var a=n(),d=q.current;a&&d&&a.$$route===d.$$route&&b.equals(a.pathParams,d.pathParams)&&!a.reloadOnSearch&&!p?(d.params=a.params,b.copy(d.params,f),c.$broadcast("$routeUpdate",d)):(a||d)&&(p=!1,c.$broadcast("$routeChangeStart",a,d),q.current=a,a&&a.redirectTo&&(b.isString(a.redirectTo)?e.path(o(a.redirectTo,a.params)).search(a.params).replace():e.url(a.redirectTo(a.pathParams,e.path(),e.search())).replace()),g.when(a).then(function(){if(a){var c,d,e=b.extend({},a.resolve);return b.forEach(e,function(a,c){e[c]=b.isString(a)?h.get(a):h.invoke(a)}),b.isDefined(c=a.template)?b.is
 Function(c)&&(c=c(a.params)):b.isDefined(d=a.templateUrl)&&(b.isFunction(d)&&(d=d(a.params)),d=k.getTrustedResourceUrl(d),b.isDefined(d)&&(a.loadedTemplateUrl=d,c=i.get(d,{cache:j}).then(function(a){return a.data}))),b.isDefined(c)&&(e.$template=c),g.all(e)}}).then(function(e){a==q.current&&(a&&(a.locals=e,b.copy(a.params,f)),c.$broadcast("$routeChangeSuccess",a,d))},function(b){a==q.current&&c.$broadcast("$routeChangeError",a,d,b)}))}function n(){var c,f;return b.forEach(d,function(d){!f&&(c=l(e.path(),d))&&(f=a(d,{params:b.extend({},e.search(),c),pathParams:c}),f.$$route=d)}),f||d[null]&&a(d[null],{params:{},pathParams:{}})}function o(a,c){var d=[];return b.forEach((a||"").split(":"),function(a,b){if(0===b)d.push(a);else{var e=a.match(/(\w+)(.*)/),f=e[1];d.push(c[f]),d.push(e[2]||""),delete c[f]}}),d.join("")}var p=!1,q={routes:d,reload:function(){p=!0,c.$evalAsync(m)}};return c.$on("$locationChangeSuccess",m),q}]}function d(){this.$get=function(){return{}}}function e(a,c,d){retur
 n{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(e,f,g,h,i){function j(){n&&(n.remove(),n=null),l&&(l.$destroy(),l=null),m&&(d.leave(m,function(){n=null}),n=m,m=null)}function k(){var g=a.current&&a.current.locals,h=g&&g.$template;if(b.isDefined(h)){var k=e.$new(),n=a.current,q=i(k,function(a){d.enter(a,null,m||f,function(){!b.isDefined(o)||o&&!e.$eval(o)||c()}),j()});m=q,l=n.scope=k,l.$emit("$viewContentLoaded"),l.$eval(p)}else j()}var l,m,n,o=g.autoscroll,p=g.onload||"";e.$on("$routeChangeSuccess",k),k()}}}function f(a,b,c){return{restrict:"ECA",priority:-400,link:function(d,e){var f=c.current,g=f.locals;e.html(g.$template);var h=a(e.contents());if(f.controller){g.$scope=d;var i=b(f.controller,g);f.controllerAs&&(d[f.controllerAs]=i),e.data("$ngControllerController",i),e.children().data("$ngControllerController",i)}h(d)}}}var g=b.module("ngRoute",["ng"]).provider("$route",c);g.provider("$routeParams",d),g.directive("ngView",e),g.directive("ngView",f),e.
 $inject=["$route","$anchorScroll","$animate"],f.$inject=["$compile","$controller","$route"]}(window,window.angular),function(a,b,c){"use strict";function d(a){return null!=a&&""!==a&&"hasOwnProperty"!==a&&h.test("."+a)}function e(a,b){if(!d(b))throw g("badmember",'Dotted member path "@{0}" is invalid.',b);for(var e=b.split("."),f=0,h=e.length;h>f&&a!==c;f++){var i=e[f];a=null!==a?a[i]:c}return a}function f(a,c){c=c||{},b.forEach(c,function(a,b){delete c[b]});for(var d in a)!a.hasOwnProperty(d)||"$"===d.charAt(0)&&"$"===d.charAt(1)||(c[d]=a[d]);return c}var g=b.$$minErr("$resource"),h=/^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;b.module("ngResource",["ng"]).factory("$resource",["$http","$q",function(a,d){function h(a){return i(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function i(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,b?"%20":"+")}function j(a,b){this.template=a,this.defaults=
 b||{},this.urlParams={}}function k(h,i,r){function s(a,b){var c={};return b=o({},i,b),n(b,function(b,d){q(b)&&(b=b()),c[d]=b&&b.charAt&&"@"==b.charAt(0)?e(a,b.substr(1)):b}),c}function t(a){return a.resource}function u(a){f(a||{},this)}var v=new j(h);return r=o({},l,r),n(r,function(e,h){var i=/^(POST|PUT|PATCH)$/i.test(e.method);u[h]=function(h,j,k,l){var r,w,x,y={};switch(arguments.length){case 4:x=l,w=k;case 3:case 2:if(!q(j)){y=h,r=j,w=k;break}if(q(h)){w=h,x=j;break}w=j,x=k;case 1:q(h)?w=h:i?r=h:y=h;break;case 0:break;default:throw g("badargs","Expected up to 4 arguments [params, data, success, error], got {0} arguments",arguments.length)}var z=this instanceof u,A=z?r:e.isArray?[]:new u(r),B={},C=e.interceptor&&e.interceptor.response||t,D=e.interceptor&&e.interceptor.responseError||c;n(e,function(a,b){"params"!=b&&"isArray"!=b&&"interceptor"!=b&&(B[b]=p(a))}),i&&(B.data=r),v.setUrlParams(B,o({},s(r,e.params||{}),y),e.url);var E=a(B).then(function(a){var c=a.data,d=A.$promise;if(c
 ){if(b.isArray(c)!==!!e.isArray)throw g("badcfg","Error in resource configuration. Expected response to contain an {0} but got an {1}",e.isArray?"array":"object",b.isArray(c)?"array":"object");e.isArray?(A.length=0,n(c,function(a){A.push(new u(a))})):(f(c,A),A.$promise=d)}return A.$resolved=!0,a.resource=A,a},function(a){return A.$resolved=!0,(x||m)(a),d.reject(a)});return E=E.then(function(a){var b=C(a);return(w||m)(b,a.headers),b},D),z?E:(A.$promise=E,A.$resolved=!1,A)},u.prototype["$"+h]=function(a,b,c){q(a)&&(c=b,b=a,a={});var d=u[h].call(this,a,this,b,c);return d.$promise||d}}),u.bind=function(a){return k(h,o({},i,a),r)},u}var l={get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}},m=b.noop,n=b.forEach,o=b.extend,p=b.copy,q=b.isFunction;return j.prototype={setUrlParams:function(a,c,d){var e,f,i=this,j=d||i.template,k=i.urlParams={};n(j.split(/\W/),function(a){if("hasOwnProperty"===a)throw g("badname","hasOw
 nProperty is not a valid parameter name.");!new RegExp("^\\d+$").test(a)&&a&&new RegExp("(^|[^\\\\]):"+a+"(\\W|$)").test(j)&&(k[a]=!0)}),j=j.replace(/\\:/g,":"),c=c||{},n(i.urlParams,function(a,d){e=c.hasOwnProperty(d)?c[d]:i.defaults[d],b.isDefined(e)&&null!==e?(f=h(e),j=j.replace(new RegExp(":"+d+"(\\W|$)","g"),function(a,b){return f+b})):j=j.replace(new RegExp("(/?):"+d+"(\\W|$)","g"),function(a,b,c){return"/"==c.charAt(0)?c:b+c})}),j=j.replace(/\/+$/,"")||"/",j=j.replace(/\/\.(?=\w+($|\?))/,"."),a.url=j.replace(/\/\\\./,"/."),n(c,function(b,c){i.urlParams[c]||(a.params=a.params||{},a.params[c]=b)})}},k}])}(window,window.angular),function(a,b,c){"use strict";b.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(a,d){function e(){var a,e,f,i;for(a in h)k(g[a])&&d.cookies(a,c);for(a in g)e=g[a],b.isString(e)||(e=""+e,g[a]=e),e!==h[a]&&(d.cookies(a,e),i=!0);if(i){i=!1,f=d.cookies();for(a in g)g[a]!==f[a]&&(k(f[a])?delete g[a]:g[a]=f[a],i=!0)}}var f,g={},h
 ={},i=!1,j=b.copy,k=b.isUndefined;return d.addPollFn(function(){var b=d.cookies();f!=b&&(f=b,j(b,h),j(b,g),i&&a.$apply())})(),i=!0,a.$watch(e),g}]).factory("$cookieStore",["$cookies",function(a){return{get:function(c){var d=a[c];return d?b.fromJson(d):d},put:function(c,d){a[c]=b.toJson(d)},remove:function(b){delete a[b]}}}])}(window,window.angular),function(a,b){"use strict";function c(){this.$get=["$$sanitizeUri",function(a){return function(b){var c=[];return f(b,i(c,function(b,c){return!/^unsafe/.test(a(b,c))})),c.join("")}}]}function d(a){var c=[],d=i(c,b.noop);return d.chars(a),c.join("")}function e(a){var b,c={},d=a.split(",");for(b=0;b<d.length;b++)c[d[b]]=!0;return c}function f(a,c){function d(a,d,f,h){if(d=b.lowercase(d),y[d])for(;s.last()&&z[s.last()];)e("",s.last());x[d]&&s.last()==d&&e("",d),h=u[d]||!!h,h||s.push(d);var i={};f.replace(m,function(a,b,c,d,e){var f=c||d||e||"";i[b]=g(f)}),c.start&&c.start(d,i,h)}function e(a,d){var e,f=0;if(d=b.lowercase(d))for(f=s.length-1;
 f>=0&&s[f]!=d;f--);if(f>=0){for(e=s.length-1;e>=f;e--)c.end&&c.end(s[e]);s.length=f}}var f,h,i,s=[],t=a;for(s.last=function(){return s[s.length-1]};a;){if(h=!0,s.last()&&A[s.last()])a=a.replace(new RegExp("(.*)<\\s*\\/\\s*"+s.last()+"[^>]*>","i"),function(a,b){return b=b.replace(p,"$1").replace(r,"$1"),c.chars&&c.chars(g(b)),""}),e("",s.last());else if(0===a.indexOf("<!--")?(f=a.indexOf("--",4),f>=0&&a.lastIndexOf("-->",f)===f&&(c.comment&&c.comment(a.substring(4,f)),a=a.substring(f+3),h=!1)):q.test(a)?(i=a.match(q),i&&(a=a.replace(i[0],""),h=!1)):o.test(a)?(i=a.match(l),i&&(a=a.substring(i[0].length),i[0].replace(l,e),h=!1)):n.test(a)&&(i=a.match(k),i&&(a=a.substring(i[0].length),i[0].replace(k,d),h=!1)),h){f=a.indexOf("<");var v=0>f?a:a.substring(0,f);a=0>f?"":a.substring(f),c.chars&&c.chars(g(v))}if(a==t)throw j("badparse","The sanitizer was unable to parse the following block of html: {0}",a);t=a}e()}function g(a){if(!a)return"";var b=F.exec(a),c=b[1],d=b[3],e=b[2];return e&&(E.
 innerHTML=e.replace(/</g,"&lt;"),e="textContent"in E?E.textContent:E.innerText),c+e+d}function h(a){return a.replace(/&/g,"&amp;").replace(s,function(a){var b=a.charCodeAt(0),c=a.charCodeAt(1);return"&#"+(1024*(b-55296)+(c-56320)+65536)+";"}).replace(t,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function i(a,c){var d=!1,e=b.bind(a,a.push);return{start:function(a,f,g){a=b.lowercase(a),!d&&A[a]&&(d=a),d||B[a]!==!0||(e("<"),e(a),b.forEach(f,function(d,f){var g=b.lowercase(f),i="img"===a&&"src"===g||"background"===g;D[g]!==!0||C[g]===!0&&!c(d,i)||(e(" "),e(f),e('="'),e(h(d)),e('"'))}),e(g?"/>":">"))},end:function(a){a=b.lowercase(a),d||B[a]!==!0||(e("</"),e(a),e(">")),a==d&&(d=!1)},chars:function(a){d||e(h(a))}}}var j=b.$$minErr("$sanitize"),k=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,l=/^<\s*\/\s*([\w:-]+)[^>]*>/,m=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,n=/^<
 /,o=/^<\s*\//,p=/<!--(.*?)-->/g,q=/<!DOCTYPE([^>]*?)>/i,r=/<!\[CDATA\[(.*?)]]>/g,s=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,t=/([^\#-~| |!])/g,u=e("area,br,col,hr,img,wbr"),v=e("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),w=e("rp,rt"),x=b.extend({},w,v),y=b.extend({},v,e("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),z=b.extend({},w,e("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),A=e("script,style"),B=b.extend({},u,y,z,x),C=e("background,cite,href,longdesc,src,usemap"),D=b.extend({},C,e("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,t
 ype,valign,value,vspace,width")),E=document.createElement("pre"),F=/^(\s*)([\s\S]*?)(\s*)$/;b.module("ngSanitize",[]).provider("$sanitize",c),b.module("ngSanitize").filter("linky",["$sanitize",function(a){var c=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/,e=/^mailto:/;return function(f,g){function h(a){a&&n.push(d(a))}function i(a,c){n.push("<a "),b.isDefined(g)&&(n.push('target="'),n.push(g),n.push('" ')),n.push('href="'),n.push(a),n.push('">'),h(c),n.push("</a>")}if(!f)return f;for(var j,k,l,m=f,n=[];j=m.match(c);)k=j[0],j[2]==j[3]&&(k="mailto:"+k),l=j.index,h(m.substr(0,l)),i(k,j[0].replace(e,"")),m=m.substring(l+j[0].length);return h(m),a(n.join(""))}}])}(window,window.angular),function(){var a=angular.module("restangular",[]);a.provider("Restangular",function(){var a={};a.init=function(a,b){function c(a,b,c,d){var e={};return _.each(_.keys(d),function(f){var g=d[f];g.params=_.extend({},g.params,a.defaultRequestParams[g.method.toLowerCase()]),_.isEmpty(g.p
 arams)&&delete g.params,e[f]=a.isSafe(g.method)?function(){return b(_.extend(g,{url:c}))}:function(a){return b(_.extend(g,{url:c,data:a}))
-}}),e}a.configuration=b;var d=["get","head","options","trace","getlist"];b.isSafe=function(a){return _.contains(d,a.toLowerCase())};var e=/^https?:\/\//i;b.isAbsoluteUrl=function(a){return a&&e.test(a)},b.baseUrl=_.isUndefined(b.baseUrl)?"":b.baseUrl,a.setBaseUrl=function(a){return b.baseUrl=/\/$/.test(a)?a.substring(0,a.length-1):a,this},b.extraFields=b.extraFields||[],a.setExtraFields=function(a){return b.extraFields=a,this},b.defaultHttpFields=b.defaultHttpFields||{},a.setDefaultHttpFields=function(a){return b.defaultHttpFields=a,this},b.withHttpValues=function(a,c){return _.defaults(c,a,b.defaultHttpFields)},b.encodeIds=_.isUndefined(b.encodeIds)?!0:b.encodeIds,a.setEncodeIds=function(a){b.encodeIds=a},b.defaultRequestParams=b.defaultRequestParams||{get:{},post:{},put:{},remove:{},common:{}},a.setDefaultRequestParams=function(a,c){var d=[],e=c||a;return _.isUndefined(c)?d.push("common"):_.isArray(a)?d=a:d.push(a),_.each(d,function(a){b.defaultRequestParams[a]=e}),this},a.request
 Params=b.defaultRequestParams,b.defaultHeaders=b.defaultHeaders||{},a.setDefaultHeaders=function(c){return b.defaultHeaders=c,a.defaultHeaders=b.defaultHeaders,this},a.defaultHeaders=b.defaultHeaders,b.methodOverriders=b.methodOverriders||[],a.setMethodOverriders=function(a){var c=_.extend([],a);return b.isOverridenMethod("delete",c)&&c.push("remove"),b.methodOverriders=c,this},b.isOverridenMethod=function(a,c){var d=c||b.methodOverriders;return!_.isUndefined(_.find(d,function(b){return b.toLowerCase()===a.toLowerCase()}))},b.urlCreator=b.urlCreator||"path",a.setUrlCreator=function(a){if(!_.has(b.urlCreatorFactory,a))throw new Error("URL Path selected isn't valid");return b.urlCreator=a,this},b.restangularFields=b.restangularFields||{id:"id",route:"route",parentResource:"parentResource",restangularCollection:"restangularCollection",cannonicalId:"__cannonicalId",etag:"restangularEtag",selfLink:"href",get:"get",getList:"getList",put:"put",post:"post",remove:"remove",head:"head",trace:
 "trace",options:"options",patch:"patch",getRestangularUrl:"getRestangularUrl",getRequestedUrl:"getRequestedUrl",putElement:"putElement",addRestangularMethod:"addRestangularMethod",getParentList:"getParentList",clone:"clone",ids:"ids",httpConfig:"_$httpConfig",reqParams:"reqParams"},a.setRestangularFields=function(a){return b.restangularFields=_.extend(b.restangularFields,a),this},b.setFieldToElem=function(a,b,c){var d=a.split("."),e=b;return _.each(_.initial(d),function(a){e[a]={},e=e[a]}),e[_.last(d)]=c,this},b.getFieldFromElem=function(a,b){var c=a.split("."),d=angular.copy(b);return _.each(c,function(a){d&&(d=d[a])}),d},b.setIdToElem=function(a,c){return b.setFieldToElem(b.restangularFields.id,a,c),this},b.getIdFromElem=function(a){return b.getFieldFromElem(b.restangularFields.id,a)},b.isValidId=function(a){return""!==a&&!_.isUndefined(a)&&!_.isNull(a)},b.setUrlToElem=function(a,c){return b.setFieldToElem(b.restangularFields.selfLink,a,c),this},b.getUrlFromElem=function(a){return
  b.getFieldFromElem(b.restangularFields.selfLink,a)},b.useCannonicalId=_.isUndefined(b.useCannonicalId)?!1:b.useCannonicalId,a.setUseCannonicalId=function(a){return b.useCannonicalId=a,this},b.getCannonicalIdFromElem=function(a){var c=a[b.restangularFields.cannonicalId],d=b.isValidId(c)?c:b.getIdFromElem(a);return d},b.responseExtractor=b.responseExtractor||function(a){return a},a.setResponseExtractor=function(a){return b.responseExtractor=a,this},a.setResponseInterceptor=a.setResponseExtractor,b.fullRequestInterceptor=b.fullRequestInterceptor||function(a,b,c,d,e,f,g){return{element:a,headers:e,params:f,httpConfig:g}},a.setRequestInterceptor=function(a){return b.fullRequestInterceptor=function(b,c,d,e,f,g,h){return{headers:f,params:g,element:a(b,c,d,e),httpConfig:h}},this},a.setFullRequestInterceptor=function(a){return b.fullRequestInterceptor=a,this},b.errorInterceptor=b.errorInterceptor||function(){},a.setErrorInterceptor=function(a){return b.errorInterceptor=a,this},b.onBeforeEle
 mRestangularized=b.onBeforeElemRestangularized||function(a){return a},a.setOnBeforeElemRestangularized=function(a){return b.onBeforeElemRestangularized=a,this},b.onElemRestangularized=b.onElemRestangularized||function(a){return a},a.setOnElemRestangularized=function(a){return b.onElemRestangularized=a,this},a.setListTypeIsArray=function(){},b.shouldSaveParent=b.shouldSaveParent||function(){return!0},a.setParentless=function(a){return _.isArray(a)?b.shouldSaveParent=function(b){return!_.contains(a,b)}:_.isBoolean(a)&&(b.shouldSaveParent=function(){return!a}),this},b.suffix=_.isUndefined(b.suffix)?null:b.suffix,a.setRequestSuffix=function(a){return b.suffix=a,this},b.transformers=b.transformers||{},a.addElementTransformer=function(a,c,d){var e=null,f=null;2===arguments.length?f=c:(f=d,e=c);var g=b.transformers[a];g||(g=b.transformers[a]=[]),g.push(function(a,b){return _.isNull(e)||a==e?f(b):b})},a.extendCollection=function(b,c){return a.addElementTransformer(b,!0,c)},a.extendModel=fun
 ction(b,c){return a.addElementTransformer(b,!1,c)},b.transformElem=function(a,c,d,e){var f=b.transformers[d],g=a;return f&&_.each(f,function(a){g=a(c,g)}),b.onElemRestangularized(g,c,d,e)},b.fullResponse=_.isUndefined(b.fullResponse)?!1:b.fullResponse,a.setFullResponse=function(a){return b.fullResponse=a,this},b.urlCreatorFactory={};var f=function(){};f.prototype.setConfig=function(a){return this.config=a,this},f.prototype.parentsArray=function(a){for(var b=[];a;)b.push(a),a=a[this.config.restangularFields.parentResource];return b.reverse()},f.prototype.resource=function(a,d,e,f,g,h,i,j){var k=_.defaults(g||{},this.config.defaultRequestParams.common),l=_.defaults(f||{},this.config.defaultHeaders);i&&(b.isSafe(j)?l["If-None-Match"]=i:l["If-Match"]=i);var m=this.base(a);if(h){var n="";/\/$/.test(m)||(n+="/"),n+=h,m+=n}return this.config.suffix&&-1===m.indexOf(this.config.suffix,m.length-this.config.suffix.length)&&(m+=this.config.suffix),a[this.config.restangularFields.httpConfig]=voi
 d 0,c(this.config,d,m,{getList:this.config.withHttpValues(e,{method:"GET",params:k,headers:l}),get:this.config.withHttpValues(e,{method:"GET",params:k,headers:l}),put:this.config.withHttpValues(e,{method:"PUT",params:k,headers:l}),post:this.config.withHttpValues(e,{method:"POST",params:k,headers:l}),remove:this.config.withHttpValues(e,{method:"DELETE",params:k,headers:l}),head:this.config.withHttpValues(e,{method:"HEAD",params:k,headers:l}),trace:this.config.withHttpValues(e,{method:"TRACE",params:k,headers:l}),options:this.config.withHttpValues(e,{method:"OPTIONS",params:k,headers:l}),patch:this.config.withHttpValues(e,{method:"PATCH",params:k,headers:l})})};var g=function(){};g.prototype=new f,g.prototype.base=function(a){var c=this;return _.reduce(this.parentsArray(a),function(a,d){var e,f=c.config.getUrlFromElem(d);if(f){if(c.config.isAbsoluteUrl(f))return f;e=f}else if(e=d[c.config.restangularFields.route],d[c.config.restangularFields.restangularCollection]){var g=d[c.config.re
 stangularFields.ids];g&&(e+="/"+g.join(","))}else{var h;h=c.config.useCannonicalId?c.config.getCannonicalIdFromElem(d):c.config.getIdFromElem(d),b.isValidId(h)&&(e+="/"+(c.config.encodeIds?encodeURIComponent(h):h))}return a+"/"+e},this.config.baseUrl)},g.prototype.fetchUrl=function(a,b){var c=this.base(a);return b&&(c+="/"+b),c},g.prototype.fetchRequestedUrl=function(a,c){function d(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort()}function e(a,b,c){for(var e=d(a),f=0;f<e.length;f++)b.call(c,a[e[f]],e[f]);return e}function f(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,b?"%20":"+")}var g=this.fetchUrl(a,c),h=a[b.restangularFields.reqParams];if(!h)return g;var i=[];return e(h,function(a,b){null!=a&&void 0!=a&&(angular.isArray(a)||(a=[a]),angular.forEach(a,function(a){angular.isObject(a)&&(a=angular.toJson(a)),i.push(f(b)+"="+f(a))}))}),g+(-1===g.indexOf("?")?"?":"&")+i.join(
 "&")},b.urlCreatorFactory.path=g};var b={};a.init(this,b),this.$get=["$http","$q",function(c,d){function e(f){function g(a,b,c,d){if(b[f.restangularFields.route]=c,b[f.restangularFields.getRestangularUrl]=_.bind(N.fetchUrl,N,b),b[f.restangularFields.getRequestedUrl]=_.bind(N.fetchRequestedUrl,N,b),b[f.restangularFields.addRestangularMethod]=_.bind(K,b),b[f.restangularFields.clone]=_.bind(s,b,b),b[f.restangularFields.reqParams]=_.isEmpty(d)?null:d,b.withHttpConfig=_.bind(z,b),b.one=_.bind(h,b,b),b.all=_.bind(i,b,b),b.several=_.bind(j,b,b),b.oneUrl=_.bind(k,b,b),b.allUrl=_.bind(l,b,b),a&&f.shouldSaveParent(c)){var e=f.getIdFromElem(a),g=f.getUrlFromElem(a),m=_.union(_.values(_.pick(f.restangularFields,["route","parentResource"])),f.extraFields),n=_.pick(a,m);f.isValidId(e)&&f.setIdToElem(n,e),f.isValidId(g)&&f.setUrlToElem(n,g),b[f.restangularFields.parentResource]=n}else b[f.restangularFields.parentResource]=null;return b}function h(a,b,c){var d={};return f.setIdToElem(d,c),t(a,d,b)}
 function i(a,b){return u(a,[],b,!0)}function j(a,b){var c=[];return c[f.restangularFields.ids]=Array.prototype.splice.call(arguments,2),u(a,c,b,!0)}function k(a,b,c){var d={};return f.setUrlToElem(d,c),t(a,d,b)}function l(a,b,c){var d={};return f.setUrlToElem(d,c),u(a,d,b,!0)}function m(a,b){return a.call=_.bind(n,a),a.get=_.bind(o,a),a[f.restangularFields.restangularCollection]=b,b&&(a.push=_.bind(n,a,"push")),a}function n(a){var b=d.defer(),c=arguments;return this.then(function(d){var e=Array.prototype.slice.call(c,1),f=d[a];f.apply(d,e),b.resolve(d)}),m(b.promise,this[f.restangularFields.restangularCollection])}function o(a){var b=d.defer();return this.then(function(c){b.resolve(c[a])}),m(b.promise,this[f.restangularFields.restangularCollection])}function p(a,b,c){return f.fullResponse?a.resolve(_.extend(b,{data:c})):void a.resolve(c)}function q(a){return _.isArray(a)?_.without(a,_.values(_.omit(f.restangularFields,"id"))):_.omit(a,_.values(_.omit(f.restangularFields,"id")))}func
 tion r(a){a.customOperation=_.bind(J,a),_.each(["put","post","get","delete"],function(b){_.each(["do","custom"],function(c){var d,e="delete"===b?"remove":b,f=c+b.toUpperCase();d="put"!==e&&"post"!==e?J:function(a,b,c,d,e){return _.bind(J,this)(a,c,d,e,b)},a[f]=_.bind(d,a,e)})}),a.customGETLIST=_.bind(y,a),a.doGETLIST=a.customGETLIST}function s(a){var b=angular.copy(a);return t(b[f.restangularFields.parentResource],b,b[f.restangularFields.route])}function t(a,b,c,d,e){var h=f.onBeforeElemRestangularized(b,!1,c),i=g(a,h,c,e);return f.useCannonicalId&&(i[f.restangularFields.cannonicalId]=f.getIdFromElem(i)),d&&(i[f.restangularFields.getParentList]=function(){return d}),i[f.restangularFields.restangularCollection]=!1,i[f.restangularFields.get]=_.bind(B,i),i[f.restangularFields.getList]=_.bind(y,i),i[f.restangularFields.put]=_.bind(D,i),i[f.restangularFields.post]=_.bind(E,i),i[f.restangularFields.remove]=_.bind(C,i),i[f.restangularFields.head]=_.bind(F,i),i[f.restangularFields.trace]=_.
 bind(G,i),i[f.restangularFields.options]=_.bind(H,i),i[f.restangularFields.patch]=_.bind(I,i),r(i),f.transformElem(i,!1,c,M)}function u(a,b,c,d){var e=f.onBeforeElemRestangularized(b,!0,c),h=g(a,e,c,d);return h[f.restangularFields.restangularCollection]=!0,h[f.restangularFields.post]=_.bind(E,h,null),h[f.restangularFields.head]=_.bind(F,h),h[f.restangularFields.trace]=_.bind(G,h),h[f.restangularFields.putElement]=_.bind(w,h),h[f.restangularFields.options]=_.bind(H,h),h[f.restangularFields.patch]=_.bind(I,h),h[f.restangularFields.get]=_.bind(v,h),h[f.restangularFields.getList]=_.bind(y,h,null),r(h),f.transformElem(h,!0,c,M)}function v(a,b,c){return this.customGET(a.toString(),b,c)}function w(a,b,c){var e=this,f=this[a],g=d.defer();return f.put(b,c).then(function(b){var c=s(e);c[a]=b,g.resolve(c)},function(a){g.reject(a)}),m(g.promise,!0)}function x(a,b,c,d,e,g){var h=f.responseExtractor(a,b,c,d,e,g),i=e.headers("ETag");return h&&i&&(h[f.restangularFields.etag]=i),h}function y(a,b,e){
 var g=this,h=d.defer(),i="getList",j=N.fetchUrl(this,a),k=a||g[f.restangularFields.route],l=f.fullRequestInterceptor(null,i,k,j,e||{},b||{},this[f.restangularFields.httpConfig]||{});return N.resource(this,c,l.httpConfig,l.headers,l.params,a,this[f.restangularFields.etag],i).getList().then(function(b){var c=b.data,d=b.config.params,e=x(c,i,k,j,b,h),l=_.map(e,function(b){return g[f.restangularFields.restangularCollection]?t(g[f.restangularFields.parentResource],b,g[f.restangularFields.route],e):t(g,b,a,e)});l=_.extend(e,l),g[f.restangularFields.restangularCollection]?p(h,b,u(g[f.restangularFields.parentResource],l,g[f.restangularFields.route],d)):p(h,b,u(g,l,a,d))},function(a){f.errorInterceptor(a)!==!1&&h.reject(a)}),m(h.promise,!0)}function z(a){return this[f.restangularFields.httpConfig]=a,this}function A(a,b,e,g,h){var i=this,j=d.defer(),k=e||{},l=b||this[f.restangularFields.route],n=N.fetchUrl(this,b),o=g||this,r=o[f.restangularFields.etag];_.isObject(o)&&(o=q(o));var s=f.fullReq
 uestInterceptor(o,a,l,n,h||{},k||{},this[f.restangularFields.httpConfig]||{}),u=function(c){var d=c.data,e=c.config.params,g=x(d,a,l,n,c,j);g?"post"!==a||i[f.restangularFields.restangularCollection]?p(j,c,t(i[f.restangularFields.parentResource],g,i[f.restangularFields.route],e)):p(j,c,t(i,g,b,e)):p(j,c,void 0)},v=function(a){f.errorInterceptor(a)!==!1&&j.reject(a)},w=a,y=_.extend({},s.headers),z=f.isOverridenMethod(a);return z&&(w="post",y=_.extend(y,{"X-HTTP-Method-Override":"remove"===a?"DELETE":a})),f.isSafe(a)?z?N.resource(this,c,s.httpConfig,y,s.params,b,r,w)[w]({}).then(u,v):N.resource(this,c,s.httpConfig,y,s.params,b,r,w)[w]().then(u,v):N.resource(this,c,s.httpConfig,y,s.params,b,r,w)[w](s.element).then(u,v),m(j.promise)}function B(a,b){return _.bind(A,this)("get",void 0,a,void 0,b)}function C(a,b){return _.bind(A,this)("remove",void 0,a,void 0,b)}function D(a,b){return _.bind(A,this)("put",void 0,a,void 0,b)}function E(a,b,c,d){return _.bind(A,this)("post",a,c,b,d)}function 
 F(a,b){return _.bind(A,this)("head",void 0,a,void 0,b)}function G(a,b){return _.bind(A,this)("trace",void 0,a,void 0,b)}function H(a,b){return _.bind(A,this)("options",void 0,a,void 0,b)}function I(a,b,c){return _.bind(A,this)("patch",void 0,b,a,c)}function J(a,b,c,d,e){return _.bind(A,this)(a,b,c,e,d)}function K(a,b,c,d,e,g){var h;h="getList"===b?_.bind(y,this,c):_.bind(J,this,b,c);var i=function(a,b,c){var f=_.defaults({params:a,headers:b,elem:c},{params:d,headers:e,elem:g});return h(f.params,f.headers,f.elem)};this[a]=f.isSafe(b)?i:function(a,b,c){return i(b,c,a)}}function L(c){var d=angular.copy(b);return a.init(d,d),c(d),e(d)}var M={},N=new f.urlCreatorFactory[f.urlCreator];return N.setConfig(f),a.init(M,f),M.copy=_.bind(s,M),M.withConfig=_.bind(L,M),M.one=_.bind(h,M,null),M.all=_.bind(i,M,null),M.several=_.bind(j,M,null),M.oneUrl=_.bind(k,M,null),M.allUrl=_.bind(l,M,null),M.restangularizeElement=_.bind(t,M),M.restangularizeCollection=_.bind(u,M),M}return e(b)}]})}(),function(a
 ,b){"use strict";var c=6,d=4,e="asc",f="desc",g="_ng_field_",h="_ng_depth_",i="_ng_hidden_",j="_ng_column_",k=/CUSTOM_FILTERS/g,l=/COL_FIELD/g,m=/DISPLAY_CELL_TEMPLATE/g,n=/EDITABLE_CELL_TEMPLATE/g,o=/CELL_EDITABLE_CONDITION/g,p=/<.+>/;a.ngGrid={},a.ngGrid.i18n={};var q=(angular.module("ngGrid.services",[]),angular.module("ngGrid.directives",[])),r=angular.module("ngGrid.filters",[]);angular.module("ngGrid",["ngGrid.services","ngGrid.directives","ngGrid.filters"]);var s=function(a,b,d,e){if(void 0===a.selectionProvider.selectedItems)return!0;var f,g=d.which||d.keyCode,h=!1,i=!1,j=void 0===a.selectionProvider.lastClickedRow?1:a.selectionProvider.lastClickedRow.rowIndex,k=a.columns.filter(function(a){return a.visible}),l=a.columns.filter(function(a){return a.pinned});if(a.col&&(f=k.indexOf(a.col)),37!==g&&38!==g&&39!==g&&40!==g&&(e.config.noTabInterference||9!==g)&&13!==g)return!0;if(a.enableCellSelection){9===g&&d.preventDefault();var m=a.showSelectionCheckbox?1===a.col.index:0===a.c
 ol.index,n=1===a.$index||0===a.$index,o=a.$index===a.renderedColumns.length-1||a.$index===a.renderedColumns.length-2,p=k.indexOf(a.col)===k.length-1,q=l.indexOf(a.col)===l.length-1;if(37===g||9===g&&d.shiftKey){var r=0;m||(f-=1),n?m&&9===g&&d.shiftKey?(r=e.$canvas.width(),f=k.length-1,i=!0):r=e.$viewport.scrollLeft()-a.col.width:l.length>0&&(r=e.$viewport.scrollLeft()-k[f].width),e.$viewport.scrollLeft(r)}else(39===g||9===g&&!d.shiftKey)&&(o?p&&9===g&&!d.shiftKey?(e.$viewport.scrollLeft(0),f=a.showSelectionCheckbox?1:0,h=!0):e.$viewport.scrollLeft(e.$viewport.scrollLeft()+a.col.width):q&&e.$viewport.scrollLeft(0),p||(f+=1))}var s;s=a.configGroups.length>0?e.rowFactory.parsedData.filter(function(a){return!a.isAggRow}):e.filteredRows;var t=0;if(0!==j&&(38===g||13===g&&d.shiftKey||9===g&&d.shiftKey&&i)?t=-1:j!==s.length-1&&(40===g||13===g&&!d.shiftKey||9===g&&h)&&(t=1),t){var u=s[j+t];u.beforeSelectionChange(u,d)&&(u.continueSelection(d),a.$emit("ngGridEventDigestGridParent"),a.selecti
 onProvider.lastClickedRow.renderedRowIndex>=a.renderedRows.length-c-2?e.$viewport.scrollTop(e.$viewport.scrollTop()+a.rowHeight):a.selectionProvider.lastClickedRow.renderedRowIndex<=c+2&&e.$viewport.scrollTop(e.$viewport.scrollTop()-a.rowHeight))}return a.enableCellSelection&&setTimeout(function(){a.domAccessProvider.focusCellElement(a,a.renderedColumns.indexOf(k[f]))},3),!1};String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),Array.prototype.indexOf||(Array.prototype.indexOf=function(a){var b=this.length>>>0,c=Number(arguments[1])||0;for(c=0>c?Math.ceil(c):Math.floor(c),0>c&&(c+=b);b>c;c++)if(c in this&&this[c]===a)return c;return-1}),Array.prototype.filter||(Array.prototype.filter=function(a){var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=[],e=arguments[1],f=0;c>f;f++)if(f in b){var g=b[f];a.call(e,g,f,b)&&d.push(g)}return d}),r.filter("checkmark",function(){return function(a){return a?"āœ”":"āœ˜"
 }}),r.filter("ngColumns",function(){return function(a){return a.filter(function(a){return!a.isAggCol})}}),angular.module("ngGrid.services").factory("$domUtilityService",["$utilityService","$window",function(a,c){var d={},e={},f=function(){var a=b("<div></div>");a.appendTo("body"),a.height(100).width(100).css("position","absolute").css("overflow","scroll"),a.append('<div style="height: 400px; width: 400px;"></div>'),d.ScrollH=a.height()-a[0].clientHeight,d.ScrollW=a.width()-a[0].clientWidth,a.empty(),a.attr("style",""),a.append('<span style="font-family: Verdana, Helvetica, Sans-Serif; font-size: 14px;"><strong>M</strong></span>'),d.LetterW=a.children().first().width(),a.remove()};return d.eventStorage={},d.AssignGridContainers=function(a,c,e){e.$root=b(c),e.$topPanel=e.$root.find(".ngTopPanel"),e.$groupPanel=e.$root.find(".ngGroupPanel"),e.$headerContainer=e.$topPanel.find(".ngHeaderContainer"),a.$headerContainer=e.$headerContainer,e.$headerScroller=e.$topPanel.find(".ngHeaderScroll
 er"),e.$headers=e.$headerScroller.children(),e.$viewport=e.$root.find(".ngViewport"),e.$canvas=e.$viewport.find(".ngCanvas"),e.$footerPanel=e.$root.find(".ngFooterPanel");var f=a.$watch(function(){return e.$viewport.scrollLeft()},function(a){return e.$headerContainer.scrollLeft(a)});a.$on("$destroy",function(){b(e.$root.parent()).off("resize.nggrid"),e.$root=null,e.$topPanel=null,e.$headerContainer=null,e.$headers=null,e.$canvas=null,e.$footerPanel=null,f()}),d.UpdateGridLayout(a,e)},d.getRealWidth=function(a){var c=0,d={visibility:"hidden",display:"block"},e=a.parents().andSelf().not(":visible");return b.swap(e[0],d,function(){c=a.outerWidth()}),c},d.UpdateGridLayout=function(a,b){if(b.$root){var c=b.$viewport.scrollTop();b.elementDims.rootMaxW=b.$root.width(),b.$root.is(":hidden")&&(b.elementDims.rootMaxW=d.getRealWidth(b.$root)),b.elementDims.rootMaxH=b.$root.height(),b.refreshDomSizes(),a.adjustScrollTop(c,!0)}},d.numberOfGrids=0,d.setStyleText=function(a,b){var d=a.styleSheet,e
 =a.gridId,f=c.document;d||(d=f.getElementById(e)),d||(d=f.createElement("style"),d.type="text/css",d.id=e,(f.head||f.getElementsByTagName("head")[0]).appendChild(d)),d.styleSheet&&!d.sheet?d.styleSheet.cssText=b:d.innerHTML=b,a.styleSheet=d,a.styleText=b},d.BuildStyles=function(a,b,c){var e,f=b.config.rowHeight,g=b.gridId,h=a.columns,i=0,j=a.totalRowWidth();e="."+g+" .ngCanvas { width: "+j+"px; }."+g+" .ngRow { width: "+j+"px; }."+g+" .ngCanvas { width: "+j+"px; }."+g+" .ngHeaderScroller { width: "+(j+d.ScrollH)+"px}";for(var k=0;k<h.length;k++){var l=h[k];l.visible!==!1&&(e+="."+g+" .col"+k+" { width: "+l.width+"px; left: "+i+"px; height: "+f+"px }."+g+" .colt"+k+" { width: "+l.width+"px; }",i+=l.width)}d.setStyleText(b,e),a.adjustScrollLeft(b.$viewport.scrollLeft()),c&&d.digest(a)},d.setColLeft=function(a,b,c){if(c.styleText){var f=e[a.index];f||(f=e[a.index]=new RegExp(".col"+a.index+" { width: [0-9]+px; left: [0-9]+px"));var g=c.styleText.replace(f,".col"+a.index+" { width: "+a.
 width+"px; left: "+b+"px");d.setStyleText(c,g)}},d.setColLeft.immediate=1,d.RebuildGrid=function(a,b){d.UpdateGridLayout(a,b),(null==b.config.maintainColumnRatios||b.config.maintainColumnRatios)&&b.configureColumnWidths(),a.adjustScrollLeft(b.$viewport.scrollLeft()),d.BuildStyles(a,b,!0)},d.digest=function(a){a.$root.$$phase||a.$digest()},d.ScrollH=17,d.ScrollW=17,d.LetterW=10,f(),d}]),angular.module("ngGrid.services").factory("$sortService",["$parse",function(a){var b={};return b.colSortFnCache={},b.isCustomSort=!1,b.guessSortFn=function(a){var c=typeof a;switch(c){case"number":return b.sortNumber;case"boolean":return b.sortBool;case"string":return a.match(/^[-+]?[Ā£$Ā¤]?[\d,.]+%?$/)?b.sortNumberStr:b.sortAlpha;default:return"[object Date]"===Object.prototype.toString.call(a)?b.sortDate:b.basicSort}},b.basicSort=function(a,b){return a===b?0:b>a?-1:1},b.sortNumber=function(a,b){return a-b},b.sortNumberStr=function(a,b){var c,d,e=!1,f=!1;return c=parseFloat(a.replace(/[^0-9.-]/g,""))
 ,isNaN(c)&&(e=!0),d=parseFloat(b.replace(/[^0-9.-]/g,"")),isNaN(d)&&(f=!0),e&&f?0:e?1:f?-1:c-d},b.sortAlpha=function(a,b){var c=a.toLowerCase(),d=b.toLowerCase();return c===d?0:d>c?-1:1},b.sortDate=function(a,b){var c=a.getTime(),d=b.getTime();return c===d?0:d>c?-1:1},b.sortBool=function(a,b){return a&&b?0:a||b?a?1:-1:0},b.sortData=function(c,d){if(d&&c){var f,g,h=c.fields.length,i=c.fields,j=d.slice(0);d.sort(function(d,k){for(var l,m,n=0,o=0;0===n&&h>o;){f=c.columns[o],g=c.directions[o],m=b.getSortFn(f,j);var p=a(i[o])(d),q=a(i[o])(k);b.isCustomSort?(l=m(p,q),n=g===e?l:0-l):!p&&0!==p||!q&&0!==q?q||p?p?q||(n=-1):n=1:n=0:(l=m(p,q),n=g===e?l:0-l),o++}return n})}},b.Sort=function(a,c){b.isSorting||(b.isSorting=!0,b.sortData(a,c),b.isSorting=!1)},b.getSortFn=function(c,d){var e,f;if(b.colSortFnCache[c.field])e=b.colSortFnCache[c.field];else if(void 0!==c.sortingAlgorithm)e=c.sortingAlgorithm,b.colSortFnCache[c.field]=c.sortingAlgorithm,b.isCustomSort=!0;else{if(f=d[0],!f)return e;e=b.g
 uessSortFn(a(c.field)(f)),e?b.colSortFnCache[c.field]=e:e=b.sortAlpha}return e},b}]),angular.module("ngGrid.services").factory("$utilityService",["$parse",function(c){var d=/function (.{1,})\(/,e={visualLength:function(a){var c=document.getElementById("testDataLength");c||(c=document.createElement("SPAN"),c.id="testDataLength",c.style.visibility="hidden",document.body.appendChild(c));var d=b(a);b(c).css({font:d.css("font"),"font-size":d.css("font-size"),"font-family":d.css("font-family")}),c.innerHTML=d.text();var e=c.offsetWidth;return document.body.removeChild(c),e},forIn:function(a,b){for(var c in a)a.hasOwnProperty(c)&&b(a[c],c)},evalProperty:function(a,b){return c("entity."+b)({entity:a})},endsWith:function(a,b){return a&&b&&"string"==typeof a?-1!==a.indexOf(b,a.length-b.length):!1},isNullOrUndefined:function(a){return void 0===a||null===a?!0:!1},getElementsByClassName:function(a){if(document.getElementsByClassName)return document.getElementsByClassName(a);for(var b=[],c=new Re
 gExp("\\b"+a+"\\b"),d=document.getElementsByTagName("*"),e=0;e<d.length;e++){var f=d[e].className;c.test(f)&&b.push(d[e])}return b},newId:function(){var a=(new Date).getTime();return function(){return a+=1}}(),seti18n:function(b,c){var d=a.ngGrid.i18n[c];for(var e in d)b.i18n[e]=d[e]},getInstanceType:function(a){var b=d.exec(a.constructor.toString());if(b&&b.length>1){var c=b[1].replace(/^\s+|\s+$/g,"");return c}return""}};return e}]);var t=function(a,b,c,d){this.rowIndex=0,this.offsetTop=this.rowIndex*c,this.entity=a,this.label=a.gLabel,this.field=a.gField,this.depth=a.gDepth,this.parent=a.parent,this.children=a.children,this.aggChildren=a.aggChildren,this.aggIndex=a.aggIndex,this.collapsed=d,this.groupInitState=d,this.rowFactory=b,this.rowHeight=c,this.isAggRow=!0,this.offsetLeft=25*a.gDepth,this.aggLabelFilter=a.aggLabelFilter};t.prototype.toggleExpand=function(){this.collapsed=this.collapsed?!1:!0,this.orig&&(this.orig.collapsed=this.collapsed),this.notifyChildren()},t.prototype
 .setExpand=function(a){this.collapsed=a,this.notifyChildren()},t.prototype.notifyChildren=function(){for(var a=Math.max(this.rowFactory.aggCache.length,this.children.length),b=0;a>b;b++)if(this.aggChildren[b]&&(this.aggChildren[b].entity[i]=this.collapsed,this.collapsed&&this.aggChildren[b].setExpand(this.collapsed)),this.children[b]&&(this.children[b][i]=this.collapsed),b>this.aggIndex&&this.rowFactory.aggCache[b]){var c=this.rowFactory.aggCache[b],d=30*this.children.length;c.offsetTop=this.collapsed?c.offsetTop-d:c.offsetTop+d}this.rowFactory.renderedChange()},t.prototype.aggClass=function(){return this.collapsed?"ngAggArrowCollapsed":"ngAggArrowExpanded"},t.prototype.totalChildren=function(){if(this.aggChildren.length>0){var a=0,b=function(c){c.aggChildren.length>0?angular.forEach(c.aggChildren,function(a){b(a)}):a+=c.children.length};return b(this),a}return this.children.length},t.prototype.copy=function(){var a=new t(this.entity,this.rowFactory,this.rowHeight,this.groupInitStat
 e);return a.orig=this,a};var u=function(a,c,d,g,h,i){var j=this,l=a.colDef,m=500,n=0,o=null;j.colDef=a.colDef,j.width=l.width,j.groupIndex=0,j.isGroupedBy=!1,j.minWidth=l.minWidth?l.minWidth:50,j.maxWidth=l.maxWidth?l.maxWidth:9e3,j.enableCellEdit=void 0!==l.enableCellEdit?l.enableCellEdit:a.enableCellEdit||a.enableCellEditOnFocus,j.cellEditableCondition=l.cellEditableCondition||a.cellEditableCondition||"true",j.headerRowHeight=a.headerRowHeight,j.displayName=void 0===l.displayName?l.field:l.displayName,j.index=a.index,j.isAggCol=a.isAggCol,j.cellClass=l.cellClass,j.sortPriority=void 0,j.cellFilter=l.cellFilter?l.cellFilter:"",j.field=l.field,j.aggLabelFilter=l.aggLabelFilter||l.cellFilter,j.visible=i.isNullOrUndefined(l.visible)||l.visible,j.sortable=!1,j.resizable=!1,j.pinnable=!1,j.pinned=a.enablePinning&&l.pinned,j.originalIndex=null==a.originalIndex?j.index:a.originalIndex,j.groupable=i.isNullOrUndefined(l.groupable)||l.groupable,a.enableSort&&(j.sortable=i.isNullOrUndefined(l.
 sortable)||l.sortable),a.enableResize&&(j.resizable=i.isNullOrUndefined(l.resizable)||l.resizable),a.enablePinning&&(j.pinnable=i.isNullOrUndefined(l.pinnable)||l.pinnable),j.sortDirection=void 0,j.sortingAlgorithm=l.sortFn,j.headerClass=l.headerClass,j.cursor=j.sortable?"pointer":"default",j.headerCellTemplate=l.headerCellTemplate||h.get("headerCellTemplate.html"),j.cellTemplate=l.cellTemplate||h.get("cellTemplate.html").replace(k,j.cellFilter?"|"+j.cellFilter:""),j.enableCellEdit&&(j.cellEditTemplate=l.cellEditTemplate||h.get("cellEditTemplate.html"),j.editableCellTemplate=l.editableCellTemplate||h.get("editableCellTemplate.html")),l.cellTemplate&&!p.test(l.cellTemplate)&&(j.cellTemplate=h.get(l.cellTemplate)||b.ajax({type:"GET",url:l.cellTemplate,async:!1}).responseText),j.enableCellEdit&&l.editableCellTemplate&&!p.test(l.editableCellTemplate)&&(j.editableCellTemplate=h.get(l.editableCellTemplate)||b.ajax({type:"GET",url:l.editableCellTemplate,async:!1}).responseText),l.headerCel
 lTemplate&&!p.test(l.headerCellTemplate)&&(j.headerCellTemplate=h.get(l.headerCellTemplate)||b.ajax({type:"GET",url:l.headerCellTemplate,async:!1}).responseText),j.colIndex=function(){var a=j.pinned?"pinned ":"";return a+="col"+j.index+" colt"+j.index,j.cellClass&&(a+=" "+j.cellClass),a},j.groupedByClass=function(){return j.isGroupedBy?"ngGroupedByIcon":"ngGroupIcon"},j.toggleVisible=function(){j.visible=!j.visible},j.showSortButtonUp=function(){return j.sortable?j.sortDirection===f:j.sortable},j.showSortButtonDown=function(){return j.sortable?j.sortDirection===e:j.sortable},j.noSortVisible=function(){return!j.sortDirection},j.sort=function(b){if(!j.sortable)return!0;var c=j.sortDirection===e?f:e;return j.sortDirection=c,a.sortCallback(j,b),!1},j.gripClick=function(){n++,1===n?o=setTimeout(function(){n=0},m):(clearTimeout(o),a.resizeOnDataCallback(j),n=0)},j.gripOnMouseDown=function(a){return c.isColumnResizing=!0,a.ctrlKey&&!j.pinned?(j.toggleVisible(),g.BuildStyles(c,d),!0):(a.tar
 get.parentElement.style.cursor="col-resize",j.startMousePosition=a.clientX,j.origWidth=j.width,b(document).mousemove(j.onMouseMove),b(document).mouseup(j.gripOnMouseUp),!1)},j.onMouseMove=function(a){var b=a.clientX-j.startMousePosition,e=b+j.origWidth;return j.width=e<j.minWidth?j.minWidth:e>j.maxWidth?j.maxWidth:e,c.hasUserChangedGridColumnWidths=!0,g.BuildStyles(c,d),!1},j.gripOnMouseUp=function(a){return b(document).off("mousemove",j.onMouseMove),b(document).off("mouseup",j.gripOnMouseUp),a.target.parentElement.style.cursor="default",g.digest(c),c.isColumnResizing=!1,!1},j.copy=function(){var b=new u(a,c,d,g,h,i);return b.isClone=!0,b.orig=j,b},j.setVars=function(a){j.orig=a,j.width=a.width,j.groupIndex=a.groupIndex,j.isGroupedBy=a.isGroupedBy,j.displayName=a.displayName,j.index=a.index,j.isAggCol=a.isAggCol,j.cellClass=a.cellClass,j.cellFilter=a.cellFilter,j.field=a.field,j.aggLabelFilter=a.aggLabelFilter,j.visible=a.visible,j.sortable=a.sortable,j.resizable=a.resizable,j.pinna
 ble=a.pinnable,j.pinned=a.pinned,j.originalIndex=a.originalIndex,j.sortDirection=a.sortDirection,j.sortingAlgorithm=a.sortingAlgorithm,j.headerClass=a.headerClass,j.headerCellTemplate=a.headerCellTemplate,j.cellTemplate=a.cellTemplate,j.cellEditTemplate=a.cellEditTemplate}},v=function(a){this.outerHeight=null,this.outerWidth=null,b.extend(this,a)},w=function(a){this.previousColumn=null,this.grid=a};w.prototype.changeUserSelect=function(a,b){a.css({"-webkit-touch-callout":b,"-webkit-user-select":b,"-khtml-user-select":b,"-moz-user-select":"none"===b?"-moz-none":b,"-ms-user-select":b,"user-select":b})},w.prototype.focusCellElement=function(a,b){if(a.selectionProvider.lastClickedRow){var c=void 0!==b?b:this.previousColumn,d=a.selectionProvider.lastClickedRow.clone?a.selectionProvider.lastClickedRow.clone.elm:a.selectionProvider.lastClickedRow.elm;if(void 0!==c&&d){var e=angular.element(d[0].children).filter(function(){return 8!==this.nodeType}),f=Math.max(Math.min(a.renderedColumns.len
 gth-1,c),0);this.grid.config.showSelectionCheckbox&&angular.element(e[f]).scope()&&0===angular.element(e[f]).scope().col.index&&(f=1),e[f]&&e[f].children[1].children[0].focus(),this.previousColumn=c}}},w.prototype.selectionHandlers=function(a,b){function c(c){if(16===c.keyCode)return f.changeUserSelect(b,"none",c),!0;if(!e){e=!0;var d=s(a,b,c,f.grid);return e=!1,d}return!0}function d(a){return 16===a.keyCode&&f.changeUserSelect(b,"text",a),!0}var e=!1,f=this;b.bind("keydown",c),b.bind("keyup",d),b.on("$destroy",function(){b.off("keydown",c),b.off("keyup",d)})};var x=function(c,d,e,f){var g=this;g.colToMove=void 0,g.groupToMove=void 0,g.assignEvents=function(){c.config.jqueryUIDraggable&&!c.config.enablePinning?(c.$groupPanel.droppable({addClasses:!1,drop:function(a){g.onGroupDrop(a)}}),c.$groupPanel.on("$destroy",function(){c.$groupPanel=null})):(c.$groupPanel.on("mousedown",g.onGroupMouseDown).on("dragover",g.dragOver).on("drop",g.onGroupDrop),c.$topPanel.on("mousedown",".ngHeaderS
 croller",g.onHeaderMouseDown).on("dragover",".ngHeaderScroller",g.dragOver),c.$groupPanel.on("$destroy",function(){c.$groupPanel&&c.$groupPanel.off("mousedown"),c.$groupPanel=null
-}),c.config.enableColumnReordering&&c.$topPanel.on("drop",".ngHeaderScroller",g.onHeaderDrop),c.$topPanel.on("$destroy",function(){c.$topPanel&&c.$topPanel.off("mousedown"),c.config.enableColumnReordering&&c.$topPanel&&c.$topPanel.off("drop"),c.$topPanel=null})),d.$on("$destroy",d.$watch("renderedColumns",function(){f(g.setDraggables)}))},g.dragStart=function(a){a.dataTransfer.setData("text","")},g.dragOver=function(a){a.preventDefault()},g.setDraggables=function(){if(c.config.jqueryUIDraggable)c.$root&&c.$root.find(".ngHeaderSortColumn").draggable({helper:"clone",appendTo:"body",stack:"div",addClasses:!1,start:function(a){g.onHeaderMouseDown(a)}}).droppable({drop:function(a){g.onHeaderDrop(a)}});else{var a=c.$root.find(".ngHeaderSortColumn");if(angular.forEach(a,function(a){a.className&&-1!==a.className.indexOf("ngHeaderSortColumn")&&(a.setAttribute("draggable","true"),a.addEventListener&&(a.addEventListener("dragstart",g.dragStart),angular.element(a).on("$destroy",function(){angul
 ar.element(a).off("dragstart",g.dragStart),a.removeEventListener("dragstart",g.dragStart)})))}),-1!==navigator.userAgent.indexOf("MSIE")){var b=c.$root.find(".ngHeaderSortColumn");b.bind("selectstart",function(){return this.dragDrop(),!1}),angular.element(b).on("$destroy",function(){b.off("selectstart")})}}},g.onGroupMouseDown=function(a){var d=b(a.target);if("ngRemoveGroup"!==d[0].className){var e=angular.element(d).scope();e&&(c.config.jqueryUIDraggable||(d.attr("draggable","true"),this.addEventListener&&(this.addEventListener("dragstart",g.dragStart),angular.element(this).on("$destroy",function(){this.removeEventListener("dragstart",g.dragStart)})),-1!==navigator.userAgent.indexOf("MSIE")&&(d.bind("selectstart",function(){return this.dragDrop(),!1}),d.on("$destroy",function(){d.off("selectstart")}))),g.groupToMove={header:d,groupName:e.group,index:e.$index})}else g.groupToMove=void 0},g.onGroupDrop=function(a){a.stopPropagation();var e,f;g.groupToMove?(e=b(a.target).closest(".ngG
 roupElement"),"ngGroupPanel"===e.context.className?(d.configGroups.splice(g.groupToMove.index,1),d.configGroups.push(g.groupToMove.groupName)):(f=angular.element(e).scope(),f&&g.groupToMove.index!==f.$index&&(d.configGroups.splice(g.groupToMove.index,1),d.configGroups.splice(f.$index,0,g.groupToMove.groupName))),g.groupToMove=void 0,c.fixGroupIndexes()):g.colToMove&&(-1===d.configGroups.indexOf(g.colToMove.col)&&(e=b(a.target).closest(".ngGroupElement"),"ngGroupPanel"===e.context.className||"ngGroupPanelDescription ng-binding"===e.context.className?d.groupBy(g.colToMove.col):(f=angular.element(e).scope(),f&&d.removeGroup(f.$index))),g.colToMove=void 0),d.$$phase||d.$apply()},g.onHeaderMouseDown=function(a){var c=b(a.target).closest(".ngHeaderSortColumn"),d=angular.element(c).scope();d&&(g.colToMove={header:c,col:d.col})},g.onHeaderDrop=function(a){if(g.colToMove&&!g.colToMove.col.pinned){var f=b(a.target).closest(".ngHeaderSortColumn"),h=angular.element(f).scope();if(h){if(g.colToMo
 ve.col===h.col||h.col.pinned)return;d.columns.splice(g.colToMove.col.index,1),d.columns.splice(h.col.index,0,g.colToMove.col),c.fixColumnIndexes(),g.colToMove=void 0,e.digest(d)}}},g.assignGridEventHandlers=function(){-1===c.config.tabIndex?(c.$viewport.attr("tabIndex",e.numberOfGrids),e.numberOfGrids++):c.$viewport.attr("tabIndex",c.config.tabIndex);var f,g=function(){clearTimeout(f),f=setTimeout(function(){e.RebuildGrid(d,c)},100)};b(a).on("resize.nggrid",g);var h,i=function(){clearTimeout(h),h=setTimeout(function(){e.RebuildGrid(d,c)},100)};b(c.$root.parent()).on("resize.nggrid",i),d.$on("$destroy",function(){b(a).off("resize.nggrid",g)})},g.assignGridEventHandlers(),g.assignEvents()},y=function(a,b){a.maxRows=function(){var c=Math.max(a.totalServerItems,b.data.length);return c},a.$on("$destroy",a.$watch("totalServerItems",function(){a.currentMaxPages=a.maxPages()})),a.multiSelect=b.config.enableRowSelection&&b.config.multiSelect,a.selectedItemCount=b.selectedItemCount,a.maxPages
 =function(){return 0===a.maxRows()?1:Math.ceil(a.maxRows()/a.pagingOptions.pageSize)},a.pageForward=function(){var b=a.pagingOptions.currentPage;a.totalServerItems>0?a.pagingOptions.currentPage=Math.min(b+1,a.maxPages()):a.pagingOptions.currentPage++},a.pageBackward=function(){var b=a.pagingOptions.currentPage;a.pagingOptions.currentPage=Math.max(b-1,1)},a.pageToFirst=function(){a.pagingOptions.currentPage=1},a.pageToLast=function(){var b=a.maxPages();a.pagingOptions.currentPage=b},a.cantPageForward=function(){var c=a.pagingOptions.currentPage,d=a.maxPages();return a.totalServerItems>0?c>=d:b.data.length<1},a.cantPageToLast=function(){return a.totalServerItems>0?a.cantPageForward():!0},a.cantPageBackward=function(){var b=a.pagingOptions.currentPage;return 1>=b}},z=function(e,f,g,h,j,k,l,m,n,o,q){var r={aggregateTemplate:void 0,afterSelectionChange:function(){},beforeSelectionChange:function(){return!0},checkboxCellTemplate:void 0,checkboxHeaderTemplate:void 0,columnDefs:void 0,data:
 [],dataUpdated:function(){},enableCellEdit:!1,enableCellEditOnFocus:!1,enableCellSelection:!1,enableColumnResize:!1,enableColumnReordering:!1,enableColumnHeavyVirt:!1,enablePaging:!1,enablePinning:!1,enableRowSelection:!0,enableSorting:!0,enableHighlighting:!1,excludeProperties:[],filterOptions:{filterText:"",useExternalFilter:!1},footerRowHeight:55,footerTemplate:void 0,forceSyncScrolling:!0,groups:[],groupsCollapsedByDefault:!0,headerRowHeight:30,headerRowTemplate:void 0,jqueryUIDraggable:!1,jqueryUITheme:!1,keepLastSelected:!0,maintainColumnRatios:void 0,menuTemplate:void 0,multiSelect:!0,pagingOptions:{pageSizes:[250,500,1e3],pageSize:250,currentPage:1},pinSelectionCheckbox:!1,plugins:[],primaryKey:void 0,rowHeight:30,rowTemplate:void 0,selectedItems:[],selectWithCheckboxOnly:!1,showColumnMenu:!1,showFilter:!1,showFooter:!1,showGroupPanel:!1,showSelectionCheckbox:!1,sortInfo:{fields:[],columns:[],directions:[]},tabIndex:-1,totalServerItems:0,useExternalSorting:!1,i18n:"en",virtu
 alizationThreshold:50,noTabInterference:!1},s=this;s.maxCanvasHt=0,s.config=b.extend(r,a.ngGrid.config,f),s.config.showSelectionCheckbox=s.config.showSelectionCheckbox&&s.config.enableColumnHeavyVirt===!1,s.config.enablePinning=s.config.enablePinning&&s.config.enableColumnHeavyVirt===!1,s.config.selectWithCheckboxOnly=s.config.selectWithCheckboxOnly&&s.config.showSelectionCheckbox!==!1,s.config.pinSelectionCheckbox=s.config.enablePinning,"string"==typeof f.columnDefs&&(s.config.columnDefs=e.$eval(f.columnDefs)),s.rowCache=[],s.rowMap=[],s.gridId="ng"+l.newId(),s.$root=null,s.$groupPanel=null,s.$topPanel=null,s.$headerContainer=null,s.$headerScroller=null,s.$headers=null,s.$viewport=null,s.$canvas=null,s.rootDim=s.config.gridDim,s.data=[],s.lateBindColumns=!1,s.filteredRows=[],s.initTemplates=function(){var a=["rowTemplate","aggregateTemplate","headerRowTemplate","checkboxCellTemplate","checkboxHeaderTemplate","menuTemplate","footerTemplate"],b=[];return angular.forEach(a,function(a)
 {b.push(s.getTemplate(a))}),q.all(b)},s.getTemplate=function(a){var b=s.config[a],c=s.gridId+a+".html",d=q.defer();if(b&&!p.test(b))o.get(b,{cache:k}).success(function(a){k.put(c,a),d.resolve()}).error(function(){d.reject("Could not load template: "+b)});else if(b)k.put(c,b),d.resolve();else{var e=a+".html";k.put(c,k.get(e)),d.resolve()}return d.promise},"object"==typeof s.config.data&&(s.data=s.config.data),s.calcMaxCanvasHeight=function(){var a;return a=s.config.groups.length>0?s.rowFactory.parsedData.filter(function(a){return!a[i]}).length*s.config.rowHeight:s.filteredRows.length*s.config.rowHeight},s.elementDims={scrollW:0,scrollH:0,rowIndexCellW:25,rowSelectedCellW:25,rootMaxW:0,rootMaxH:0},s.setRenderedRows=function(a){e.renderedRows.length=a.length;for(var b=0;b<a.length;b++)!e.renderedRows[b]||a[b].isAggRow||e.renderedRows[b].isAggRow?(e.renderedRows[b]=a[b].copy(),e.renderedRows[b].collapsed=a[b].collapsed,a[b].isAggRow||e.renderedRows[b].setVars(a[b])):e.renderedRows[b].se
 tVars(a[b]),e.renderedRows[b].rowIndex=a[b].rowIndex,e.renderedRows[b].offsetTop=a[b].offsetTop,e.renderedRows[b].selected=a[b].selected,a[b].renderedRowIndex=b;s.refreshDomSizes(),e.$emit("ngGridEventRows",a)},s.minRowsToRender=function(){var a=e.viewportDimHeight()||1;return Math.floor(a/s.config.rowHeight)},s.refreshDomSizes=function(){var a=new v;a.outerWidth=s.elementDims.rootMaxW,a.outerHeight=s.elementDims.rootMaxH,s.rootDim=a,s.maxCanvasHt=s.calcMaxCanvasHeight()},s.buildColumnDefsFromData=function(){s.config.columnDefs=[];var a=s.data[0];return a?void l.forIn(a,function(a,b){-1===s.config.excludeProperties.indexOf(b)&&s.config.columnDefs.push({field:b})}):void(s.lateBoundColumns=!0)},s.buildColumns=function(){var a=s.config.columnDefs,b=[];if(a||(s.buildColumnDefsFromData(),a=s.config.columnDefs),s.config.showSelectionCheckbox&&b.push(new u({colDef:{field:"āœ”",width:s.elementDims.rowSelectedCellW,sortable:!1,resizable:!1,groupable:!1,headerCellTemplate:k.get(e.gridId+"chec
 kboxHeaderTemplate.html"),cellTemplate:k.get(e.gridId+"checkboxCellTemplate.html"),pinned:s.config.pinSelectionCheckbox},index:0,headerRowHeight:s.config.headerRowHeight,sortCallback:s.sortData,resizeOnDataCallback:s.resizeOnData,enableResize:s.config.enableColumnResize,enableSort:s.config.enableSorting,enablePinning:s.config.enablePinning},e,s,h,k,l)),a.length>0){var c=s.config.showSelectionCheckbox?1:0,d=e.configGroups.length;e.configGroups.length=0,angular.forEach(a,function(a,f){f+=c;var g=new u({colDef:a,index:f+d,originalIndex:f,headerRowHeight:s.config.headerRowHeight,sortCallback:s.sortData,resizeOnDataCallback:s.resizeOnData,enableResize:s.config.enableColumnResize,enableSort:s.config.enableSorting,enablePinning:s.config.enablePinning,enableCellEdit:s.config.enableCellEdit||s.config.enableCellEditOnFocus,cellEditableCondition:s.config.cellEditableCondition},e,s,h,k,l),i=s.config.groups.indexOf(a.field);-1!==i&&(g.isGroupedBy=!0,e.configGroups.splice(i,0,g),g.groupIndex=e.co
 nfigGroups.length),b.push(g)}),e.columns=b,s.config.groups.length>0&&s.rowFactory.getGrouping(s.config.groups)}},s.configureColumnWidths=function(){var a=[],b=[],c=0,d=0,f={};if(angular.forEach(e.columns,function(a,b){if(!l.isNullOrUndefined(a.originalIndex)){var c=a.originalIndex;s.config.showSelectionCheckbox&&(0===a.originalIndex&&a.visible&&(d+=25),c--),f[c]=b}}),angular.forEach(s.config.columnDefs,function(g,h){var i=e.columns[f[h]];g.index=h;var j,k=!1;if(l.isNullOrUndefined(g.width)?g.width="*":(k=isNaN(g.width)?l.endsWith(g.width,"%"):!1,j=k?g.width:parseInt(g.width,10)),isNaN(j)&&!e.hasUserChangedGridColumnWidths){if(j=g.width,"auto"===j){i.width=i.minWidth,d+=i.width;var m=i;return void e.$on("$destroy",e.$on("ngGridEventData",function(){s.resizeOnData(m)}))}if(-1!==j.indexOf("*"))return i.visible!==!1&&(c+=j.length),void a.push(g);if(k)return void b.push(g);throw'unable to parse column width, use percentage ("10%","20%", etc...) or "*" to use remaining width of grid'}i.vi
 sible!==!1&&(d+=i.width=parseInt(i.width,10))}),b.length>0){s.config.maintainColumnRatios=s.config.maintainColumnRatios!==!1;var g=0,i=0;angular.forEach(b,function(a){var b=e.columns[f[a.index]],c=parseFloat(a.width)/100;g+=c,b.visible||(i+=c)});var j=g-i;angular.forEach(b,function(a){var b=e.columns[f[a.index]],c=parseFloat(a.width)/100;c/=i>0?j:g;var h=s.rootDim.outerWidth*g;b.width=h*c,d+=b.width})}if(a.length>0){s.config.maintainColumnRatios=s.config.maintainColumnRatios!==!1;var k=s.rootDim.outerWidth-d;s.maxCanvasHt>e.viewportDimHeight()&&(k-=h.ScrollW);var m=Math.floor(k/c);angular.forEach(a,function(b,c){var g=e.columns[f[b.index]];g.width=m*b.width.length,g.visible!==!1&&(d+=g.width);var i=c===a.length-1;if(i&&d<s.rootDim.outerWidth){var j=s.rootDim.outerWidth-d;s.maxCanvasHt>e.viewportDimHeight()&&(j-=h.ScrollW),g.width+=j}})}},s.init=function(){return s.initTemplates().then(function(){e.selectionProvider=new E(s,e,n),e.domAccessProvider=new w(s),s.rowFactory=new C(s,e,h,k
 ,l),s.searchProvider=new D(e,s,j),s.styleProvider=new F(e,s),e.$on("$destroy",e.$watch("configGroups",function(a){var b=[];angular.forEach(a,function(a){b.push(a.field||a)}),s.config.groups=b,s.rowFactory.filteredRowsChanged(),e.$emit("ngGridEventGroups",a)},!0)),e.$on("$destroy",e.$watch("columns",function(a){e.isColumnResizing||h.RebuildGrid(e,s),e.$emit("ngGridEventColumns",a)},!0)),e.$on("$destroy",e.$watch(function(){return f.i18n},function(a){l.seti18n(e,a)})),s.maxCanvasHt=s.calcMaxCanvasHeight(),s.config.sortInfo.fields&&s.config.sortInfo.fields.length>0&&e.$on("$destroy",e.$watch(function(){return s.config.sortInfo},function(){g.isSorting||(s.sortColumnsInit(),e.$emit("ngGridEventSorted",s.config.sortInfo))},!0))})},s.resizeOnData=function(a){var c=a.minWidth,d=l.getElementsByClassName("col"+a.index);angular.forEach(d,function(a,d){var e;if(0===d){var f=b(a).find(".ngHeaderText");e=l.visualLength(f)+10}else{var g=b(a).find(".ngCellText");e=l.visualLength(g)+10}e>c&&(c=e)}),
 a.width=a.longest=Math.min(a.maxWidth,c+7),h.BuildStyles(e,s,!0)},s.lastSortedColumns=[],s.sortData=function(a,c){if(c&&c.shiftKey&&s.config.sortInfo){var d=s.config.sortInfo.columns.indexOf(a);-1===d?(1===s.config.sortInfo.columns.length&&(s.config.sortInfo.columns[0].sortPriority=1),s.config.sortInfo.columns.push(a),a.sortPriority=s.config.sortInfo.columns.length,s.config.sortInfo.fields.push(a.field),s.config.sortInfo.directions.push(a.sortDirection),s.lastSortedColumns.push(a)):s.config.sortInfo.directions[d]=a.sortDirection}else if(!s.config.useExternalSorting||s.config.useExternalSorting&&s.config.sortInfo){var f=b.isArray(a);s.config.sortInfo.columns.length=0,s.config.sortInfo.fields.length=0,s.config.sortInfo.directions.length=0;var g=function(a){s.config.sortInfo.columns.push(a),s.config.sortInfo.fields.push(a.field),s.config.sortInfo.directions.push(a.sortDirection),s.lastSortedColumns.push(a)};f?angular.forEach(a,function(a,b){a.sortPriority=b+1,g(a)}):(s.clearSortingData
 (a),a.sortPriority=void 0,g(a)),s.sortActual(),s.searchProvider.evalFilter(),e.$emit("ngGridEventSorted",s.config.sortInfo)}},s.sortColumnsInit=function(){s.config.sortInfo.columns?s.config.sortInfo.columns.length=0:s.config.sortInfo.columns=[];var a=[];angular.forEach(e.columns,function(b){var c=s.config.sortInfo.fields.indexOf(b.field);-1!==c&&(b.sortDirection=s.config.sortInfo.directions[c]||"asc",a[c]=b)}),s.sortData(1===a.length?a[0]:a)},s.sortActual=function(){if(!s.config.useExternalSorting){var a=s.data.slice(0);angular.forEach(a,function(a,b){var c=s.rowMap[b];if(void 0!==c){var d=s.rowCache[c];void 0!==d&&(a.preSortSelected=d.selected,a.preSortIndex=b)}}),g.Sort(s.config.sortInfo,a),angular.forEach(a,function(a,b){s.rowCache[b].entity=a,s.rowCache[b].selected=a.preSortSelected,s.rowMap[a.preSortIndex]=b,delete a.preSortSelected,delete a.preSortIndex})}},s.clearSortingData=function(a){a?(angular.forEach(s.lastSortedColumns,function(b){a.index!==b.index&&(b.sortDirection="",
 b.sortPriority=null)}),s.lastSortedColumns[0]=a,s.lastSortedColumns.length=1):(angular.forEach(s.lastSortedColumns,function(a){a.sortDirection="",a.sortPriority=null}),s.lastSortedColumns=[])},s.fixColumnIndexes=function(){for(var a=0;a<e.columns.length;a++)e.columns[a].index=a},s.fixGroupIndexes=function(){angular.forEach(e.configGroups,function(a,b){a.groupIndex=b+1})},e.elementsNeedMeasuring=!0,e.columns=[],e.renderedRows=[],e.renderedColumns=[],e.headerRow=null,e.rowHeight=s.config.rowHeight,e.jqueryUITheme=s.config.jqueryUITheme,e.showSelectionCheckbox=s.config.showSelectionCheckbox,e.enableCellSelection=s.config.enableCellSelection,e.enableCellEditOnFocus=s.config.enableCellEditOnFocus,e.footer=null,e.selectedItems=s.config.selectedItems,e.multiSelect=s.config.multiSelect,e.showFooter=s.config.showFooter,e.footerRowHeight=e.showFooter?s.config.footerRowHeight:0,e.showColumnMenu=s.config.showColumnMenu,e.forceSyncScrolling=s.config.forceSyncScrolling,e.showMenu=!1,e.configGroup
 s=[],e.gridId=s.gridId,e.enablePaging=s.config.enablePaging,e.pagingOptions=s.config.pagingOptions,e.i18n={},l.seti18n(e,s.config.i18n),e.adjustScrollLeft=function(a){for(var b=0,c=0,d=e.columns.length,f=[],g=!s.config.enableColumnHeavyVirt,i=0,j=function(a){g?f.push(a):e.renderedColumns[i]?e.renderedColumns[i].setVars(a):e.renderedColumns[i]=a.copy(),i++},k=0;d>k;k++){var l=e.columns[k];if(l.visible!==!1){var m=l.width+b;if(l.pinned){j(l);var n=k>0?a+c:a;h.setColLeft(l,n,s),c+=l.width}else m>=a&&b<=a+s.rootDim.outerWidth&&j(l);b+=l.width}}g&&(e.renderedColumns=f)},s.prevScrollTop=0,s.prevScrollIndex=0,e.adjustScrollTop=function(a,b){if(s.prevScrollTop!==a||b){a>0&&s.$viewport[0].scrollHeight-a<=s.$viewport.outerHeight()&&e.$emit("ngGridEventScroll");var f,g=Math.floor(a/s.config.rowHeight);if(s.filteredRows.length>s.config.virtualizationThreshold){if(s.prevScrollTop<a&&g<s.prevScrollIndex+d)return;if(s.prevScrollTop>a&&g>s.prevScrollIndex-d)return;f=new A(Math.max(0,g-c),g+s.minRow
 sToRender()+c)}else{var h=e.configGroups.length>0?s.rowFactory.parsedData.length:s.filteredRows.length;f=new A(0,Math.max(h,s.minRowsToRender()+c))}s.prevScrollTop=a,s.rowFactory.UpdateViewableRange(f),s.prevScrollIndex=g}},e.toggleShowMenu=function(){e.showMenu=!e.showMenu},e.toggleSelectAll=function(a,b){e.selectionProvider.toggleSelectAll(a,!1,b)},e.totalFilteredItemsLength=function(){return s.filteredRows.length},e.showGroupPanel=function(){return s.config.showGroupPanel},e.topPanelHeight=function(){return s.config.showGroupPanel===!0?s.config.headerRowHeight+32:s.config.headerRowHeight},e.viewportDimHeight=function(){return Math.max(0,s.rootDim.outerHeight-e.topPanelHeight()-e.footerRowHeight-2)},e.groupBy=function(a){if(!(s.data.length<1)&&a.groupable&&a.field){a.sortDirection||a.sort({shiftKey:e.configGroups.length>0?!0:!1});var b=e.configGroups.indexOf(a);-1===b?(a.isGroupedBy=!0,e.configGroups.push(a),a.groupIndex=e.configGroups.length):e.removeGroup(b),s.$viewport.scrollTo
 p(0),h.digest(e)}},e.removeGroup=function(a){var b=e.columns.filter(function(b){return b.groupIndex===a+1})[0];b.isGroupedBy=!1,b.groupIndex=0,e.columns[a].isAggCol&&(e.columns.splice(a,1),e.configGroups.splice(a,1),s.fixGroupIndexes()),0===e.configGroups.length&&(s.fixColumnIndexes(),h.digest(e)),e.adjustScrollLeft(0)},e.togglePin=function(a){for(var b=a.index,c=0,d=0;d<e.columns.length&&e.columns[d].pinned;d++)c++;a.pinned&&(c=Math.max(a.originalIndex,c-1)),a.pinned=!a.pinned,e.columns.splice(b,1),e.columns.splice(c,0,a),s.fixColumnIndexes(),h.BuildStyles(e,s,!0),s.$viewport.scrollLeft(s.$viewport.scrollLeft()-a.width)},e.totalRowWidth=function(){for(var a=0,b=e.columns,c=0;c<b.length;c++)b[c].visible!==!1&&(a+=b[c].width);return a},e.headerScrollerDim=function(){var a=e.viewportDimHeight(),b=s.maxCanvasHt,c=b>a,d=new v;return d.autoFitHeight=!0,d.outerWidth=e.totalRowWidth(),c?d.outerWidth+=s.elementDims.scrollW:b-a<=s.elementDims.scrollH&&(d.outerWidth+=s.elementDims.scrollW),d}
 },A=function(a,b){this.topRow=a,this.bottomRow=b},B=function(a,b,c,d,e){this.entity=a,this.config=b,this.selectionProvider=c,this.rowIndex=d,this.utils=e,this.selected=c.getSelection(a),this.cursor=this.config.enableRowSelection&&!this.config.selectWithCheckboxOnly?"pointer":"default",this.beforeSelectionChange=b.beforeSelectionChangeCallback,this.afterSelectionChange=b.afterSelectionChangeCallback,this.offsetTop=this.rowIndex*b.rowHeight,this.rowDisplayIndex=0};B.prototype.setSelection=function(a){this.selectionProvider.setSelection(this,a),this.selectionProvider.lastClickedRow=this},B.prototype.continueSelection=function(a){this.selectionProvider.ChangeSelection(this,a)},B.prototype.ensureEntity=function(a){this.entity!==a&&(this.entity=a,this.selected=this.selectionProvider.getSelection(this.entity))},B.prototype.toggleSelected=function(a){if(!this.config.enableRowSelection&&!this.config.enableCellSelection)return!0;var b=a.target||a;return"checkbox"===b.type&&"ngSelectionCell ng
 -scope"!==b.parentElement.className?!0:this.config.selectWithCheckboxOnly&&"checkbox"!==b.type?(this.selectionProvider.lastClickedRow=this,!0):(this.beforeSelectionChange(this,a)&&this.continueSelection(a),!1)},B.prototype.alternatingRowClass=function(){var a=this.rowIndex%2===0,b={ngRow:!0,selected:this.selected,even:a,odd:!a,"ui-state-default":this.config.jqueryUITheme&&a,"ui-state-active":this.config.jqueryUITheme&&!a};return b},B.prototype.getProperty=function(a){return this.utils.evalProperty(this.entity,a)},B.prototype.copy=function(){return this.clone=new B(this.entity,this.config,this.selectionProvider,this.rowIndex,this.utils),this.clone.isClone=!0,this.clone.elm=this.elm,this.clone.orig=this,this.clone},B.prototype.setVars=function(a){a.clone=this,this.entity=a.entity,this.selected=a.selected,this.orig=a};var C=function(a,b,d,e,f){var k=this;k.aggCache={},k.parentCache=[],k.dataChanged=!0,k.parsedData=[],k.rowConfig={},k.selectionProvider=b.selectionProvider,k.rowHeight=30
 ,k.numberOfAggregates=0,k.groupedData=void 0,k.rowHeight=a.config.rowHeight,k.rowConfig={enableRowSelection:a.config.enableRowSelection,rowClasses:a.config.rowClasses,selectedItems:b.selectedItems,selectWithCheckboxOnly:a.config.selectWithCheckboxOnly,beforeSelectionChangeCallback:a.config.beforeSelectionChange,afterSelectionChangeCallback:a.config.afterSelectionChange,jqueryUITheme:a.config.jqueryUITheme,enableCellSelection:a.config.enableCellSelection,rowHeight:a.config.rowHeight},k.renderedRange=new A(0,a.minRowsToRender()+c),k.buildEntityRow=function(a,b){return new B(a,k.rowConfig,k.selectionProvider,b,f)},k.buildAggregateRow=function(b,c){var d=k.aggCache[b.aggIndex];return d||(d=new t(b,k,k.rowConfig.rowHeight,a.config.groupsCollapsedByDefault),k.aggCache[b.aggIndex]=d),d.rowIndex=c,d.offsetTop=c*k.rowConfig.rowHeight,d},k.UpdateViewableRange=function(a){k.renderedRange=a,k.renderedChange()},k.filteredRowsChanged=function(){a.lateBoundColumns&&a.filteredRows.length>0&&(a.conf
 ig.columnDefs=void 0,a.buildColumns(),a.lateBoundColumns=!1,b.$evalAsync(function(){b.adjustScrollLeft(0)})),k.dataChanged=!0,a.config.groups.length>0&&k.getGrouping(a.config.groups),k.UpdateViewableRange(k.renderedRange)},k.renderedChange=function(){if(!k.groupedData||a.config.groups.length<1)return k.renderedChangeNoGroups(),void a.refreshDomSizes();k.wasGrouped=!0,k.parentCache=[];var b=0,c=k.parsedData.filter(function(a){return a.isAggRow?a.parent&&a.parent.collapsed?!1:!0:(a[i]||(a.rowIndex=b++),!a[i])});k.totalRows=c.length;for(var d=[],e=k.renderedRange.topRow;e<k.renderedRange.bottomRow;e++)c[e]&&(c[e].offsetTop=e*a.config.rowHeight,d.push(c[e]));a.setRenderedRows(d)},k.renderedChangeNoGroups=function(){for(var b=[],c=k.renderedRange.topRow;c<k.renderedRange.bottomRow;c++)a.filteredRows[c]&&(a.filteredRows[c].rowIndex=c,a.filteredRows[c].offsetTop=c*a.config.rowHeight,b.push(a.filteredRows[c]));a.setRenderedRows(b)},k.fixRowCache=function(){var b=a.data.length,c=b-a.rowCache
 .length;if(0>c)a.rowCache.length=a.rowMap.length=b;else for(var d=a.rowCache.length;b>d;d++)a.rowCache[d]=a.rowFactory.buildEntityRow(a.data[d],d)},k.parseGroupData=function(a){if(a.values)for(var b=0;b<a.values.length;b++)k.parentCache[k.parentCache.length-1].children.push(a.values[b]),k.parsedData.push(a.values[b]);else for(var c in a)if(c!==g&&c!==h&&c!==j&&a.hasOwnProperty(c)){var d=k.buildAggregateRow({gField:a[g],gLabel:c,gDepth:a[h],isAggRow:!0,_ng_hidden_:!1,children:[],aggChildren:[],aggIndex:k.numberOfAggregates,aggLabelFilter:a[j].aggLabelFilter},0);k.numberOfAggregates++,d.parent=k.parentCache[d.depth-1],d.parent&&(d.parent.collapsed=!1,d.parent.aggChildren.push(d)),k.parsedData.push(d),k.parentCache[d.depth]=d,k.parseGroupData(a[c])}},k.getGrouping=function(c){function l(a,b){return a.filter(function(a){return a.field===b})}k.aggCache=[],k.numberOfAggregates=0,k.groupedData={};for(var m=a.filteredRows,n=c.length,o=b.columns,p=0;p<m.length;p++){var q=m[p].entity;if(!q)re
 turn;m[p][i]=a.config.groupsCollapsedByDefault;for(var r=k.groupedData,s=0;s<c.length;s++){var t=c[s],v=l(o,t)[0],w=f.evalProperty(q,t);w=w?w.toString():"null",r[w]||

<TRUNCATED>


[38/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/async/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/async/README.md b/web/demos/package/node_modules/async/README.md
deleted file mode 100644
index 951f76e..0000000
--- a/web/demos/package/node_modules/async/README.md
+++ /dev/null
@@ -1,1425 +0,0 @@
-# Async.js
-
-Async is a utility module which provides straight-forward, powerful functions
-for working with asynchronous JavaScript. Although originally designed for
-use with [node.js](http://nodejs.org), it can also be used directly in the
-browser. Also supports [component](https://github.com/component/component).
-
-Async provides around 20 functions that include the usual 'functional'
-suspects (map, reduce, filter, eachā€¦) as well as some common patterns
-for asynchronous control flow (parallel, series, waterfallā€¦). All these
-functions assume you follow the node.js convention of providing a single
-callback as the last argument of your async function.
-
-
-## Quick Examples
-
-```javascript
-async.map(['file1','file2','file3'], fs.stat, function(err, results){
-    // results is now an array of stats for each file
-});
-
-async.filter(['file1','file2','file3'], fs.exists, function(results){
-    // results now equals an array of the existing files
-});
-
-async.parallel([
-    function(){ ... },
-    function(){ ... }
-], callback);
-
-async.series([
-    function(){ ... },
-    function(){ ... }
-]);
-```
-
-There are many more functions available so take a look at the docs below for a
-full list. This module aims to be comprehensive, so if you feel anything is
-missing please create a GitHub issue for it.
-
-## Common Pitfalls
-
-### Binding a context to an iterator
-
-This section is really about bind, not about async. If you are wondering how to
-make async execute your iterators in a given context, or are confused as to why
-a method of another library isn't working as an iterator, study this example:
-
-```js
-// Here is a simple object with an (unnecessarily roundabout) squaring method
-var AsyncSquaringLibrary = {
-  squareExponent: 2,
-  square: function(number, callback){ 
-    var result = Math.pow(number, this.squareExponent);
-    setTimeout(function(){
-      callback(null, result);
-    }, 200);
-  }
-};
-
-async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){
-  // result is [NaN, NaN, NaN]
-  // This fails because the `this.squareExponent` expression in the square
-  // function is not evaluated in the context of AsyncSquaringLibrary, and is
-  // therefore undefined.
-});
-
-async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){
-  // result is [1, 4, 9]
-  // With the help of bind we can attach a context to the iterator before
-  // passing it to async. Now the square function will be executed in its 
-  // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`
-  // will be as expected.
-});
-```
-
-## Download
-
-The source is available for download from
-[GitHub](http://github.com/caolan/async).
-Alternatively, you can install using Node Package Manager (npm):
-
-    npm install async
-
-__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed
-
-## In the Browser
-
-So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:
-
-```html
-<script type="text/javascript" src="async.js"></script>
-<script type="text/javascript">
-
-    async.map(data, asyncProcess, function(err, results){
-        alert(results);
-    });
-
-</script>
-```
-
-## Documentation
-
-### Collections
-
-* [each](#each)
-* [eachSeries](#eachSeries)
-* [eachLimit](#eachLimit)
-* [map](#map)
-* [mapSeries](#mapSeries)
-* [mapLimit](#mapLimit)
-* [filter](#filter)
-* [filterSeries](#filterSeries)
-* [reject](#reject)
-* [rejectSeries](#rejectSeries)
-* [reduce](#reduce)
-* [reduceRight](#reduceRight)
-* [detect](#detect)
-* [detectSeries](#detectSeries)
-* [sortBy](#sortBy)
-* [some](#some)
-* [every](#every)
-* [concat](#concat)
-* [concatSeries](#concatSeries)
-
-### Control Flow
-
-* [series](#series)
-* [parallel](#parallel)
-* [parallelLimit](#parallellimittasks-limit-callback)
-* [whilst](#whilst)
-* [doWhilst](#doWhilst)
-* [until](#until)
-* [doUntil](#doUntil)
-* [forever](#forever)
-* [waterfall](#waterfall)
-* [compose](#compose)
-* [applyEach](#applyEach)
-* [applyEachSeries](#applyEachSeries)
-* [queue](#queue)
-* [cargo](#cargo)
-* [auto](#auto)
-* [iterator](#iterator)
-* [apply](#apply)
-* [nextTick](#nextTick)
-* [times](#times)
-* [timesSeries](#timesSeries)
-
-### Utils
-
-* [memoize](#memoize)
-* [unmemoize](#unmemoize)
-* [log](#log)
-* [dir](#dir)
-* [noConflict](#noConflict)
-
-
-## Collections
-
-<a name="forEach" />
-<a name="each" />
-### each(arr, iterator, callback)
-
-Applies an iterator function to each item in an array, in parallel.
-The iterator is called with an item from the list and a callback for when it
-has finished. If the iterator passes an error to this callback, the main
-callback for the each function is immediately called with the error.
-
-Note, that since this function applies the iterator to each item in parallel
-there is no guarantee that the iterator functions will complete in order.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback(err) which must be called once it has 
-  completed. If no error has occured, the callback should be run without 
-  arguments or with an explicit null argument.
-* callback(err) - A callback which is called after all the iterator functions
-  have finished, or an error has occurred.
-
-__Example__
-
-```js
-// assuming openFiles is an array of file names and saveFile is a function
-// to save the modified contents of that file:
-
-async.each(openFiles, saveFile, function(err){
-    // if any of the saves produced an error, err would equal that error
-});
-```
-
----------------------------------------
-
-<a name="forEachSeries" />
-<a name="eachSeries" />
-### eachSeries(arr, iterator, callback)
-
-The same as each only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. This means the iterator functions will complete in order.
-
-
----------------------------------------
-
-<a name="forEachLimit" />
-<a name="eachLimit" />
-### eachLimit(arr, limit, iterator, callback)
-
-The same as each only no more than "limit" iterators will be simultaneously 
-running at any time.
-
-Note that the items are not processed in batches, so there is no guarantee that
- the first "limit" iterator functions will complete before any others are 
-started.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* limit - The maximum number of iterators to run at any time.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback(err) which must be called once it has 
-  completed. If no error has occured, the callback should be run without 
-  arguments or with an explicit null argument.
-* callback(err) - A callback which is called after all the iterator functions
-  have finished, or an error has occurred.
-
-__Example__
-
-```js
-// Assume documents is an array of JSON objects and requestApi is a
-// function that interacts with a rate-limited REST api.
-
-async.eachLimit(documents, 20, requestApi, function(err){
-    // if any of the saves produced an error, err would equal that error
-});
-```
-
----------------------------------------
-
-<a name="map" />
-### map(arr, iterator, callback)
-
-Produces a new array of values by mapping each value in the given array through
-the iterator function. The iterator is called with an item from the array and a
-callback for when it has finished processing. The callback takes 2 arguments, 
-an error and the transformed item from the array. If the iterator passes an
-error to this callback, the main callback for the map function is immediately
-called with the error.
-
-Note, that since this function applies the iterator to each item in parallel
-there is no guarantee that the iterator functions will complete in order, however
-the results array will be in the same order as the original array.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback(err, transformed) which must be called once 
-  it has completed with an error (which can be null) and a transformed item.
-* callback(err, results) - A callback which is called after all the iterator
-  functions have finished, or an error has occurred. Results is an array of the
-  transformed items from the original array.
-
-__Example__
-
-```js
-async.map(['file1','file2','file3'], fs.stat, function(err, results){
-    // results is now an array of stats for each file
-});
-```
-
----------------------------------------
-
-<a name="mapSeries" />
-### mapSeries(arr, iterator, callback)
-
-The same as map only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. The results array will be in the same order as the original.
-
-
----------------------------------------
-
-<a name="mapLimit" />
-### mapLimit(arr, limit, iterator, callback)
-
-The same as map only no more than "limit" iterators will be simultaneously 
-running at any time.
-
-Note that the items are not processed in batches, so there is no guarantee that
- the first "limit" iterator functions will complete before any others are 
-started.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* limit - The maximum number of iterators to run at any time.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback(err, transformed) which must be called once 
-  it has completed with an error (which can be null) and a transformed item.
-* callback(err, results) - A callback which is called after all the iterator
-  functions have finished, or an error has occurred. Results is an array of the
-  transformed items from the original array.
-
-__Example__
-
-```js
-async.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){
-    // results is now an array of stats for each file
-});
-```
-
----------------------------------------
-
-<a name="filter" />
-### filter(arr, iterator, callback)
-
-__Alias:__ select
-
-Returns a new array of all the values which pass an async truth test.
-_The callback for each iterator call only accepts a single argument of true or
-false, it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like fs.exists. This operation is
-performed in parallel, but the results array will be in the same order as the
-original.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
-  The iterator is passed a callback(truthValue) which must be called with a 
-  boolean argument once it has completed.
-* callback(results) - A callback which is called after all the iterator
-  functions have finished.
-
-__Example__
-
-```js
-async.filter(['file1','file2','file3'], fs.exists, function(results){
-    // results now equals an array of the existing files
-});
-```
-
----------------------------------------
-
-<a name="filterSeries" />
-### filterSeries(arr, iterator, callback)
-
-__alias:__ selectSeries
-
-The same as filter only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. The results array will be in the same order as the original.
-
----------------------------------------
-
-<a name="reject" />
-### reject(arr, iterator, callback)
-
-The opposite of filter. Removes values that pass an async truth test.
-
----------------------------------------
-
-<a name="rejectSeries" />
-### rejectSeries(arr, iterator, callback)
-
-The same as reject, only the iterator is applied to each item in the array
-in series.
-
-
----------------------------------------
-
-<a name="reduce" />
-### reduce(arr, memo, iterator, callback)
-
-__aliases:__ inject, foldl
-
-Reduces a list of values into a single value using an async iterator to return
-each successive step. Memo is the initial state of the reduction. This
-function only operates in series. For performance reasons, it may make sense to
-split a call to this function into a parallel map, then use the normal
-Array.prototype.reduce on the results. This function is for situations where
-each step in the reduction needs to be async, if you can get the data before
-reducing it then it's probably a good idea to do so.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* memo - The initial state of the reduction.
-* iterator(memo, item, callback) - A function applied to each item in the
-  array to produce the next step in the reduction. The iterator is passed a
-  callback(err, reduction) which accepts an optional error as its first 
-  argument, and the state of the reduction as the second. If an error is 
-  passed to the callback, the reduction is stopped and the main callback is 
-  immediately called with the error.
-* callback(err, result) - A callback which is called after all the iterator
-  functions have finished. Result is the reduced value.
-
-__Example__
-
-```js
-async.reduce([1,2,3], 0, function(memo, item, callback){
-    // pointless async:
-    process.nextTick(function(){
-        callback(null, memo + item)
-    });
-}, function(err, result){
-    // result is now equal to the last value of memo, which is 6
-});
-```
-
----------------------------------------
-
-<a name="reduceRight" />
-### reduceRight(arr, memo, iterator, callback)
-
-__Alias:__ foldr
-
-Same as reduce, only operates on the items in the array in reverse order.
-
-
----------------------------------------
-
-<a name="detect" />
-### detect(arr, iterator, callback)
-
-Returns the first value in a list that passes an async truth test. The
-iterator is applied in parallel, meaning the first iterator to return true will
-fire the detect callback with that result. That means the result might not be
-the first item in the original array (in terms of order) that passes the test.
-
-If order within the original array is important then look at detectSeries.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
-  The iterator is passed a callback(truthValue) which must be called with a 
-  boolean argument once it has completed.
-* callback(result) - A callback which is called as soon as any iterator returns
-  true, or after all the iterator functions have finished. Result will be
-  the first item in the array that passes the truth test (iterator) or the
-  value undefined if none passed.
-
-__Example__
-
-```js
-async.detect(['file1','file2','file3'], fs.exists, function(result){
-    // result now equals the first file in the list that exists
-});
-```
-
----------------------------------------
-
-<a name="detectSeries" />
-### detectSeries(arr, iterator, callback)
-
-The same as detect, only the iterator is applied to each item in the array
-in series. This means the result is always the first in the original array (in
-terms of array order) that passes the truth test.
-
-
----------------------------------------
-
-<a name="sortBy" />
-### sortBy(arr, iterator, callback)
-
-Sorts a list by the results of running each value through an async iterator.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback(err, sortValue) which must be called once it
-  has completed with an error (which can be null) and a value to use as the sort
-  criteria.
-* callback(err, results) - A callback which is called after all the iterator
-  functions have finished, or an error has occurred. Results is the items from
-  the original array sorted by the values returned by the iterator calls.
-
-__Example__
-
-```js
-async.sortBy(['file1','file2','file3'], function(file, callback){
-    fs.stat(file, function(err, stats){
-        callback(err, stats.mtime);
-    });
-}, function(err, results){
-    // results is now the original array of files sorted by
-    // modified date
-});
-```
-
----------------------------------------
-
-<a name="some" />
-### some(arr, iterator, callback)
-
-__Alias:__ any
-
-Returns true if at least one element in the array satisfies an async test.
-_The callback for each iterator call only accepts a single argument of true or
-false, it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like fs.exists. Once any iterator
-call returns true, the main callback is immediately called.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
-  The iterator is passed a callback(truthValue) which must be called with a 
-  boolean argument once it has completed.
-* callback(result) - A callback which is called as soon as any iterator returns
-  true, or after all the iterator functions have finished. Result will be
-  either true or false depending on the values of the async tests.
-
-__Example__
-
-```js
-async.some(['file1','file2','file3'], fs.exists, function(result){
-    // if result is true then at least one of the files exists
-});
-```
-
----------------------------------------
-
-<a name="every" />
-### every(arr, iterator, callback)
-
-__Alias:__ all
-
-Returns true if every element in the array satisfies an async test.
-_The callback for each iterator call only accepts a single argument of true or
-false, it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like fs.exists.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
-  The iterator is passed a callback(truthValue) which must be called with a 
-  boolean argument once it has completed.
-* callback(result) - A callback which is called after all the iterator
-  functions have finished. Result will be either true or false depending on
-  the values of the async tests.
-
-__Example__
-
-```js
-async.every(['file1','file2','file3'], fs.exists, function(result){
-    // if result is true then every file exists
-});
-```
-
----------------------------------------
-
-<a name="concat" />
-### concat(arr, iterator, callback)
-
-Applies an iterator to each item in a list, concatenating the results. Returns the
-concatenated list. The iterators are called in parallel, and the results are
-concatenated as they return. There is no guarantee that the results array will
-be returned in the original order of the arguments passed to the iterator function.
-
-__Arguments__
-
-* arr - An array to iterate over
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback(err, results) which must be called once it 
-  has completed with an error (which can be null) and an array of results.
-* callback(err, results) - A callback which is called after all the iterator
-  functions have finished, or an error has occurred. Results is an array containing
-  the concatenated results of the iterator function.
-
-__Example__
-
-```js
-async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){
-    // files is now a list of filenames that exist in the 3 directories
-});
-```
-
----------------------------------------
-
-<a name="concatSeries" />
-### concatSeries(arr, iterator, callback)
-
-Same as async.concat, but executes in series instead of parallel.
-
-
-## Control Flow
-
-<a name="series" />
-### series(tasks, [callback])
-
-Run an array of functions in series, each one running once the previous
-function has completed. If any functions in the series pass an error to its
-callback, no more functions are run and the callback for the series is
-immediately called with the value of the error. Once the tasks have completed,
-the results are passed to the final callback as an array.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function and the results will be passed to the final callback as an object
-instead of an array. This can be a more readable way of handling results from
-async.series.
-
-
-__Arguments__
-
-* tasks - An array or object containing functions to run, each function is passed
-  a callback(err, result) it must call on completion with an error (which can
-  be null) and an optional result value.
-* callback(err, results) - An optional callback to run once all the functions
-  have completed. This function gets a results array (or object) containing all 
-  the result arguments passed to the task callbacks.
-
-__Example__
-
-```js
-async.series([
-    function(callback){
-        // do some stuff ...
-        callback(null, 'one');
-    },
-    function(callback){
-        // do some more stuff ...
-        callback(null, 'two');
-    }
-],
-// optional callback
-function(err, results){
-    // results is now equal to ['one', 'two']
-});
-
-
-// an example using an object instead of an array
-async.series({
-    one: function(callback){
-        setTimeout(function(){
-            callback(null, 1);
-        }, 200);
-    },
-    two: function(callback){
-        setTimeout(function(){
-            callback(null, 2);
-        }, 100);
-    }
-},
-function(err, results) {
-    // results is now equal to: {one: 1, two: 2}
-});
-```
-
----------------------------------------
-
-<a name="parallel" />
-### parallel(tasks, [callback])
-
-Run an array of functions in parallel, without waiting until the previous
-function has completed. If any of the functions pass an error to its
-callback, the main callback is immediately called with the value of the error.
-Once the tasks have completed, the results are passed to the final callback as an
-array.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function and the results will be passed to the final callback as an object
-instead of an array. This can be a more readable way of handling results from
-async.parallel.
-
-
-__Arguments__
-
-* tasks - An array or object containing functions to run, each function is passed 
-  a callback(err, result) it must call on completion with an error (which can
-  be null) and an optional result value.
-* callback(err, results) - An optional callback to run once all the functions
-  have completed. This function gets a results array (or object) containing all 
-  the result arguments passed to the task callbacks.
-
-__Example__
-
-```js
-async.parallel([
-    function(callback){
-        setTimeout(function(){
-            callback(null, 'one');
-        }, 200);
-    },
-    function(callback){
-        setTimeout(function(){
-            callback(null, 'two');
-        }, 100);
-    }
-],
-// optional callback
-function(err, results){
-    // the results array will equal ['one','two'] even though
-    // the second function had a shorter timeout.
-});
-
-
-// an example using an object instead of an array
-async.parallel({
-    one: function(callback){
-        setTimeout(function(){
-            callback(null, 1);
-        }, 200);
-    },
-    two: function(callback){
-        setTimeout(function(){
-            callback(null, 2);
-        }, 100);
-    }
-},
-function(err, results) {
-    // results is now equals to: {one: 1, two: 2}
-});
-```
-
----------------------------------------
-
-<a name="parallel" />
-### parallelLimit(tasks, limit, [callback])
-
-The same as parallel only the tasks are executed in parallel with a maximum of "limit" 
-tasks executing at any time.
-
-Note that the tasks are not executed in batches, so there is no guarantee that 
-the first "limit" tasks will complete before any others are started.
-
-__Arguments__
-
-* tasks - An array or object containing functions to run, each function is passed 
-  a callback(err, result) it must call on completion with an error (which can
-  be null) and an optional result value.
-* limit - The maximum number of tasks to run at any time.
-* callback(err, results) - An optional callback to run once all the functions
-  have completed. This function gets a results array (or object) containing all 
-  the result arguments passed to the task callbacks.
-
----------------------------------------
-
-<a name="whilst" />
-### whilst(test, fn, callback)
-
-Repeatedly call fn, while test returns true. Calls the callback when stopped,
-or an error occurs.
-
-__Arguments__
-
-* test() - synchronous truth test to perform before each execution of fn.
-* fn(callback) - A function to call each time the test passes. The function is
-  passed a callback(err) which must be called once it has completed with an 
-  optional error argument.
-* callback(err) - A callback which is called after the test fails and repeated
-  execution of fn has stopped.
-
-__Example__
-
-```js
-var count = 0;
-
-async.whilst(
-    function () { return count < 5; },
-    function (callback) {
-        count++;
-        setTimeout(callback, 1000);
-    },
-    function (err) {
-        // 5 seconds have passed
-    }
-);
-```
-
----------------------------------------
-
-<a name="doWhilst" />
-### doWhilst(fn, test, callback)
-
-The post check version of whilst. To reflect the difference in the order of operations `test` and `fn` arguments are switched. `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.
-
----------------------------------------
-
-<a name="until" />
-### until(test, fn, callback)
-
-Repeatedly call fn, until test returns true. Calls the callback when stopped,
-or an error occurs.
-
-The inverse of async.whilst.
-
----------------------------------------
-
-<a name="doUntil" />
-### doUntil(fn, test, callback)
-
-Like doWhilst except the test is inverted. Note the argument ordering differs from `until`.
-
----------------------------------------
-
-<a name="forever" />
-### forever(fn, callback)
-
-Calls the asynchronous function 'fn' repeatedly, in series, indefinitely.
-If an error is passed to fn's callback then 'callback' is called with the
-error, otherwise it will never be called.
-
----------------------------------------
-
-<a name="waterfall" />
-### waterfall(tasks, [callback])
-
-Runs an array of functions in series, each passing their results to the next in
-the array. However, if any of the functions pass an error to the callback, the
-next function is not executed and the main callback is immediately called with
-the error.
-
-__Arguments__
-
-* tasks - An array of functions to run, each function is passed a 
-  callback(err, result1, result2, ...) it must call on completion. The first
-  argument is an error (which can be null) and any further arguments will be 
-  passed as arguments in order to the next task.
-* callback(err, [results]) - An optional callback to run once all the functions
-  have completed. This will be passed the results of the last task's callback.
-
-
-
-__Example__
-
-```js
-async.waterfall([
-    function(callback){
-        callback(null, 'one', 'two');
-    },
-    function(arg1, arg2, callback){
-        callback(null, 'three');
-    },
-    function(arg1, callback){
-        // arg1 now equals 'three'
-        callback(null, 'done');
-    }
-], function (err, result) {
-   // result now equals 'done'    
-});
-```
-
----------------------------------------
-<a name="compose" />
-### compose(fn1, fn2...)
-
-Creates a function which is a composition of the passed asynchronous
-functions. Each function consumes the return value of the function that
-follows. Composing functions f(), g() and h() would produce the result of
-f(g(h())), only this version uses callbacks to obtain the return values.
-
-Each function is executed with the `this` binding of the composed function.
-
-__Arguments__
-
-* functions... - the asynchronous functions to compose
-
-
-__Example__
-
-```js
-function add1(n, callback) {
-    setTimeout(function () {
-        callback(null, n + 1);
-    }, 10);
-}
-
-function mul3(n, callback) {
-    setTimeout(function () {
-        callback(null, n * 3);
-    }, 10);
-}
-
-var add1mul3 = async.compose(mul3, add1);
-
-add1mul3(4, function (err, result) {
-   // result now equals 15
-});
-```
-
----------------------------------------
-<a name="applyEach" />
-### applyEach(fns, args..., callback)
-
-Applies the provided arguments to each function in the array, calling the
-callback after all functions have completed. If you only provide the first
-argument then it will return a function which lets you pass in the
-arguments as if it were a single function call.
-
-__Arguments__
-
-* fns - the asynchronous functions to all call with the same arguments
-* args... - any number of separate arguments to pass to the function
-* callback - the final argument should be the callback, called when all
-  functions have completed processing
-
-
-__Example__
-
-```js
-async.applyEach([enableSearch, updateSchema], 'bucket', callback);
-
-// partial application example:
-async.each(
-    buckets,
-    async.applyEach([enableSearch, updateSchema]),
-    callback
-);
-```
-
----------------------------------------
-
-<a name="applyEachSeries" />
-### applyEachSeries(arr, iterator, callback)
-
-The same as applyEach only the functions are applied in series.
-
----------------------------------------
-
-<a name="queue" />
-### queue(worker, concurrency)
-
-Creates a queue object with the specified concurrency. Tasks added to the
-queue will be processed in parallel (up to the concurrency limit). If all
-workers are in progress, the task is queued until one is available. Once
-a worker has completed a task, the task's callback is called.
-
-__Arguments__
-
-* worker(task, callback) - An asynchronous function for processing a queued
-  task, which must call its callback(err) argument when finished, with an 
-  optional error as an argument.
-* concurrency - An integer for determining how many worker functions should be
-  run in parallel.
-
-__Queue objects__
-
-The queue object returned by this function has the following properties and
-methods:
-
-* length() - a function returning the number of items waiting to be processed.
-* concurrency - an integer for determining how many worker functions should be
-  run in parallel. This property can be changed after a queue is created to
-  alter the concurrency on-the-fly.
-* push(task, [callback]) - add a new task to the queue, the callback is called
-  once the worker has finished processing the task.
-  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.
-* unshift(task, [callback]) - add a new task to the front of the queue.
-* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued
-* empty - a callback that is called when the last item from the queue is given to a worker
-* drain - a callback that is called when the last item from the queue has returned from the worker
-
-__Example__
-
-```js
-// create a queue object with concurrency 2
-
-var q = async.queue(function (task, callback) {
-    console.log('hello ' + task.name);
-    callback();
-}, 2);
-
-
-// assign a callback
-q.drain = function() {
-    console.log('all items have been processed');
-}
-
-// add some items to the queue
-
-q.push({name: 'foo'}, function (err) {
-    console.log('finished processing foo');
-});
-q.push({name: 'bar'}, function (err) {
-    console.log('finished processing bar');
-});
-
-// add some items to the queue (batch-wise)
-
-q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {
-    console.log('finished processing bar');
-});
-
-// add some items to the front of the queue
-
-q.unshift({name: 'bar'}, function (err) {
-    console.log('finished processing bar');
-});
-```
-
----------------------------------------
-
-<a name="cargo" />
-### cargo(worker, [payload])
-
-Creates a cargo object with the specified payload. Tasks added to the
-cargo will be processed altogether (up to the payload limit). If the
-worker is in progress, the task is queued until it is available. Once
-the worker has completed some tasks, each callback of those tasks is called.
-
-__Arguments__
-
-* worker(tasks, callback) - An asynchronous function for processing an array of
-  queued tasks, which must call its callback(err) argument when finished, with 
-  an optional error as an argument.
-* payload - An optional integer for determining how many tasks should be
-  processed per round; if omitted, the default is unlimited.
-
-__Cargo objects__
-
-The cargo object returned by this function has the following properties and
-methods:
-
-* length() - a function returning the number of items waiting to be processed.
-* payload - an integer for determining how many tasks should be
-  process per round. This property can be changed after a cargo is created to
-  alter the payload on-the-fly.
-* push(task, [callback]) - add a new task to the queue, the callback is called
-  once the worker has finished processing the task.
-  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.
-* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued
-* empty - a callback that is called when the last item from the queue is given to a worker
-* drain - a callback that is called when the last item from the queue has returned from the worker
-
-__Example__
-
-```js
-// create a cargo object with payload 2
-
-var cargo = async.cargo(function (tasks, callback) {
-    for(var i=0; i<tasks.length; i++){
-      console.log('hello ' + tasks[i].name);
-    }
-    callback();
-}, 2);
-
-
-// add some items
-
-cargo.push({name: 'foo'}, function (err) {
-    console.log('finished processing foo');
-});
-cargo.push({name: 'bar'}, function (err) {
-    console.log('finished processing bar');
-});
-cargo.push({name: 'baz'}, function (err) {
-    console.log('finished processing baz');
-});
-```
-
----------------------------------------
-
-<a name="auto" />
-### auto(tasks, [callback])
-
-Determines the best order for running functions based on their requirements.
-Each function can optionally depend on other functions being completed first,
-and each function is run as soon as its requirements are satisfied. If any of
-the functions pass an error to their callback, that function will not complete
-(so any other functions depending on it will not run) and the main callback
-will be called immediately with the error. Functions also receive an object
-containing the results of functions which have completed so far.
-
-Note, all functions are called with a results object as a second argument, 
-so it is unsafe to pass functions in the tasks object which cannot handle the
-extra argument. For example, this snippet of code:
-
-```js
-async.auto({
-  readData: async.apply(fs.readFile, 'data.txt', 'utf-8')
-}, callback);
-```
-
-will have the effect of calling readFile with the results object as the last
-argument, which will fail:
-
-```js
-fs.readFile('data.txt', 'utf-8', cb, {});
-```
-
-Instead, wrap the call to readFile in a function which does not forward the 
-results object:
-
-```js
-async.auto({
-  readData: function(cb, results){
-    fs.readFile('data.txt', 'utf-8', cb);
-  }
-}, callback);
-```
-
-__Arguments__
-
-* tasks - An object literal containing named functions or an array of
-  requirements, with the function itself the last item in the array. The key
-  used for each function or array is used when specifying requirements. The 
-  function receives two arguments: (1) a callback(err, result) which must be 
-  called when finished, passing an error (which can be null) and the result of 
-  the function's execution, and (2) a results object, containing the results of
-  the previously executed functions.
-* callback(err, results) - An optional callback which is called when all the
-  tasks have been completed. The callback will receive an error as an argument
-  if any tasks pass an error to their callback. Results will always be passed
-	but if an error occurred, no other tasks will be performed, and the results
-	object will only contain partial results.
-  
-
-__Example__
-
-```js
-async.auto({
-    get_data: function(callback){
-        // async code to get some data
-    },
-    make_folder: function(callback){
-        // async code to create a directory to store a file in
-        // this is run at the same time as getting the data
-    },
-    write_file: ['get_data', 'make_folder', function(callback){
-        // once there is some data and the directory exists,
-        // write the data to a file in the directory
-        callback(null, filename);
-    }],
-    email_link: ['write_file', function(callback, results){
-        // once the file is written let's email a link to it...
-        // results.write_file contains the filename returned by write_file.
-    }]
-});
-```
-
-This is a fairly trivial example, but to do this using the basic parallel and
-series functions would look like this:
-
-```js
-async.parallel([
-    function(callback){
-        // async code to get some data
-    },
-    function(callback){
-        // async code to create a directory to store a file in
-        // this is run at the same time as getting the data
-    }
-],
-function(err, results){
-    async.series([
-        function(callback){
-            // once there is some data and the directory exists,
-            // write the data to a file in the directory
-        },
-        function(callback){
-            // once the file is written let's email a link to it...
-        }
-    ]);
-});
-```
-
-For a complicated series of async tasks using the auto function makes adding
-new tasks much easier and makes the code more readable.
-
-
----------------------------------------
-
-<a name="iterator" />
-### iterator(tasks)
-
-Creates an iterator function which calls the next function in the array,
-returning a continuation to call the next one after that. It's also possible to
-'peek' the next iterator by doing iterator.next().
-
-This function is used internally by the async module but can be useful when
-you want to manually control the flow of functions in series.
-
-__Arguments__
-
-* tasks - An array of functions to run.
-
-__Example__
-
-```js
-var iterator = async.iterator([
-    function(){ sys.p('one'); },
-    function(){ sys.p('two'); },
-    function(){ sys.p('three'); }
-]);
-
-node> var iterator2 = iterator();
-'one'
-node> var iterator3 = iterator2();
-'two'
-node> iterator3();
-'three'
-node> var nextfn = iterator2.next();
-node> nextfn();
-'three'
-```
-
----------------------------------------
-
-<a name="apply" />
-### apply(function, arguments..)
-
-Creates a continuation function with some arguments already applied, a useful
-shorthand when combined with other control flow functions. Any arguments
-passed to the returned function are added to the arguments originally passed
-to apply.
-
-__Arguments__
-
-* function - The function you want to eventually apply all arguments to.
-* arguments... - Any number of arguments to automatically apply when the
-  continuation is called.
-
-__Example__
-
-```js
-// using apply
-
-async.parallel([
-    async.apply(fs.writeFile, 'testfile1', 'test1'),
-    async.apply(fs.writeFile, 'testfile2', 'test2'),
-]);
-
-
-// the same process without using apply
-
-async.parallel([
-    function(callback){
-        fs.writeFile('testfile1', 'test1', callback);
-    },
-    function(callback){
-        fs.writeFile('testfile2', 'test2', callback);
-    }
-]);
-```
-
-It's possible to pass any number of additional arguments when calling the
-continuation:
-
-```js
-node> var fn = async.apply(sys.puts, 'one');
-node> fn('two', 'three');
-one
-two
-three
-```
-
----------------------------------------
-
-<a name="nextTick" />
-### nextTick(callback)
-
-Calls the callback on a later loop around the event loop. In node.js this just
-calls process.nextTick, in the browser it falls back to setImmediate(callback)
-if available, otherwise setTimeout(callback, 0), which means other higher priority
-events may precede the execution of the callback.
-
-This is used internally for browser-compatibility purposes.
-
-__Arguments__
-
-* callback - The function to call on a later loop around the event loop.
-
-__Example__
-
-```js
-var call_order = [];
-async.nextTick(function(){
-    call_order.push('two');
-    // call_order now equals ['one','two']
-});
-call_order.push('one')
-```
-
-<a name="times" />
-### times(n, callback)
-
-Calls the callback n times and accumulates results in the same manner
-you would use with async.map.
-
-__Arguments__
-
-* n - The number of times to run the function.
-* callback - The function to call n times.
-
-__Example__
-
-```js
-// Pretend this is some complicated async factory
-var createUser = function(id, callback) {
-  callback(null, {
-    id: 'user' + id
-  })
-}
-// generate 5 users
-async.times(5, function(n, next){
-    createUser(n, function(err, user) {
-      next(err, user)
-    })
-}, function(err, users) {
-  // we should now have 5 users
-});
-```
-
-<a name="timesSeries" />
-### timesSeries(n, callback)
-
-The same as times only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. The results array will be in the same order as the original.
-
-
-## Utils
-
-<a name="memoize" />
-### memoize(fn, [hasher])
-
-Caches the results of an async function. When creating a hash to store function
-results against, the callback is omitted from the hash and an optional hash
-function can be used.
-
-The cache of results is exposed as the `memo` property of the function returned
-by `memoize`.
-
-__Arguments__
-
-* fn - the function you to proxy and cache results from.
-* hasher - an optional function for generating a custom hash for storing
-  results, it has all the arguments applied to it apart from the callback, and
-  must be synchronous.
-
-__Example__
-
-```js
-var slow_fn = function (name, callback) {
-    // do something
-    callback(null, result);
-};
-var fn = async.memoize(slow_fn);
-
-// fn can now be used as if it were slow_fn
-fn('some name', function () {
-    // callback
-});
-```
-
-<a name="unmemoize" />
-### unmemoize(fn)
-
-Undoes a memoized function, reverting it to the original, unmemoized
-form. Comes handy in tests.
-
-__Arguments__
-
-* fn - the memoized function
-
-<a name="log" />
-### log(function, arguments)
-
-Logs the result of an async function to the console. Only works in node.js or
-in browsers that support console.log and console.error (such as FF and Chrome).
-If multiple arguments are returned from the async function, console.log is
-called on each argument in order.
-
-__Arguments__
-
-* function - The function you want to eventually apply all arguments to.
-* arguments... - Any number of arguments to apply to the function.
-
-__Example__
-
-```js
-var hello = function(name, callback){
-    setTimeout(function(){
-        callback(null, 'hello ' + name);
-    }, 1000);
-};
-```
-```js
-node> async.log(hello, 'world');
-'hello world'
-```
-
----------------------------------------
-
-<a name="dir" />
-### dir(function, arguments)
-
-Logs the result of an async function to the console using console.dir to
-display the properties of the resulting object. Only works in node.js or
-in browsers that support console.dir and console.error (such as FF and Chrome).
-If multiple arguments are returned from the async function, console.dir is
-called on each argument in order.
-
-__Arguments__
-
-* function - The function you want to eventually apply all arguments to.
-* arguments... - Any number of arguments to apply to the function.
-
-__Example__
-
-```js
-var hello = function(name, callback){
-    setTimeout(function(){
-        callback(null, {hello: name});
-    }, 1000);
-};
-```
-```js
-node> async.dir(hello, 'world');
-{hello: 'world'}
-```
-
----------------------------------------
-
-<a name="noConflict" />
-### noConflict()
-
-Changes the value of async back to its original value, returning a reference to the
-async object.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/async/component.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/async/component.json b/web/demos/package/node_modules/async/component.json
deleted file mode 100644
index bbb0115..0000000
--- a/web/demos/package/node_modules/async/component.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "name": "async",
-  "repo": "caolan/async",
-  "description": "Higher-order functions and common patterns for asynchronous code",
-  "version": "0.1.23",
-  "keywords": [],
-  "dependencies": {},
-  "development": {},
-  "main": "lib/async.js",
-  "scripts": [ "lib/async.js" ]
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/async/lib/async.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/async/lib/async.js b/web/demos/package/node_modules/async/lib/async.js
deleted file mode 100755
index 1eebb15..0000000
--- a/web/demos/package/node_modules/async/lib/async.js
+++ /dev/null
@@ -1,958 +0,0 @@
-/*global setImmediate: false, setTimeout: false, console: false */
-(function () {
-
-    var async = {};
-
-    // global on the server, window in the browser
-    var root, previous_async;
-
-    root = this;
-    if (root != null) {
-      previous_async = root.async;
-    }
-
-    async.noConflict = function () {
-        root.async = previous_async;
-        return async;
-    };
-
-    function only_once(fn) {
-        var called = false;
-        return function() {
-            if (called) throw new Error("Callback was already called.");
-            called = true;
-            fn.apply(root, arguments);
-        }
-    }
-
-    //// cross-browser compatiblity functions ////
-
-    var _each = function (arr, iterator) {
-        if (arr.forEach) {
-            return arr.forEach(iterator);
-        }
-        for (var i = 0; i < arr.length; i += 1) {
-            iterator(arr[i], i, arr);
-        }
-    };
-
-    var _map = function (arr, iterator) {
-        if (arr.map) {
-            return arr.map(iterator);
-        }
-        var results = [];
-        _each(arr, function (x, i, a) {
-            results.push(iterator(x, i, a));
-        });
-        return results;
-    };
-
-    var _reduce = function (arr, iterator, memo) {
-        if (arr.reduce) {
-            return arr.reduce(iterator, memo);
-        }
-        _each(arr, function (x, i, a) {
-            memo = iterator(memo, x, i, a);
-        });
-        return memo;
-    };
-
-    var _keys = function (obj) {
-        if (Object.keys) {
-            return Object.keys(obj);
-        }
-        var keys = [];
-        for (var k in obj) {
-            if (obj.hasOwnProperty(k)) {
-                keys.push(k);
-            }
-        }
-        return keys;
-    };
-
-    //// exported async module functions ////
-
-    //// nextTick implementation with browser-compatible fallback ////
-    if (typeof process === 'undefined' || !(process.nextTick)) {
-        if (typeof setImmediate === 'function') {
-            async.nextTick = function (fn) {
-                // not a direct alias for IE10 compatibility
-                setImmediate(fn);
-            };
-            async.setImmediate = async.nextTick;
-        }
-        else {
-            async.nextTick = function (fn) {
-                setTimeout(fn, 0);
-            };
-            async.setImmediate = async.nextTick;
-        }
-    }
-    else {
-        async.nextTick = process.nextTick;
-        if (typeof setImmediate !== 'undefined') {
-            async.setImmediate = function (fn) {
-              // not a direct alias for IE10 compatibility
-              setImmediate(fn);
-            };
-        }
-        else {
-            async.setImmediate = async.nextTick;
-        }
-    }
-
-    async.each = function (arr, iterator, callback) {
-        callback = callback || function () {};
-        if (!arr.length) {
-            return callback();
-        }
-        var completed = 0;
-        _each(arr, function (x) {
-            iterator(x, only_once(function (err) {
-                if (err) {
-                    callback(err);
-                    callback = function () {};
-                }
-                else {
-                    completed += 1;
-                    if (completed >= arr.length) {
-                        callback(null);
-                    }
-                }
-            }));
-        });
-    };
-    async.forEach = async.each;
-
-    async.eachSeries = function (arr, iterator, callback) {
-        callback = callback || function () {};
-        if (!arr.length) {
-            return callback();
-        }
-        var completed = 0;
-        var iterate = function () {
-            iterator(arr[completed], function (err) {
-                if (err) {
-                    callback(err);
-                    callback = function () {};
-                }
-                else {
-                    completed += 1;
-                    if (completed >= arr.length) {
-                        callback(null);
-                    }
-                    else {
-                        iterate();
-                    }
-                }
-            });
-        };
-        iterate();
-    };
-    async.forEachSeries = async.eachSeries;
-
-    async.eachLimit = function (arr, limit, iterator, callback) {
-        var fn = _eachLimit(limit);
-        fn.apply(null, [arr, iterator, callback]);
-    };
-    async.forEachLimit = async.eachLimit;
-
-    var _eachLimit = function (limit) {
-
-        return function (arr, iterator, callback) {
-            callback = callback || function () {};
-            if (!arr.length || limit <= 0) {
-                return callback();
-            }
-            var completed = 0;
-            var started = 0;
-            var running = 0;
-
-            (function replenish () {
-                if (completed >= arr.length) {
-                    return callback();
-                }
-
-                while (running < limit && started < arr.length) {
-                    started += 1;
-                    running += 1;
-                    iterator(arr[started - 1], function (err) {
-                        if (err) {
-                            callback(err);
-                            callback = function () {};
-                        }
-                        else {
-                            completed += 1;
-                            running -= 1;
-                            if (completed >= arr.length) {
-                                callback();
-                            }
-                            else {
-                                replenish();
-                            }
-                        }
-                    });
-                }
-            })();
-        };
-    };
-
-
-    var doParallel = function (fn) {
-        return function () {
-            var args = Array.prototype.slice.call(arguments);
-            return fn.apply(null, [async.each].concat(args));
-        };
-    };
-    var doParallelLimit = function(limit, fn) {
-        return function () {
-            var args = Array.prototype.slice.call(arguments);
-            return fn.apply(null, [_eachLimit(limit)].concat(args));
-        };
-    };
-    var doSeries = function (fn) {
-        return function () {
-            var args = Array.prototype.slice.call(arguments);
-            return fn.apply(null, [async.eachSeries].concat(args));
-        };
-    };
-
-
-    var _asyncMap = function (eachfn, arr, iterator, callback) {
-        var results = [];
-        arr = _map(arr, function (x, i) {
-            return {index: i, value: x};
-        });
-        eachfn(arr, function (x, callback) {
-            iterator(x.value, function (err, v) {
-                results[x.index] = v;
-                callback(err);
-            });
-        }, function (err) {
-            callback(err, results);
-        });
-    };
-    async.map = doParallel(_asyncMap);
-    async.mapSeries = doSeries(_asyncMap);
-    async.mapLimit = function (arr, limit, iterator, callback) {
-        return _mapLimit(limit)(arr, iterator, callback);
-    };
-
-    var _mapLimit = function(limit) {
-        return doParallelLimit(limit, _asyncMap);
-    };
-
-    // reduce only has a series version, as doing reduce in parallel won't
-    // work in many situations.
-    async.reduce = function (arr, memo, iterator, callback) {
-        async.eachSeries(arr, function (x, callback) {
-            iterator(memo, x, function (err, v) {
-                memo = v;
-                callback(err);
-            });
-        }, function (err) {
-            callback(err, memo);
-        });
-    };
-    // inject alias
-    async.inject = async.reduce;
-    // foldl alias
-    async.foldl = async.reduce;
-
-    async.reduceRight = function (arr, memo, iterator, callback) {
-        var reversed = _map(arr, function (x) {
-            return x;
-        }).reverse();
-        async.reduce(reversed, memo, iterator, callback);
-    };
-    // foldr alias
-    async.foldr = async.reduceRight;
-
-    var _filter = function (eachfn, arr, iterator, callback) {
-        var results = [];
-        arr = _map(arr, function (x, i) {
-            return {index: i, value: x};
-        });
-        eachfn(arr, function (x, callback) {
-            iterator(x.value, function (v) {
-                if (v) {
-                    results.push(x);
-                }
-                callback();
-            });
-        }, function (err) {
-            callback(_map(results.sort(function (a, b) {
-                return a.index - b.index;
-            }), function (x) {
-                return x.value;
-            }));
-        });
-    };
-    async.filter = doParallel(_filter);
-    async.filterSeries = doSeries(_filter);
-    // select alias
-    async.select = async.filter;
-    async.selectSeries = async.filterSeries;
-
-    var _reject = function (eachfn, arr, iterator, callback) {
-        var results = [];
-        arr = _map(arr, function (x, i) {
-            return {index: i, value: x};
-        });
-        eachfn(arr, function (x, callback) {
-            iterator(x.value, function (v) {
-                if (!v) {
-                    results.push(x);
-                }
-                callback();
-            });
-        }, function (err) {
-            callback(_map(results.sort(function (a, b) {
-                return a.index - b.index;
-            }), function (x) {
-                return x.value;
-            }));
-        });
-    };
-    async.reject = doParallel(_reject);
-    async.rejectSeries = doSeries(_reject);
-
-    var _detect = function (eachfn, arr, iterator, main_callback) {
-        eachfn(arr, function (x, callback) {
-            iterator(x, function (result) {
-                if (result) {
-                    main_callback(x);
-                    main_callback = function () {};
-                }
-                else {
-                    callback();
-                }
-            });
-        }, function (err) {
-            main_callback();
-        });
-    };
-    async.detect = doParallel(_detect);
-    async.detectSeries = doSeries(_detect);
-
-    async.some = function (arr, iterator, main_callback) {
-        async.each(arr, function (x, callback) {
-            iterator(x, function (v) {
-                if (v) {
-                    main_callback(true);
-                    main_callback = function () {};
-                }
-                callback();
-            });
-        }, function (err) {
-            main_callback(false);
-        });
-    };
-    // any alias
-    async.any = async.some;
-
-    async.every = function (arr, iterator, main_callback) {
-        async.each(arr, function (x, callback) {
-            iterator(x, function (v) {
-                if (!v) {
-                    main_callback(false);
-                    main_callback = function () {};
-                }
-                callback();
-            });
-        }, function (err) {
-            main_callback(true);
-        });
-    };
-    // all alias
-    async.all = async.every;
-
-    async.sortBy = function (arr, iterator, callback) {
-        async.map(arr, function (x, callback) {
-            iterator(x, function (err, criteria) {
-                if (err) {
-                    callback(err);
-                }
-                else {
-                    callback(null, {value: x, criteria: criteria});
-                }
-            });
-        }, function (err, results) {
-            if (err) {
-                return callback(err);
-            }
-            else {
-                var fn = function (left, right) {
-                    var a = left.criteria, b = right.criteria;
-                    return a < b ? -1 : a > b ? 1 : 0;
-                };
-                callback(null, _map(results.sort(fn), function (x) {
-                    return x.value;
-                }));
-            }
-        });
-    };
-
-    async.auto = function (tasks, callback) {
-        callback = callback || function () {};
-        var keys = _keys(tasks);
-        if (!keys.length) {
-            return callback(null);
-        }
-
-        var results = {};
-
-        var listeners = [];
-        var addListener = function (fn) {
-            listeners.unshift(fn);
-        };
-        var removeListener = function (fn) {
-            for (var i = 0; i < listeners.length; i += 1) {
-                if (listeners[i] === fn) {
-                    listeners.splice(i, 1);
-                    return;
-                }
-            }
-        };
-        var taskComplete = function () {
-            _each(listeners.slice(0), function (fn) {
-                fn();
-            });
-        };
-
-        addListener(function () {
-            if (_keys(results).length === keys.length) {
-                callback(null, results);
-                callback = function () {};
-            }
-        });
-
-        _each(keys, function (k) {
-            var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k];
-            var taskCallback = function (err) {
-                var args = Array.prototype.slice.call(arguments, 1);
-                if (args.length <= 1) {
-                    args = args[0];
-                }
-                if (err) {
-                    var safeResults = {};
-                    _each(_keys(results), function(rkey) {
-                        safeResults[rkey] = results[rkey];
-                    });
-                    safeResults[k] = args;
-                    callback(err, safeResults);
-                    // stop subsequent errors hitting callback multiple times
-                    callback = function () {};
-                }
-                else {
-                    results[k] = args;
-                    async.setImmediate(taskComplete);
-                }
-            };
-            var requires = task.slice(0, Math.abs(task.length - 1)) || [];
-            var ready = function () {
-                return _reduce(requires, function (a, x) {
-                    return (a && results.hasOwnProperty(x));
-                }, true) && !results.hasOwnProperty(k);
-            };
-            if (ready()) {
-                task[task.length - 1](taskCallback, results);
-            }
-            else {
-                var listener = function () {
-                    if (ready()) {
-                        removeListener(listener);
-                        task[task.length - 1](taskCallback, results);
-                    }
-                };
-                addListener(listener);
-            }
-        });
-    };
-
-    async.waterfall = function (tasks, callback) {
-        callback = callback || function () {};
-        if (tasks.constructor !== Array) {
-          var err = new Error('First argument to waterfall must be an array of functions');
-          return callback(err);
-        }
-        if (!tasks.length) {
-            return callback();
-        }
-        var wrapIterator = function (iterator) {
-            return function (err) {
-                if (err) {
-                    callback.apply(null, arguments);
-                    callback = function () {};
-                }
-                else {
-                    var args = Array.prototype.slice.call(arguments, 1);
-                    var next = iterator.next();
-                    if (next) {
-                        args.push(wrapIterator(next));
-                    }
-                    else {
-                        args.push(callback);
-                    }
-                    async.setImmediate(function () {
-                        iterator.apply(null, args);
-                    });
-                }
-            };
-        };
-        wrapIterator(async.iterator(tasks))();
-    };
-
-    var _parallel = function(eachfn, tasks, callback) {
-        callback = callback || function () {};
-        if (tasks.constructor === Array) {
-            eachfn.map(tasks, function (fn, callback) {
-                if (fn) {
-                    fn(function (err) {
-                        var args = Array.prototype.slice.call(arguments, 1);
-                        if (args.length <= 1) {
-                            args = args[0];
-                        }
-                        callback.call(null, err, args);
-                    });
-                }
-            }, callback);
-        }
-        else {
-            var results = {};
-            eachfn.each(_keys(tasks), function (k, callback) {
-                tasks[k](function (err) {
-                    var args = Array.prototype.slice.call(arguments, 1);
-                    if (args.length <= 1) {
-                        args = args[0];
-                    }
-                    results[k] = args;
-                    callback(err);
-                });
-            }, function (err) {
-                callback(err, results);
-            });
-        }
-    };
-
-    async.parallel = function (tasks, callback) {
-        _parallel({ map: async.map, each: async.each }, tasks, callback);
-    };
-
-    async.parallelLimit = function(tasks, limit, callback) {
-        _parallel({ map: _mapLimit(limit), each: _eachLimit(limit) }, tasks, callback);
-    };
-
-    async.series = function (tasks, callback) {
-        callback = callback || function () {};
-        if (tasks.constructor === Array) {
-            async.mapSeries(tasks, function (fn, callback) {
-                if (fn) {
-                    fn(function (err) {
-                        var args = Array.prototype.slice.call(arguments, 1);
-                        if (args.length <= 1) {
-                            args = args[0];
-                        }
-                        callback.call(null, err, args);
-                    });
-                }
-            }, callback);
-        }
-        else {
-            var results = {};
-            async.eachSeries(_keys(tasks), function (k, callback) {
-                tasks[k](function (err) {
-                    var args = Array.prototype.slice.call(arguments, 1);
-                    if (args.length <= 1) {
-                        args = args[0];
-                    }
-                    results[k] = args;
-                    callback(err);
-                });
-            }, function (err) {
-                callback(err, results);
-            });
-        }
-    };
-
-    async.iterator = function (tasks) {
-        var makeCallback = function (index) {
-            var fn = function () {
-                if (tasks.length) {
-                    tasks[index].apply(null, arguments);
-                }
-                return fn.next();
-            };
-            fn.next = function () {
-                return (index < tasks.length - 1) ? makeCallback(index + 1): null;
-            };
-            return fn;
-        };
-        return makeCallback(0);
-    };
-
-    async.apply = function (fn) {
-        var args = Array.prototype.slice.call(arguments, 1);
-        return function () {
-            return fn.apply(
-                null, args.concat(Array.prototype.slice.call(arguments))
-            );
-        };
-    };
-
-    var _concat = function (eachfn, arr, fn, callback) {
-        var r = [];
-        eachfn(arr, function (x, cb) {
-            fn(x, function (err, y) {
-                r = r.concat(y || []);
-                cb(err);
-            });
-        }, function (err) {
-            callback(err, r);
-        });
-    };
-    async.concat = doParallel(_concat);
-    async.concatSeries = doSeries(_concat);
-
-    async.whilst = function (test, iterator, callback) {
-        if (test()) {
-            iterator(function (err) {
-                if (err) {
-                    return callback(err);
-                }
-                async.whilst(test, iterator, callback);
-            });
-        }
-        else {
-            callback();
-        }
-    };
-
-    async.doWhilst = function (iterator, test, callback) {
-        iterator(function (err) {
-            if (err) {
-                return callback(err);
-            }
-            if (test()) {
-                async.doWhilst(iterator, test, callback);
-            }
-            else {
-                callback();
-            }
-        });
-    };
-
-    async.until = function (test, iterator, callback) {
-        if (!test()) {
-            iterator(function (err) {
-                if (err) {
-                    return callback(err);
-                }
-                async.until(test, iterator, callback);
-            });
-        }
-        else {
-            callback();
-        }
-    };
-
-    async.doUntil = function (iterator, test, callback) {
-        iterator(function (err) {
-            if (err) {
-                return callback(err);
-            }
-            if (!test()) {
-                async.doUntil(iterator, test, callback);
-            }
-            else {
-                callback();
-            }
-        });
-    };
-
-    async.queue = function (worker, concurrency) {
-        if (concurrency === undefined) {
-            concurrency = 1;
-        }
-        function _insert(q, data, pos, callback) {
-          if(data.constructor !== Array) {
-              data = [data];
-          }
-          _each(data, function(task) {
-              var item = {
-                  data: task,
-                  callback: typeof callback === 'function' ? callback : null
-              };
-
-              if (pos) {
-                q.tasks.unshift(item);
-              } else {
-                q.tasks.push(item);
-              }
-
-              if (q.saturated && q.tasks.length === concurrency) {
-                  q.saturated();
-              }
-              async.setImmediate(q.process);
-          });
-        }
-
-        var workers = 0;
-        var q = {
-            tasks: [],
-            concurrency: concurrency,
-            saturated: null,
-            empty: null,
-            drain: null,
-            push: function (data, callback) {
-              _insert(q, data, false, callback);
-            },
-            unshift: function (data, callback) {
-              _insert(q, data, true, callback);
-            },
-            process: function () {
-                if (workers < q.concurrency && q.tasks.length) {
-                    var task = q.tasks.shift();
-                    if (q.empty && q.tasks.length === 0) {
-                        q.empty();
-                    }
-                    workers += 1;
-                    var next = function () {
-                        workers -= 1;
-                        if (task.callback) {
-                            task.callback.apply(task, arguments);
-                        }
-                        if (q.drain && q.tasks.length + workers === 0) {
-                            q.drain();
-                        }
-                        q.process();
-                    };
-                    var cb = only_once(next);
-                    worker(task.data, cb);
-                }
-            },
-            length: function () {
-                return q.tasks.length;
-            },
-            running: function () {
-                return workers;
-            }
-        };
-        return q;
-    };
-
-    async.cargo = function (worker, payload) {
-        var working     = false,
-            tasks       = [];
-
-        var cargo = {
-            tasks: tasks,
-            payload: payload,
-            saturated: null,
-            empty: null,
-            drain: null,
-            push: function (data, callback) {
-                if(data.constructor !== Array) {
-                    data = [data];
-                }
-                _each(data, function(task) {
-                    tasks.push({
-                        data: task,
-                        callback: typeof callback === 'function' ? callback : null
-                    });
-                    if (cargo.saturated && tasks.length === payload) {
-                        cargo.saturated();
-                    }
-                });
-                async.setImmediate(cargo.process);
-            },
-            process: function process() {
-                if (working) return;
-                if (tasks.length === 0) {
-                    if(cargo.drain) cargo.drain();
-                    return;
-                }
-
-                var ts = typeof payload === 'number'
-                            ? tasks.splice(0, payload)
-                            : tasks.splice(0);
-
-                var ds = _map(ts, function (task) {
-                    return task.data;
-                });
-
-                if(cargo.empty) cargo.empty();
-                working = true;
-                worker(ds, function () {
-                    working = false;
-
-                    var args = arguments;
-                    _each(ts, function (data) {
-                        if (data.callback) {
-                            data.callback.apply(null, args);
-                        }
-                    });
-
-                    process();
-                });
-            },
-            length: function () {
-                return tasks.length;
-            },
-            running: function () {
-                return working;
-            }
-        };
-        return cargo;
-    };
-
-    var _console_fn = function (name) {
-        return function (fn) {
-            var args = Array.prototype.slice.call(arguments, 1);
-            fn.apply(null, args.concat([function (err) {
-                var args = Array.prototype.slice.call(arguments, 1);
-                if (typeof console !== 'undefined') {
-                    if (err) {
-                        if (console.error) {
-                            console.error(err);
-                        }
-                    }
-                    else if (console[name]) {
-                        _each(args, function (x) {
-                            console[name](x);
-                        });
-                    }
-                }
-            }]));
-        };
-    };
-    async.log = _console_fn('log');
-    async.dir = _console_fn('dir');
-    /*async.info = _console_fn('info');
-    async.warn = _console_fn('warn');
-    async.error = _console_fn('error');*/
-
-    async.memoize = function (fn, hasher) {
-        var memo = {};
-        var queues = {};
-        hasher = hasher || function (x) {
-            return x;
-        };
-        var memoized = function () {
-            var args = Array.prototype.slice.call(arguments);
-            var callback = args.pop();
-            var key = hasher.apply(null, args);
-            if (key in memo) {
-                callback.apply(null, memo[key]);
-            }
-            else if (key in queues) {
-                queues[key].push(callback);
-            }
-            else {
-                queues[key] = [callback];
-                fn.apply(null, args.concat([function () {
-                    memo[key] = arguments;
-                    var q = queues[key];
-                    delete queues[key];
-                    for (var i = 0, l = q.length; i < l; i++) {
-                      q[i].apply(null, arguments);
-                    }
-                }]));
-            }
-        };
-        memoized.memo = memo;
-        memoized.unmemoized = fn;
-        return memoized;
-    };
-
-    async.unmemoize = function (fn) {
-      return function () {
-        return (fn.unmemoized || fn).apply(null, arguments);
-      };
-    };
-
-    async.times = function (count, iterator, callback) {
-        var counter = [];
-        for (var i = 0; i < count; i++) {
-            counter.push(i);
-        }
-        return async.map(counter, iterator, callback);
-    };
-
-    async.timesSeries = function (count, iterator, callback) {
-        var counter = [];
-        for (var i = 0; i < count; i++) {
-            counter.push(i);
-        }
-        return async.mapSeries(counter, iterator, callback);
-    };
-
-    async.compose = function (/* functions... */) {
-        var fns = Array.prototype.reverse.call(arguments);
-        return function () {
-            var that = this;
-            var args = Array.prototype.slice.call(arguments);
-            var callback = args.pop();
-            async.reduce(fns, args, function (newargs, fn, cb) {
-                fn.apply(that, newargs.concat([function () {
-                    var err = arguments[0];
-                    var nextargs = Array.prototype.slice.call(arguments, 1);
-                    cb(err, nextargs);
-                }]))
-            },
-            function (err, results) {
-                callback.apply(that, [err].concat(results));
-            });
-        };
-    };
-
-    var _applyEach = function (eachfn, fns /*args...*/) {
-        var go = function () {
-            var that = this;
-            var args = Array.prototype.slice.call(arguments);
-            var callback = args.pop();
-            return eachfn(fns, function (fn, cb) {
-                fn.apply(that, args.concat([cb]));
-            },
-            callback);
-        };
-        if (arguments.length > 2) {
-            var args = Array.prototype.slice.call(arguments, 2);
-            return go.apply(this, args);
-        }
-        else {
-            return go;
-        }
-    };
-    async.applyEach = doParallel(_applyEach);
-    async.applyEachSeries = doSeries(_applyEach);
-
-    async.forever = function (fn, callback) {
-        function next(err) {
-            if (err) {
-                if (callback) {
-                    return callback(err);
-                }
-                throw err;
-            }
-            fn(next);
-        }
-        next();
-    };
-
-    // AMD / RequireJS
-    if (typeof define !== 'undefined' && define.amd) {
-        define([], function () {
-            return async;
-        });
-    }
-    // Node.js
-    else if (typeof module !== 'undefined' && module.exports) {
-        module.exports = async;
-    }
-    // included directly via <script> tag
-    else {
-        root.async = async;
-    }
-
-}());


[92/98] [abbrv] incubator-apex-malhar git commit: Removed DataTorrent & Malhar copyrights. Changed DataTorrent platform wording to Apex platform

Posted by da...@apache.org.
Removed DataTorrent & Malhar copyrights. Changed DataTorrent platform wording to Apex platform


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/55e9b8f5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/55e9b8f5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/55e9b8f5

Branch: refs/heads/master
Commit: 55e9b8f5a5bf4563eb90514c1a84535b4d9f51d6
Parents: f086391
Author: Pramod Immaneni <pr...@datatorrent.com>
Authored: Mon Nov 9 17:05:42 2015 -0800
Committer: Pramod Immaneni <pr...@datatorrent.com>
Committed: Mon Nov 9 17:05:42 2015 -0800

----------------------------------------------------------------------
 apps/logstream/src/main/html/index.php          |  7 +-----
 .../datatorrent/apps/logstream/Application.java |  2 +-
 .../com/datatorrent/benchmark/package-info.java |  6 ++---
 .../java/com/datatorrent/contrib/solr/README.md |  4 ++--
 .../splunk/SplunkInputFromForwarder.java        |  2 +-
 demos/frauddetect/pom.xml                       |  2 +-
 demos/machinedata/src/main/html/index.php       |  7 +-----
 .../datatorrent/demos/mobile/Application.java   | 24 +++++++++-----------
 .../src/main/resources/mrdebugger.html          |  2 +-
 demos/pi/pom.xml                                |  2 +-
 demos/r/pom.xml                                 |  2 +-
 demos/wordcount/pom.xml                         |  2 +-
 demos/yahoofinance/pom.xml                      |  2 +-
 docs/CodingConventionsAndStyle.md               |  2 +-
 14 files changed, 27 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/apps/logstream/src/main/html/index.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/index.php b/apps/logstream/src/main/html/index.php
index 3db53bc..9ec09e5 100644
--- a/apps/logstream/src/main/html/index.php
+++ b/apps/logstream/src/main/html/index.php
@@ -16,10 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-<!--
- --  Copyright (c) 2012-2013 DataTorrent, Inc.
- --  All Rights Reserved.
- -->
 
 <!-- ## Siteops is deprecated, please use logstream instead ## -->
     
@@ -27,7 +23,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Data Torrent : Site Operations Demo </title>
+<title>Site Operations Demo </title>
 
 <link rel="stylesheet" type="text/css" href="malhar.css">
 
@@ -39,7 +35,6 @@ google.load('visualization', '1', {'packages':['table']});
 
 </script>
 
-<!-- DataTorrent charting utils -->
 <script type="text/javascript" src="global.js"></script>
 <script type="text/javascript" src="DrawPageViewTimeChart.js"></script>
 <script type="text/javascript" src="TopUrlChart.js"></script>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/apps/logstream/src/main/java/com/datatorrent/apps/logstream/Application.java
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/java/com/datatorrent/apps/logstream/Application.java b/apps/logstream/src/main/java/com/datatorrent/apps/logstream/Application.java
index a595d16..0cd3f79 100644
--- a/apps/logstream/src/main/java/com/datatorrent/apps/logstream/Application.java
+++ b/apps/logstream/src/main/java/com/datatorrent/apps/logstream/Application.java
@@ -50,7 +50,7 @@ import com.datatorrent.contrib.redis.RedisMapOutputOperator;
 import com.datatorrent.contrib.redis.RedisNumberSummationMapOutputOperator;
 
 /**
- * Log stream processing application based on DataTorrent platform.<br>
+ * Log stream processing application based on Apex platform.<br>
  * This application consumes log data generated by running systems and services
  * in near real-time, and processes it to produce actionable data. This in turn
  * can be used to produce alerts, take corrective actions, or predict system

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/benchmark/src/main/java/com/datatorrent/benchmark/package-info.java
----------------------------------------------------------------------
diff --git a/benchmark/src/main/java/com/datatorrent/benchmark/package-info.java b/benchmark/src/main/java/com/datatorrent/benchmark/package-info.java
index 7238b1a..b015015 100644
--- a/benchmark/src/main/java/com/datatorrent/benchmark/package-info.java
+++ b/benchmark/src/main/java/com/datatorrent/benchmark/package-info.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/**
- * DataTorrent performance demonstration application.
- */
+/**
+ * Apex malhar performance demonstration application.
+ */
 package com.datatorrent.benchmark;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/contrib/src/main/java/com/datatorrent/contrib/solr/README.md
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/solr/README.md b/contrib/src/main/java/com/datatorrent/contrib/solr/README.md
index 2910d56..e5ee06f 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/solr/README.md
+++ b/contrib/src/main/java/com/datatorrent/contrib/solr/README.md
@@ -2,9 +2,9 @@ Solr:
 ====
 Solr is a search platform from apache Lucene.  Its major features include powerful full-text search, hit highlighting, faceted search, near real-time indexing, dynamic clustering, database integration, rich document (e.g., Word, PDF) handling, and geospatial search. Solr is highly reliable, scalable and fault tolerant, providing distributed indexing, replication and load-balanced querying, automated failover and recovery and more.
 
-Solr with DataTorrent:
+Solr with Apex:
 =====================
-Solr search platform can be intergrated with datatorrent for variety of purposes for use cases ranging from simple keyword search to ranking, scoring, classification etc.
+Solr search platform can be intergrated with Apex for variety of purposes for use cases ranging from simple keyword search to ranking, scoring, classification etc.
 
 Solr InputOperator:
 ==================

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/contrib/src/main/java/com/datatorrent/contrib/splunk/SplunkInputFromForwarder.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/splunk/SplunkInputFromForwarder.java b/contrib/src/main/java/com/datatorrent/contrib/splunk/SplunkInputFromForwarder.java
index 782b8d1..8a5fa5d 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/splunk/SplunkInputFromForwarder.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/splunk/SplunkInputFromForwarder.java
@@ -32,7 +32,7 @@ import java.util.Properties;
 /**
  *
  * An abstract class which receives input from a splunk forwarder and writes the lines to kafka.
- * A kafka input operator can be used to read these lines in a DataTorrent application.
+ * A kafka input operator can be used to read these lines in an Apex application.
  *
  * @param <T> the type of data to be stored into kafka
  * @since 1.0.4

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/demos/frauddetect/pom.xml
----------------------------------------------------------------------
diff --git a/demos/frauddetect/pom.xml b/demos/frauddetect/pom.xml
index 5b9614a..0981b4e 100644
--- a/demos/frauddetect/pom.xml
+++ b/demos/frauddetect/pom.xml
@@ -26,7 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Apache Apex Malhar (incubating) Fraud Detect Demo</name>
-  <description>DataTorrent demo applications that demonstrates real-time pattern detection in the incoming data and alerting. The demo processes streaming credit card transactions and looks for fraudulent transactions.</description>
+  <description>Apex demo application that demonstrates real-time pattern detection in the incoming data and alerting. The demo processes streaming credit card transactions and looks for fraudulent transactions.</description>
 
   <parent>
     <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/demos/machinedata/src/main/html/index.php
----------------------------------------------------------------------
diff --git a/demos/machinedata/src/main/html/index.php b/demos/machinedata/src/main/html/index.php
index aa1aadc..6b93570 100644
--- a/demos/machinedata/src/main/html/index.php
+++ b/demos/machinedata/src/main/html/index.php
@@ -16,16 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-<!--
- --  Copyright (c) 2012-2013 Malhar, Inc.
- --  All Rights Reserved.
- -->
-    
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Data Torrent : Machine Generated Data Demo </title>
+<title>Machine Generated Data Demo </title>
 
 <link rel="stylesheet" type="text/css" href="malhar.css">
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/demos/mobile/src/main/java/com/datatorrent/demos/mobile/Application.java
----------------------------------------------------------------------
diff --git a/demos/mobile/src/main/java/com/datatorrent/demos/mobile/Application.java b/demos/mobile/src/main/java/com/datatorrent/demos/mobile/Application.java
index d0779b3..9d9f31b 100644
--- a/demos/mobile/src/main/java/com/datatorrent/demos/mobile/Application.java
+++ b/demos/mobile/src/main/java/com/datatorrent/demos/mobile/Application.java
@@ -18,28 +18,26 @@
  */
 package com.datatorrent.demos.mobile;
 
-import java.net.URI;
-import java.util.Arrays;
-import java.util.Map;
-import java.util.Random;
-
-import org.apache.commons.lang.mutable.MutableLong;
-import org.apache.commons.lang3.Range;
-import org.apache.hadoop.conf.Configuration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import com.datatorrent.api.Context.OperatorContext;
 import com.datatorrent.api.DAG;
 import com.datatorrent.api.StatsListener;
 import com.datatorrent.api.StreamingApplication;
 import com.datatorrent.api.annotation.ApplicationAnnotation;
-
 import com.datatorrent.lib.counters.BasicCounters;
 import com.datatorrent.lib.io.PubSubWebSocketInputOperator;
 import com.datatorrent.lib.io.PubSubWebSocketOutputOperator;
 import com.datatorrent.lib.partitioner.StatelessThroughputBasedPartitioner;
 import com.datatorrent.lib.testbench.RandomEventGenerator;
+import org.apache.commons.lang.mutable.MutableLong;
+import org.apache.commons.lang3.Range;
+import org.apache.hadoop.conf.Configuration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.net.URI;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.Random;
 
 /**
  * Mobile Demo Application:
@@ -47,7 +45,7 @@ import com.datatorrent.lib.testbench.RandomEventGenerator;
  * This demo simulates large number of cell phones in the range of 40K to 200K
  * and tracks a given cell number across cell towers. It also displays the changing locations of the cell number on a google map.
  *
- * This demo demonstrates the scalability feature of Datatorrent platform.
+ * This demo demonstrates the scalability feature of the Apex platform.
  * It showcases the ability of the platform to scale up and down as the phone numbers generated increase and decrease respectively.
  * If the tuples processed per second by the pmove operator increase beyond 30,000, more partitions of the pmove operator gets deployed until
  * each of the partition processes around 10000 to 30000 tuples per second.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/demos/mrmonitor/src/main/resources/mrdebugger.html
----------------------------------------------------------------------
diff --git a/demos/mrmonitor/src/main/resources/mrdebugger.html b/demos/mrmonitor/src/main/resources/mrdebugger.html
index 3d53c97..d8e6497 100644
--- a/demos/mrmonitor/src/main/resources/mrdebugger.html
+++ b/demos/mrmonitor/src/main/resources/mrdebugger.html
@@ -21,7 +21,7 @@
 <!doctype html>
 <html>
 <head>
-<title>DataTorrent Mobile Demo</title>
+<title>Mobile Demo</title>
 
 <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
 <meta name="viewport" content="initial-scale=1.0, user-scalable=no">

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/demos/pi/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pi/pom.xml b/demos/pi/pom.xml
index d1a4670..70957cb 100644
--- a/demos/pi/pom.xml
+++ b/demos/pi/pom.xml
@@ -26,7 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Apache Apex Malhar (incubating) Pi Demo</name>
-  <description>DataTorrent demo applications that calculate the value of Pi. This is a starting point to understand how DataTorrent works.</description>
+  <description>Apex demo applications that calculate the value of Pi. This is a starting point to understand how Apex works.</description>
 
   <parent>
     <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/demos/r/pom.xml
----------------------------------------------------------------------
diff --git a/demos/r/pom.xml b/demos/r/pom.xml
index 4c8eb78..13b9610 100644
--- a/demos/r/pom.xml
+++ b/demos/r/pom.xml
@@ -26,7 +26,7 @@
   <packaging>jar</packaging>
 
  <name>Apache Apex Malhar (incubating) R Demo</name>
-  <description>DataTorrent demo applications for using R.</description>
+  <description>Apex demo applications for using R.</description>
 
   <parent>
     <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/demos/wordcount/pom.xml
----------------------------------------------------------------------
diff --git a/demos/wordcount/pom.xml b/demos/wordcount/pom.xml
index fb06aec..026a3c3 100644
--- a/demos/wordcount/pom.xml
+++ b/demos/wordcount/pom.xml
@@ -26,7 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Apache Apex Malhar (incubating) Wordcount Demo</name>
-  <description>A very simple application that demonstrates DataTorrent Platformā€™s streaming window feature.</description>
+  <description>A very simple application that demonstrates Apex Platformā€™s streaming window feature.</description>
 
   <parent>
     <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/demos/yahoofinance/pom.xml
----------------------------------------------------------------------
diff --git a/demos/yahoofinance/pom.xml b/demos/yahoofinance/pom.xml
index c98a192..dcefedd 100644
--- a/demos/yahoofinance/pom.xml
+++ b/demos/yahoofinance/pom.xml
@@ -26,7 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Apache Apex Malhar (incubating) Yahoo! Finance Demo</name>
-  <description>DataTorrent demo applications that get Yahoo finance feed and calculate minute price range, minute volume and simple moving average.</description>
+  <description>Apex demo applications that get Yahoo finance feed and calculate minute price range, minute volume and simple moving average.</description>
 
   <parent>
     <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/55e9b8f5/docs/CodingConventionsAndStyle.md
----------------------------------------------------------------------
diff --git a/docs/CodingConventionsAndStyle.md b/docs/CodingConventionsAndStyle.md
index 46d8994..154f1de 100644
--- a/docs/CodingConventionsAndStyle.md
+++ b/docs/CodingConventionsAndStyle.md
@@ -1,7 +1,7 @@
 Coding Conventions and Style
 ==============================
 
-Malhar GitHub repository contains operator library and demos built on top of the DataTorrent platform. The code is open source, viewable and downloadable by all. Anyone can make code submissions to the repository to add new features or fix bugs. The process to do so is to first make a personal fork of the repository, make changes in the fork and then generate a pull request with the changes against the Malhar repository.
+Malhar GitHub repository contains operator library and demos built on top of the Apex platform. The code is open source, viewable and downloadable by all. Anyone can make code submissions to the repository to add new features or fix bugs. The process to do so is to first make a personal fork of the repository, make changes in the fork and then generate a pull request with the changes against the Malhar repository.
 
 Malhar administrators look at pull requests regularly and merge them into the repository. The pull requests have to follow certain guidelines in order to minimize the possibility of issues and problems arising from the merge, to keep the code maintainable going forward and to keep the licensing. The guidelines are as follows
 


[75/98] [abbrv] incubator-apex-malhar git commit: MLHR-1889 #resolve #comment moved atomic renaming to its own method

Posted by da...@apache.org.
MLHR-1889 #resolve #comment moved atomic renaming to its own method


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/5d8382d5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/5d8382d5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/5d8382d5

Branch: refs/heads/master
Commit: 5d8382d51b12f0e47e83271b327d03cfe88b49b0
Parents: 73c8abf
Author: Chandni Singh <cs...@apache.org>
Authored: Wed Nov 4 11:40:39 2015 -0800
Committer: Chandni Singh <cs...@apache.org>
Committed: Thu Nov 5 17:34:03 2015 -0800

----------------------------------------------------------------------
 .../lib/io/fs/AbstractFileOutputOperator.java   | 61 +++++++++++++++-----
 1 file changed, 46 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/5d8382d5/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
index 744f024..fcbe1e8 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
@@ -21,7 +21,11 @@ package com.datatorrent.lib.io.fs;
 import java.io.FilterOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 
@@ -29,31 +33,43 @@ import javax.annotation.Nonnull;
 import javax.validation.constraints.Min;
 import javax.validation.constraints.NotNull;
 
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Strings;
-import com.google.common.cache.*;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-import org.apache.commons.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.mutable.MutableLong;
 import org.apache.commons.lang3.mutable.MutableInt;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.*;
+import org.apache.hadoop.fs.AbstractFileSystem;
+import org.apache.hadoop.fs.FSDataInputStream;
+import org.apache.hadoop.fs.FSDataOutputStream;
+import org.apache.hadoop.fs.FileContext;
+import org.apache.hadoop.fs.FileStatus;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.LocalFileSystem;
+import org.apache.hadoop.fs.Options;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.fs.RawLocalFileSystem;
 import org.apache.hadoop.fs.permission.FsPermission;
 
-import com.datatorrent.lib.counters.BasicCounters;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Strings;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import com.google.common.cache.RemovalListener;
+import com.google.common.cache.RemovalNotification;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 
-import com.datatorrent.common.util.BaseOperator;
 import com.datatorrent.api.Context;
 import com.datatorrent.api.Context.OperatorContext;
 import com.datatorrent.api.DefaultInputPort;
 import com.datatorrent.api.Operator;
 import com.datatorrent.api.StreamCodec;
 import com.datatorrent.api.annotation.OperatorAnnotation;
+import com.datatorrent.common.util.BaseOperator;
+import com.datatorrent.lib.counters.BasicCounters;
 
 /**
  * This base implementation for a fault tolerant HDFS output operator,
@@ -179,6 +195,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
    * The file system used to write to.
    */
   protected transient FileSystem fs;
+  protected transient FileContext fileContext;
 
   protected short filePermission = 0777;
 
@@ -455,7 +472,6 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
       fsOutput.close();
       inputStream.close();
 
-      FileContext fileContext = FileContext.getFileContext(fs.getUri());
       LOG.debug("active {} recovery {} ", filepath, recoveryFilePath);
 
       if (alwaysWriteToTmp) {
@@ -464,7 +480,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
         fileNameToTmpName.put(partFileName, recoveryFileName);
       } else {
         LOG.debug("recovery path {} actual path {} ", recoveryFilePath, status.getPath());
-        fileContext.rename(recoveryFilePath, status.getPath(), Options.Rename.OVERWRITE);
+        rename(recoveryFilePath, status.getPath());
       }
     } else {
       if (alwaysWriteToTmp && filesWithOpenStreams.contains(filename)) {
@@ -642,6 +658,22 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
   }
 
   /**
+   * Renames source path to destination atomically. This relies on the FileContext api. If
+   * the underlying filesystem doesn't have an {@link AbstractFileSystem} then this should be overridden.
+   *
+   * @param source      source path
+   * @param destination destination path
+   * @throws IOException
+   */
+  protected void rename(Path source, Path destination) throws IOException
+  {
+    if (fileContext == null) {
+      fileContext = FileContext.getFileContext(fs.getUri());
+    }
+    fileContext.rename(source, destination, Options.Rename.OVERWRITE);
+  }
+
+  /**
    * Requests a file to be finalized. When it is writing to a rolling file, this will
    * request for finalizing the current open part and all the prev parts which weren't requested yet.
    *
@@ -1206,13 +1238,12 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
   protected void finalizeFile(String fileName) throws IOException
   {
     String tmpFileName = fileNameToTmpName.get(fileName);
-    FileContext fileContext = FileContext.getFileContext(fs.getUri());
     Path srcPath = new Path(filePath + Path.SEPARATOR + tmpFileName);
     Path destPath = new Path(filePath + Path.SEPARATOR + fileName);
 
     if (!fs.exists(destPath)) {
       LOG.debug("rename from tmp {} actual {} ", tmpFileName, fileName);
-      fileContext.rename(srcPath, destPath);
+      rename(srcPath, destPath);
     } else if (fs.exists(srcPath)) {
       //if the destination and src both exists that means there was a failure between file rename and clearing the endOffset so
       //we just delete the tmp file.


[55/98] [abbrv] incubator-apex-malhar git commit: Merge branch 'MLHR-1868' into devel-3

Posted by da...@apache.org.
Merge branch 'MLHR-1868' into devel-3


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/893ac350
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/893ac350
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/893ac350

Branch: refs/heads/master
Commit: 893ac3505ae022f7d8f74655d499701cbd966994
Parents: 38c8952 dbdc9ca
Author: Munagala V. Ramanath <ra...@apache.org>
Authored: Wed Oct 14 15:06:12 2015 -0700
Committer: Munagala V. Ramanath <ra...@apache.org>
Committed: Wed Oct 14 15:06:12 2015 -0700

----------------------------------------------------------------------
 .../datatorrent/lib/appdata/gpo/GPOUtils.java   | 42 +++++++++++++++-----
 1 file changed, 31 insertions(+), 11 deletions(-)
----------------------------------------------------------------------



[48/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/vendor/jquery.pnotify.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/vendor/jquery.pnotify.js b/web/demos/app/scripts/vendor/jquery.pnotify.js
deleted file mode 100644
index 41b3115..0000000
--- a/web/demos/app/scripts/vendor/jquery.pnotify.js
+++ /dev/null
@@ -1,918 +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.
- */
-(function($) {
-	var history_handle_top,
-		timer,
-		body,
-		jwindow = $(window),
-		styling = {
-			jqueryui: {
-				container: "ui-widget ui-widget-content ui-corner-all",
-				notice: "ui-state-highlight",
-				// (The actual jQUI notice icon looks terrible.)
-				notice_icon: "ui-icon ui-icon-info",
-				info: "",
-				info_icon: "ui-icon ui-icon-info",
-				success: "ui-state-default",
-				success_icon: "ui-icon ui-icon-circle-check",
-				error: "ui-state-error",
-				error_icon: "ui-icon ui-icon-alert",
-				closer: "ui-icon ui-icon-close",
-				pin_up: "ui-icon ui-icon-pin-w",
-				pin_down: "ui-icon ui-icon-pin-s",
-				hi_menu: "ui-state-default ui-corner-bottom",
-				hi_btn: "ui-state-default ui-corner-all",
-				hi_btnhov: "ui-state-hover",
-				hi_hnd: "ui-icon ui-icon-grip-dotted-horizontal"
-			},
-			bootstrap: {
-				container: "alert",
-				notice: "",
-				notice_icon: "icon-exclamation-sign",
-				info: "alert-info",
-				info_icon: "icon-info-sign",
-				success: "alert-success",
-				success_icon: "icon-ok-sign",
-				error: "alert-error",
-				error_icon: "icon-warning-sign",
-				closer: "icon-remove",
-				pin_up: "icon-pause",
-				pin_down: "icon-play",
-				hi_menu: "well",
-				hi_btn: "btn",
-				hi_btnhov: "",
-				hi_hnd: "icon-chevron-down"
-			}
-		};
-	// Set global variables.
-	var do_when_ready = function(){
-		body = $("body");
-		jwindow = $(window);
-		// Reposition the notices when the window resizes.
-		jwindow.bind('resize', function(){
-			if (timer)
-				clearTimeout(timer);
-			timer = setTimeout($.pnotify_position_all, 10);
-		});
-	};
-	if (document.body)
-		do_when_ready();
-	else
-		$(do_when_ready);
-	$.extend({
-		pnotify_remove_all: function () {
-			var notices_data = jwindow.data("pnotify");
-			/* POA: Added null-check */
-			if (notices_data && notices_data.length) {
-				$.each(notices_data, function(){
-					if (this.pnotify_remove)
-						this.pnotify_remove();
-				});
-			}
-		},
-		pnotify_position_all: function () {
-			// This timer is used for queueing this function so it doesn't run
-			// repeatedly.
-			if (timer)
-				clearTimeout(timer);
-			timer = null;
-			// Get all the notices.
-			var notices_data = jwindow.data("pnotify");
-			if (!notices_data || !notices_data.length)
-				return;
-			// Reset the next position data.
-			$.each(notices_data, function(){
-				var s = this.opts.stack;
-				if (!s) return;
-				s.nextpos1 = s.firstpos1;
-				s.nextpos2 = s.firstpos2;
-				s.addpos2 = 0;
-				s.animation = true;
-			});
-			$.each(notices_data, function(){
-				this.pnotify_position();
-			});
-		},
-		pnotify: function(options) {
-			// Stores what is currently being animated (in or out).
-			var animating;
-
-			// Build main options.
-			var opts;
-			if (typeof options != "object") {
-				opts = $.extend({}, $.pnotify.defaults);
-				opts.text = options;
-			} else {
-				opts = $.extend({}, $.pnotify.defaults, options);
-			}
-			// Translate old pnotify_ style options.
-			for (var i in opts) {
-				if (typeof i == "string" && i.match(/^pnotify_/))
-					opts[i.replace(/^pnotify_/, "")] = opts[i];
-			}
-
-			if (opts.before_init) {
-				if (opts.before_init(opts) === false)
-					return null;
-			}
-
-			// This keeps track of the last element the mouse was over, so
-			// mouseleave, mouseenter, etc can be called.
-			var nonblock_last_elem;
-			// This is used to pass events through the notice if it is non-blocking.
-			var nonblock_pass = function(e, e_name){
-				pnotify.css("display", "none");
-				var element_below = document.elementFromPoint(e.clientX, e.clientY);
-				pnotify.css("display", "block");
-				var jelement_below = $(element_below);
-				var cursor_style = jelement_below.css("cursor");
-				pnotify.css("cursor", cursor_style != "auto" ? cursor_style : "default");
-				// If the element changed, call mouseenter, mouseleave, etc.
-				if (!nonblock_last_elem || nonblock_last_elem.get(0) != element_below) {
-					if (nonblock_last_elem) {
-						dom_event.call(nonblock_last_elem.get(0), "mouseleave", e.originalEvent);
-						dom_event.call(nonblock_last_elem.get(0), "mouseout", e.originalEvent);
-					}
-					dom_event.call(element_below, "mouseenter", e.originalEvent);
-					dom_event.call(element_below, "mouseover", e.originalEvent);
-				}
-				dom_event.call(element_below, e_name, e.originalEvent);
-				// Remember the latest element the mouse was over.
-				nonblock_last_elem = jelement_below;
-			};
-
-			// Get our styling object.
-			var styles = styling[opts.styling];
-
-			// Create our widget.
-			// Stop animation, reset the removal timer, and show the close
-			// button when the user mouses over.
-			var pnotify = $("<div />", {
-				"class": "ui-pnotify "+opts.addclass,
-				"css": {"display": "none"},
-				"mouseenter": function(e){
-					if (opts.nonblock) e.stopPropagation();
-					if (opts.mouse_reset && animating == "out") {
-						// If it's animating out, animate back in really quickly.
-						pnotify.stop(true);
-						animating = "in";
-						pnotify.css("height", "auto").animate({"width": opts.width, "opacity": opts.nonblock ? opts.nonblock_opacity : opts.opacity}, "fast");
-					}
-					if (opts.nonblock) {
-						// If it's non-blocking, animate to the other opacity.
-						pnotify.animate({"opacity": opts.nonblock_opacity}, "fast");
-					}
-					// Stop the close timer.
-					if (opts.hide && opts.mouse_reset) pnotify.pnotify_cancel_remove();
-					// Show the buttons.
-					if (opts.sticker && !opts.nonblock) pnotify.sticker.trigger("pnotify_icon").css("visibility", "visible");
-					if (opts.closer && !opts.nonblock) pnotify.closer.css("visibility", "visible");
-				},
-				"mouseleave": function(e){
-					if (opts.nonblock) e.stopPropagation();
-					nonblock_last_elem = null;
-					pnotify.css("cursor", "auto");
-					// Animate back to the normal opacity.
-					if (opts.nonblock && animating != "out")
-						pnotify.animate({"opacity": opts.opacity}, "fast");
-					// Start the close timer.
-					if (opts.hide && opts.mouse_reset) pnotify.pnotify_queue_remove();
-					// Hide the buttons.
-					if (opts.sticker_hover)
-						pnotify.sticker.css("visibility", "hidden");
-					if (opts.closer_hover)
-						pnotify.closer.css("visibility", "hidden");
-					$.pnotify_position_all();
-				},
-				"mouseover": function(e){
-					if (opts.nonblock) e.stopPropagation();
-				},
-				"mouseout": function(e){
-					if (opts.nonblock) e.stopPropagation();
-				},
-				"mousemove": function(e){
-					if (opts.nonblock) {
-						e.stopPropagation();
-						nonblock_pass(e, "onmousemove");
-					}
-				},
-				"mousedown": function(e){
-					if (opts.nonblock) {
-						e.stopPropagation();
-						e.preventDefault();
-						nonblock_pass(e, "onmousedown");
-					}
-				},
-				"mouseup": function(e){
-					if (opts.nonblock) {
-						e.stopPropagation();
-						e.preventDefault();
-						nonblock_pass(e, "onmouseup");
-					}
-				},
-				"click": function(e){
-					if (opts.nonblock) {
-						e.stopPropagation();
-						nonblock_pass(e, "onclick");
-					}
-				},
-				"dblclick": function(e){
-					if (opts.nonblock) {
-						e.stopPropagation();
-						nonblock_pass(e, "ondblclick");
-					}
-				}
-			});
-			pnotify.opts = opts;
-			// Create a container for the notice contents.
-			pnotify.container = $("<div />", {"class": styles.container+" ui-pnotify-container "+(opts.type == "error" ? styles.error : (opts.type == "info" ? styles.info : (opts.type == "success" ? styles.success : styles.notice)))})
-			.appendTo(pnotify);
-			if (opts.cornerclass != "")
-				pnotify.container.removeClass("ui-corner-all").addClass(opts.cornerclass);
-			// Create a drop shadow.
-			if (opts.shadow)
-				pnotify.container.addClass("ui-pnotify-shadow");
-
-			// The current version of Pines Notify.
-			pnotify.pnotify_version = "1.2.0";
-
-			// This function is for updating the notice.
-			pnotify.pnotify = function(options) {
-				// Update the notice.
-				var old_opts = opts;
-				if (typeof options == "string")
-					opts.text = options;
-				else
-					opts = $.extend({}, opts, options);
-				// Translate old pnotify_ style options.
-				for (var i in opts) {
-					if (typeof i == "string" && i.match(/^pnotify_/))
-						opts[i.replace(/^pnotify_/, "")] = opts[i];
-				}
-				pnotify.opts = opts;
-				// Update the corner class.
-				if (opts.cornerclass != old_opts.cornerclass)
-					pnotify.container.removeClass("ui-corner-all").addClass(opts.cornerclass);
-				// Update the shadow.
-				if (opts.shadow != old_opts.shadow) {
-					if (opts.shadow)
-						pnotify.container.addClass("ui-pnotify-shadow");
-					else
-						pnotify.container.removeClass("ui-pnotify-shadow");
-				}
-				// Update the additional classes.
-				if (opts.addclass === false)
-					pnotify.removeClass(old_opts.addclass);
-				else if (opts.addclass !== old_opts.addclass)
-					pnotify.removeClass(old_opts.addclass).addClass(opts.addclass);
-				// Update the title.
-				if (opts.title === false)
-					pnotify.title_container.slideUp("fast");
-				else if (opts.title !== old_opts.title) {
-					if (opts.title_escape)
-						pnotify.title_container.text(opts.title).slideDown(200);
-					else
-						pnotify.title_container.html(opts.title).slideDown(200);
-				}
-				// Update the text.
-				if (opts.text === false) {
-					pnotify.text_container.slideUp("fast");
-				} else if (opts.text !== old_opts.text) {
-					if (opts.text_escape)
-						pnotify.text_container.text(opts.text).slideDown(200);
-					else
-						pnotify.text_container.html(opts.insert_brs ? String(opts.text).replace(/\n/g, "<br />") : opts.text).slideDown(200);
-				}
-				// Update values for history menu access.
-				pnotify.pnotify_history = opts.history;
-				pnotify.pnotify_hide = opts.hide;
-				// Change the notice type.
-				if (opts.type != old_opts.type)
-					pnotify.container.removeClass(styles.error+" "+styles.notice+" "+styles.success+" "+styles.info).addClass(opts.type == "error" ? styles.error : (opts.type == "info" ? styles.info : (opts.type == "success" ? styles.success : styles.notice)));
-				if (opts.icon !== old_opts.icon || (opts.icon === true && opts.type != old_opts.type)) {
-					// Remove any old icon.
-					pnotify.container.find("div.ui-pnotify-icon").remove();
-					if (opts.icon !== false) {
-						// Build the new icon.
-						$("<div />", {"class": "ui-pnotify-icon"})
-						.append($("<span />", {"class": opts.icon === true ? (opts.type == "error" ? styles.error_icon : (opts.type == "info" ? styles.info_icon : (opts.type == "success" ? styles.success_icon : styles.notice_icon))) : opts.icon}))
-						.prependTo(pnotify.container);
-					}
-				}
-				// Update the width.
-				if (opts.width !== old_opts.width)
-					pnotify.animate({width: opts.width});
-				// Update the minimum height.
-				if (opts.min_height !== old_opts.min_height)
-					pnotify.container.animate({minHeight: opts.min_height});
-				// Update the opacity.
-				if (opts.opacity !== old_opts.opacity)
-					pnotify.fadeTo(opts.animate_speed, opts.opacity);
-				// Update the sticker and closer buttons.
-				if (!opts.closer || opts.nonblock)
-					pnotify.closer.css("display", "none");
-				else
-					pnotify.closer.css("display", "block");
-				if (!opts.sticker || opts.nonblock)
-					pnotify.sticker.css("display", "none");
-				else
-					pnotify.sticker.css("display", "block");
-				// Update the sticker icon.
-				pnotify.sticker.trigger("pnotify_icon");
-				// Update the hover status of the buttons.
-				if (opts.sticker_hover)
-					pnotify.sticker.css("visibility", "hidden");
-				else if (!opts.nonblock)
-					pnotify.sticker.css("visibility", "visible");
-				if (opts.closer_hover)
-					pnotify.closer.css("visibility", "hidden");
-				else if (!opts.nonblock)
-					pnotify.closer.css("visibility", "visible");
-				// Update the timed hiding.
-				if (!opts.hide)
-					pnotify.pnotify_cancel_remove();
-				else if (!old_opts.hide)
-					pnotify.pnotify_queue_remove();
-				pnotify.pnotify_queue_position();
-				return pnotify;
-			};
-
-			// Position the notice. dont_skip_hidden causes the notice to
-			// position even if it's not visible.
-			pnotify.pnotify_position = function(dont_skip_hidden){
-				// Get the notice's stack.
-				var s = pnotify.opts.stack;
-				if (!s) return;
-				if (!s.nextpos1)
-					s.nextpos1 = s.firstpos1;
-				if (!s.nextpos2)
-					s.nextpos2 = s.firstpos2;
-				if (!s.addpos2)
-					s.addpos2 = 0;
-				var hidden = pnotify.css("display") == "none";
-				// Skip this notice if it's not shown.
-				if (!hidden || dont_skip_hidden) {
-					var curpos1, curpos2;
-					// Store what will need to be animated.
-					var animate = {};
-					// Calculate the current pos1 value.
-					var csspos1;
-					switch (s.dir1) {
-						case "down":
-							csspos1 = "top";
-							break;
-						case "up":
-							csspos1 = "bottom";
-							break;
-						case "left":
-							csspos1 = "right";
-							break;
-						case "right":
-							csspos1 = "left";
-							break;
-					}
-					curpos1 = parseInt(pnotify.css(csspos1));
-					if (isNaN(curpos1))
-						curpos1 = 0;
-					// Remember the first pos1, so the first visible notice goes there.
-					if (typeof s.firstpos1 == "undefined" && !hidden) {
-						s.firstpos1 = curpos1;
-						s.nextpos1 = s.firstpos1;
-					}
-					// Calculate the current pos2 value.
-					var csspos2;
-					switch (s.dir2) {
-						case "down":
-							csspos2 = "top";
-							break;
-						case "up":
-							csspos2 = "bottom";
-							break;
-						case "left":
-							csspos2 = "right";
-							break;
-						case "right":
-							csspos2 = "left";
-							break;
-					}
-					curpos2 = parseInt(pnotify.css(csspos2));
-					if (isNaN(curpos2))
-						curpos2 = 0;
-					// Remember the first pos2, so the first visible notice goes there.
-					if (typeof s.firstpos2 == "undefined" && !hidden) {
-						s.firstpos2 = curpos2;
-						s.nextpos2 = s.firstpos2;
-					}
-					// Check that it's not beyond the viewport edge.
-					if ((s.dir1 == "down" && s.nextpos1 + pnotify.height() > jwindow.height()) ||
-						(s.dir1 == "up" && s.nextpos1 + pnotify.height() > jwindow.height()) ||
-						(s.dir1 == "left" && s.nextpos1 + pnotify.width() > jwindow.width()) ||
-						(s.dir1 == "right" && s.nextpos1 + pnotify.width() > jwindow.width()) ) {
-						// If it is, it needs to go back to the first pos1, and over on pos2.
-						s.nextpos1 = s.firstpos1;
-						s.nextpos2 += s.addpos2 + (typeof s.spacing2 == "undefined" ? 25 : s.spacing2);
-						s.addpos2 = 0;
-					}
-					// Animate if we're moving on dir2.
-					if (s.animation && s.nextpos2 < curpos2) {
-						switch (s.dir2) {
-							case "down":
-								animate.top = s.nextpos2+"px";
-								break;
-							case "up":
-								animate.bottom = s.nextpos2+"px";
-								break;
-							case "left":
-								animate.right = s.nextpos2+"px";
-								break;
-							case "right":
-								animate.left = s.nextpos2+"px";
-								break;
-						}
-					} else
-						pnotify.css(csspos2, s.nextpos2+"px");
-					// Keep track of the widest/tallest notice in the column/row, so we can push the next column/row.
-					switch (s.dir2) {
-						case "down":
-						case "up":
-							if (pnotify.outerHeight(true) > s.addpos2)
-								s.addpos2 = pnotify.height();
-							break;
-						case "left":
-						case "right":
-							if (pnotify.outerWidth(true) > s.addpos2)
-								s.addpos2 = pnotify.width();
-							break;
-					}
-					// Move the notice on dir1.
-					if (s.nextpos1) {
-						// Animate if we're moving toward the first pos.
-						if (s.animation && (curpos1 > s.nextpos1 || animate.top || animate.bottom || animate.right || animate.left)) {
-							switch (s.dir1) {
-								case "down":
-									animate.top = s.nextpos1+"px";
-									break;
-								case "up":
-									animate.bottom = s.nextpos1+"px";
-									break;
-								case "left":
-									animate.right = s.nextpos1+"px";
-									break;
-								case "right":
-									animate.left = s.nextpos1+"px";
-									break;
-							}
-						} else
-							pnotify.css(csspos1, s.nextpos1+"px");
-					}
-					// Run the animation.
-					if (animate.top || animate.bottom || animate.right || animate.left)
-						pnotify.animate(animate, {duration: 500, queue: false});
-					// Calculate the next dir1 position.
-					switch (s.dir1) {
-						case "down":
-						case "up":
-							s.nextpos1 += pnotify.height() + (typeof s.spacing1 == "undefined" ? 25 : s.spacing1);
-							break;
-						case "left":
-						case "right":
-							s.nextpos1 += pnotify.width() + (typeof s.spacing1 == "undefined" ? 25 : s.spacing1);
-							break;
-					}
-				}
-			};
-
-			// Queue the positiona all function so it doesn't run repeatedly and
-			// use up resources.
-			pnotify.pnotify_queue_position = function(milliseconds){
-				if (timer)
-					clearTimeout(timer);
-				if (!milliseconds)
-					milliseconds = 10;
-				timer = setTimeout($.pnotify_position_all, milliseconds);
-			};
-
-			// Display the notice.
-			pnotify.pnotify_display = function() {
-				// If the notice is not in the DOM, append it.
-				if (!pnotify.parent().length)
-					pnotify.appendTo(body);
-				// Run callback.
-				if (opts.before_open) {
-					if (opts.before_open(pnotify) === false)
-						return;
-				}
-				// Try to put it in the right position.
-				if (opts.stack.push != "top")
-					pnotify.pnotify_position(true);
-				// First show it, then set its opacity, then hide it.
-				if (opts.animation == "fade" || opts.animation.effect_in == "fade") {
-					// If it's fading in, it should start at 0.
-					pnotify.show().fadeTo(0, 0).hide();
-				} else {
-					// Or else it should be set to the opacity.
-					if (opts.opacity != 1)
-						pnotify.show().fadeTo(0, opts.opacity).hide();
-				}
-				pnotify.animate_in(function(){
-					if (opts.after_open)
-						opts.after_open(pnotify);
-
-					pnotify.pnotify_queue_position();
-
-					// Now set it to hide.
-					if (opts.hide)
-						pnotify.pnotify_queue_remove();
-				});
-			};
-
-			// Remove the notice.
-			pnotify.pnotify_remove = function() {
-				if (pnotify.timer) {
-					window.clearTimeout(pnotify.timer);
-					pnotify.timer = null;
-				}
-				// Run callback.
-				if (opts.before_close) {
-					if (opts.before_close(pnotify) === false)
-						return;
-				}
-				pnotify.animate_out(function(){
-					if (opts.after_close) {
-						if (opts.after_close(pnotify) === false)
-							return;
-					}
-					pnotify.pnotify_queue_position();
-					// If we're supposed to remove the notice from the DOM, do it.
-					if (opts.remove)
-						pnotify.detach();
-				});
-			};
-
-			// Animate the notice in.
-			pnotify.animate_in = function(callback){
-				// Declare that the notice is animating in. (Or has completed animating in.)
-				animating = "in";
-				var animation;
-				if (typeof opts.animation.effect_in != "undefined")
-					animation = opts.animation.effect_in;
-				else
-					animation = opts.animation;
-				if (animation == "none") {
-					pnotify.show();
-					callback();
-				} else if (animation == "show")
-					pnotify.show(opts.animate_speed, callback);
-				else if (animation == "fade")
-					pnotify.show().fadeTo(opts.animate_speed, opts.opacity, callback);
-				else if (animation == "slide")
-					pnotify.slideDown(opts.animate_speed, callback);
-				else if (typeof animation == "function")
-					animation("in", callback, pnotify);
-				else
-					pnotify.show(animation, (typeof opts.animation.options_in == "object" ? opts.animation.options_in : {}), opts.animate_speed, callback);
-			};
-
-			// Animate the notice out.
-			pnotify.animate_out = function(callback){
-				// Declare that the notice is animating out. (Or has completed animating out.)
-				animating = "out";
-				var animation;
-				if (typeof opts.animation.effect_out != "undefined")
-					animation = opts.animation.effect_out;
-				else
-					animation = opts.animation;
-				if (animation == "none") {
-					pnotify.hide();
-					callback();
-				} else if (animation == "show")
-					pnotify.hide(opts.animate_speed, callback);
-				else if (animation == "fade")
-					pnotify.fadeOut(opts.animate_speed, callback);
-				else if (animation == "slide")
-					pnotify.slideUp(opts.animate_speed, callback);
-				else if (typeof animation == "function")
-					animation("out", callback, pnotify);
-				else
-					pnotify.hide(animation, (typeof opts.animation.options_out == "object" ? opts.animation.options_out : {}), opts.animate_speed, callback);
-			};
-
-			// Cancel any pending removal timer.
-			pnotify.pnotify_cancel_remove = function() {
-				if (pnotify.timer)
-					window.clearTimeout(pnotify.timer);
-			};
-
-			// Queue a removal timer.
-			pnotify.pnotify_queue_remove = function() {
-				// Cancel any current removal timer.
-				pnotify.pnotify_cancel_remove();
-				pnotify.timer = window.setTimeout(function(){
-					pnotify.pnotify_remove();
-				}, (isNaN(opts.delay) ? 0 : opts.delay));
-			};
-
-			// Provide a button to close the notice.
-			pnotify.closer = $("<div />", {
-				"class": "ui-pnotify-closer",
-				"css": {"cursor": "pointer", "visibility": opts.closer_hover ? "hidden" : "visible"},
-				"click": function(){
-					pnotify.pnotify_remove();
-					pnotify.sticker.css("visibility", "hidden");
-					pnotify.closer.css("visibility", "hidden");
-				}
-			})
-			.append($("<span />", {"class": styles.closer}))
-			.appendTo(pnotify.container);
-			if (!opts.closer || opts.nonblock)
-				pnotify.closer.css("display", "none");
-
-			// Provide a button to stick the notice.
-			pnotify.sticker = $("<div />", {
-				"class": "ui-pnotify-sticker",
-				"css": {"cursor": "pointer", "visibility": opts.sticker_hover ? "hidden" : "visible"},
-				"click": function(){
-					opts.hide = !opts.hide;
-					if (opts.hide)
-						pnotify.pnotify_queue_remove();
-					else
-						pnotify.pnotify_cancel_remove();
-					$(this).trigger("pnotify_icon");
-				}
-			})
-			.bind("pnotify_icon", function(){
-				$(this).children().removeClass(styles.pin_up+" "+styles.pin_down).addClass(opts.hide ? styles.pin_up : styles.pin_down);
-			})
-			.append($("<span />", {"class": styles.pin_up}))
-			.appendTo(pnotify.container);
-			if (!opts.sticker || opts.nonblock)
-				pnotify.sticker.css("display", "none");
-
-			// Add the appropriate icon.
-			if (opts.icon !== false) {
-				$("<div />", {"class": "ui-pnotify-icon"})
-				.append($("<span />", {"class": opts.icon === true ? (opts.type == "error" ? styles.error_icon : (opts.type == "info" ? styles.info_icon : (opts.type == "success" ? styles.success_icon : styles.notice_icon))) : opts.icon}))
-				.prependTo(pnotify.container);
-			}
-
-			// Add a title.
-			pnotify.title_container = $("<h4 />", {
-				"class": "ui-pnotify-title"
-			})
-			.appendTo(pnotify.container);
-			if (opts.title === false)
-				pnotify.title_container.hide();
-			else if (opts.title_escape)
-				pnotify.title_container.text(opts.title);
-			else
-				pnotify.title_container.html(opts.title);
-
-			// Add text.
-			pnotify.text_container = $("<div />", {
-				"class": "ui-pnotify-text"
-			})
-			.appendTo(pnotify.container);
-			if (opts.text === false)
-				pnotify.text_container.hide();
-			else if (opts.text_escape)
-				pnotify.text_container.text(opts.text);
-			else
-				pnotify.text_container.html(opts.insert_brs ? String(opts.text).replace(/\n/g, "<br />") : opts.text);
-
-			// Set width and min height.
-			if (typeof opts.width == "string")
-				pnotify.css("width", opts.width);
-			if (typeof opts.min_height == "string")
-				pnotify.container.css("min-height", opts.min_height);
-
-			// The history variable controls whether the notice gets redisplayed
-			// by the history pull down.
-			pnotify.pnotify_history = opts.history;
-			// The hide variable controls whether the history pull down should
-			// queue a removal timer.
-			pnotify.pnotify_hide = opts.hide;
-
-			// Add the notice to the notice array.
-			var notices_data = jwindow.data("pnotify");
-			if (notices_data == null || typeof notices_data != "object")
-				notices_data = [];
-			if (opts.stack.push == "top")
-				notices_data = $.merge([pnotify], notices_data);
-			else
-				notices_data = $.merge(notices_data, [pnotify]);
-			jwindow.data("pnotify", notices_data);
-			// Now position all the notices if they are to push to the top.
-			if (opts.stack.push == "top")
-				pnotify.pnotify_queue_position(1);
-
-			// Run callback.
-			if (opts.after_init)
-				opts.after_init(pnotify);
-
-			if (opts.history) {
-				// If there isn't a history pull down, create one.
-				var history_menu = jwindow.data("pnotify_history");
-				if (typeof history_menu == "undefined") {
-					history_menu = $("<div />", {
-						"class": "ui-pnotify-history-container "+styles.hi_menu,
-						"mouseleave": function(){
-							history_menu.animate({top: "-"+history_handle_top+"px"}, {duration: 100, queue: false});
-						}
-					})
-					.append($("<div />", {"class": "ui-pnotify-history-header", "text": "Redisplay"}))
-					.append($("<button />", {
-							"class": "ui-pnotify-history-all "+styles.hi_btn,
-							"text": "All",
-							"mouseenter": function(){
-								$(this).addClass(styles.hi_btnhov);
-							},
-							"mouseleave": function(){
-								$(this).removeClass(styles.hi_btnhov);
-							},
-							"click": function(){
-								// Display all notices. (Disregarding non-history notices.)
-								$.each(notices_data, function(){
-									if (this.pnotify_history) {
-										if (this.is(":visible")) {
-											if (this.pnotify_hide)
-												this.pnotify_queue_remove();
-										} else if (this.pnotify_display)
-											this.pnotify_display();
-									}
-								});
-								return false;
-							}
-					}))
-					.append($("<button />", {
-							"class": "ui-pnotify-history-last "+styles.hi_btn,
-							"text": "Last",
-							"mouseenter": function(){
-								$(this).addClass(styles.hi_btnhov);
-							},
-							"mouseleave": function(){
-								$(this).removeClass(styles.hi_btnhov);
-							},
-							"click": function(){
-								// Look up the last history notice, and display it.
-								var i = -1;
-								var notice;
-								do {
-									if (i == -1)
-										notice = notices_data.slice(i);
-									else
-										notice = notices_data.slice(i, i+1);
-									if (!notice[0])
-										break;
-									i--;
-								} while (!notice[0].pnotify_history || notice[0].is(":visible"));
-								if (!notice[0])
-									return false;
-								if (notice[0].pnotify_display)
-									notice[0].pnotify_display();
-								return false;
-							}
-					}))
-					.appendTo(body);
-
-					// Make a handle so the user can pull down the history tab.
-					var handle = $("<span />", {
-						"class": "ui-pnotify-history-pulldown "+styles.hi_hnd,
-						"mouseenter": function(){
-							history_menu.animate({top: "0"}, {duration: 100, queue: false});
-						}
-					})
-					.appendTo(history_menu);
-
-					// Get the top of the handle.
-					history_handle_top = handle.offset().top + 2;
-					// Hide the history pull down up to the top of the handle.
-					history_menu.css({top: "-"+history_handle_top+"px"});
-					// Save the history pull down.
-					jwindow.data("pnotify_history", history_menu);
-				}
-			}
-
-			// Mark the stack so it won't animate the new notice.
-			opts.stack.animation = false;
-
-			// Display the notice.
-			pnotify.pnotify_display();
-
-			return pnotify;
-		}
-	});
-
-	// Some useful regexes.
-	var re_on = /^on/,
-		re_mouse_events = /^(dbl)?click$|^mouse(move|down|up|over|out|enter|leave)$|^contextmenu$/,
-		re_ui_events = /^(focus|blur|select|change|reset)$|^key(press|down|up)$/,
-		re_html_events = /^(scroll|resize|(un)?load|abort|error)$/;
-	// Fire a DOM event.
-	var dom_event = function(e, orig_e){
-		var event_object;
-		e = e.toLowerCase();
-		if (document.createEvent && this.dispatchEvent) {
-			// FireFox, Opera, Safari, Chrome
-			e = e.replace(re_on, '');
-			if (e.match(re_mouse_events)) {
-				// This allows the click event to fire on the notice. There is
-				// probably a much better way to do it.
-				$(this).offset();
-				event_object = document.createEvent("MouseEvents");
-				event_object.initMouseEvent(
-					e, orig_e.bubbles, orig_e.cancelable, orig_e.view, orig_e.detail,
-					orig_e.screenX, orig_e.screenY, orig_e.clientX, orig_e.clientY,
-					orig_e.ctrlKey, orig_e.altKey, orig_e.shiftKey, orig_e.metaKey, orig_e.button, orig_e.relatedTarget
-				);
-			} else if (e.match(re_ui_events)) {
-				event_object = document.createEvent("UIEvents");
-				event_object.initUIEvent(e, orig_e.bubbles, orig_e.cancelable, orig_e.view, orig_e.detail);
-			} else if (e.match(re_html_events)) {
-				event_object = document.createEvent("HTMLEvents");
-				event_object.initEvent(e, orig_e.bubbles, orig_e.cancelable);
-			}
-			if (!event_object) return;
-			this.dispatchEvent(event_object);
-		} else {
-			// Internet Explorer
-			if (!e.match(re_on)) e = "on"+e;
-			event_object = document.createEventObject(orig_e);
-			this.fireEvent(e, event_object);
-		}
-	};
-
-	$.pnotify.defaults = {
-		// The notice's title.
-		title: false,
-		// Whether to escape the content of the title. (Not allow HTML.)
-		title_escape: false,
-		// The notice's text.
-		text: false,
-		// Whether to escape the content of the text. (Not allow HTML.)
-		text_escape: false,
-		// What styling classes to use. (Can be either jqueryui or bootstrap.)
-		styling: "bootstrap",
-		// Additional classes to be added to the notice. (For custom styling.)
-		addclass: "",
-		// Class to be added to the notice for corner styling.
-		cornerclass: "",
-		// Create a non-blocking notice. It lets the user click elements underneath it.
-		nonblock: false,
-		// The opacity of the notice (if it's non-blocking) when the mouse is over it.
-		nonblock_opacity: .2,
-		// Display a pull down menu to redisplay previous notices, and place the notice in the history.
-		history: true,
-		// Width of the notice.
-		width: "300px",
-		// Minimum height of the notice. It will expand to fit content.
-		min_height: "16px",
-		// Type of the notice. "notice", "info", "success", or "error".
-		type: "notice",
-		// Set icon to true to use the default icon for the selected style/type, false for no icon, or a string for your own icon class.
-		icon: true,
-		// The animation to use when displaying and hiding the notice. "none", "show", "fade", and "slide" are built in to jQuery. Others require jQuery UI. Use an object with effect_in and effect_out to use different effects.
-		animation: "fade",
-		// Speed at which the notice animates in and out. "slow", "def" or "normal", "fast" or number of milliseconds.
-		animate_speed: "slow",
-		// Opacity of the notice.
-		opacity: 1,
-		// Display a drop shadow.
-		shadow: true,
-		// Provide a button for the user to manually close the notice.
-		closer: true,
-		// Only show the closer button on hover.
-		closer_hover: true,
-		// Provide a button for the user to manually stick the notice.
-		sticker: true,
-		// Only show the sticker button on hover.
-		sticker_hover: true,
-		// After a delay, remove the notice.
-		hide: true,
-		// Delay in milliseconds before the notice is removed.
-		delay: 8000,
-		// Reset the hide timer if the mouse moves over the notice.
-		mouse_reset: true,
-		// Remove the notice's elements from the DOM after it is removed.
-		remove: true,
-		// Change new lines to br tags.
-		insert_brs: true,
-		// The stack on which the notices will be placed. Also controls the direction the notices stack.
-		stack: {"dir1": "down", "dir2": "left", "push": "bottom", "spacing1": 25, "spacing2": 25}
-	};
-})(jQuery);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/vendor/jsbn.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/vendor/jsbn.js b/web/demos/app/scripts/vendor/jsbn.js
deleted file mode 100644
index ec2b650..0000000
--- a/web/demos/app/scripts/vendor/jsbn.js
+++ /dev/null
@@ -1,1244 +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.
- */
-(function(){
-
-    // Copyright (c) 2005  Tom Wu
-    // All Rights Reserved.
-    // See "LICENSE" for details.
-
-    // Basic JavaScript BN library - subset useful for RSA encryption.
-
-    // Bits per digit
-    var dbits;
-
-    // JavaScript engine analysis
-    var canary = 0xdeadbeefcafe;
-    var j_lm = ((canary&0xffffff)==0xefcafe);
-
-    // (public) Constructor
-    function BigInteger(a,b,c) {
-        if(a != null)
-            if("number" == typeof a) this.fromNumber(a,b,c);
-            else if(b == null && "string" != typeof a) this.fromString(a,256);
-            else this.fromString(a,b);
-    }
-
-    // return new, unset BigInteger
-    function nbi() { return new BigInteger(null); }
-
-    // am: Compute w_j += (x*this_i), propagate carries,
-    // c is initial carry, returns final carry.
-    // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
-    // We need to select the fastest one that works in this environment.
-
-    // am1: use a single mult and divide to get the high bits,
-    // max digit bits should be 26 because
-    // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
-    function am1(i,x,w,j,c,n) {
-        while(--n >= 0) {
-            var v = x*this[i++]+w[j]+c;
-            c = Math.floor(v/0x4000000);
-            w[j++] = v&0x3ffffff;
-        }
-        return c;
-    }
-    // am2 avoids a big mult-and-extract completely.
-    // Max digit bits should be <= 30 because we do bitwise ops
-    // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
-    function am2(i,x,w,j,c,n) {
-        var xl = x&0x7fff, xh = x>>15;
-        while(--n >= 0) {
-            var l = this[i]&0x7fff;
-            var h = this[i++]>>15;
-            var m = xh*l+h*xl;
-            l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);
-            c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
-            w[j++] = l&0x3fffffff;
-        }
-        return c;
-    }
-    // Alternately, set max digit bits to 28 since some
-    // browsers slow down when dealing with 32-bit numbers.
-    function am3(i,x,w,j,c,n) {
-        var xl = x&0x3fff, xh = x>>14;
-        while(--n >= 0) {
-            var l = this[i]&0x3fff;
-            var h = this[i++]>>14;
-            var m = xh*l+h*xl;
-            l = xl*l+((m&0x3fff)<<14)+w[j]+c;
-            c = (l>>28)+(m>>14)+xh*h;
-            w[j++] = l&0xfffffff;
-        }
-        return c;
-    }
-    var inBrowser = typeof navigator !== "undefined";
-    if(inBrowser && j_lm && (navigator.appName == "Microsoft Internet Explorer")) {
-        BigInteger.prototype.am = am2;
-        dbits = 30;
-    }
-    else if(inBrowser && j_lm && (navigator.appName != "Netscape")) {
-        BigInteger.prototype.am = am1;
-        dbits = 26;
-    }
-    else { // Mozilla/Netscape seems to prefer am3
-        BigInteger.prototype.am = am3;
-        dbits = 28;
-    }
-
-    BigInteger.prototype.DB = dbits;
-    BigInteger.prototype.DM = ((1<<dbits)-1);
-    BigInteger.prototype.DV = (1<<dbits);
-
-    var BI_FP = 52;
-    BigInteger.prototype.FV = Math.pow(2,BI_FP);
-    BigInteger.prototype.F1 = BI_FP-dbits;
-    BigInteger.prototype.F2 = 2*dbits-BI_FP;
-
-    // Digit conversions
-    var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
-    var BI_RC = new Array();
-    var rr,vv;
-    rr = "0".charCodeAt(0);
-    for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
-    rr = "a".charCodeAt(0);
-    for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
-    rr = "A".charCodeAt(0);
-    for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
-
-    function int2char(n) { return BI_RM.charAt(n); }
-    function intAt(s,i) {
-        var c = BI_RC[s.charCodeAt(i)];
-        return (c==null)?-1:c;
-    }
-
-    // (protected) copy this to r
-    function bnpCopyTo(r) {
-        for(var i = this.t-1; i >= 0; --i) r[i] = this[i];
-        r.t = this.t;
-        r.s = this.s;
-    }
-
-    // (protected) set from integer value x, -DV <= x < DV
-    function bnpFromInt(x) {
-        this.t = 1;
-        this.s = (x<0)?-1:0;
-        if(x > 0) this[0] = x;
-        else if(x < -1) this[0] = x+DV;
-        else this.t = 0;
-    }
-
-    // return bigint initialized to value
-    function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
-
-    // (protected) set from string and radix
-    function bnpFromString(s,b) {
-        var k;
-        if(b == 16) k = 4;
-        else if(b == 8) k = 3;
-        else if(b == 256) k = 8; // byte array
-        else if(b == 2) k = 1;
-        else if(b == 32) k = 5;
-        else if(b == 4) k = 2;
-        else { this.fromRadix(s,b); return; }
-        this.t = 0;
-        this.s = 0;
-        var i = s.length, mi = false, sh = 0;
-        while(--i >= 0) {
-            var x = (k==8)?s[i]&0xff:intAt(s,i);
-            if(x < 0) {
-                if(s.charAt(i) == "-") mi = true;
-                continue;
-            }
-            mi = false;
-            if(sh == 0)
-                this[this.t++] = x;
-            else if(sh+k > this.DB) {
-                this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;
-                this[this.t++] = (x>>(this.DB-sh));
-            }
-            else
-                this[this.t-1] |= x<<sh;
-            sh += k;
-            if(sh >= this.DB) sh -= this.DB;
-        }
-        if(k == 8 && (s[0]&0x80) != 0) {
-            this.s = -1;
-            if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;
-        }
-        this.clamp();
-        if(mi) BigInteger.ZERO.subTo(this,this);
-    }
-
-    // (protected) clamp off excess high words
-    function bnpClamp() {
-        var c = this.s&this.DM;
-        while(this.t > 0 && this[this.t-1] == c) --this.t;
-    }
-
-    // (public) return string representation in given radix
-    function bnToString(b) {
-        if(this.s < 0) return "-"+this.negate().toString(b);
-        var k;
-        if(b == 16) k = 4;
-        else if(b == 8) k = 3;
-        else if(b == 2) k = 1;
-        else if(b == 32) k = 5;
-        else if(b == 4) k = 2;
-        else return this.toRadix(b);
-        var km = (1<<k)-1, d, m = false, r = "", i = this.t;
-        var p = this.DB-(i*this.DB)%k;
-        if(i-- > 0) {
-            if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }
-            while(i >= 0) {
-                if(p < k) {
-                    d = (this[i]&((1<<p)-1))<<(k-p);
-                    d |= this[--i]>>(p+=this.DB-k);
-                }
-                else {
-                    d = (this[i]>>(p-=k))&km;
-                    if(p <= 0) { p += this.DB; --i; }
-                }
-                if(d > 0) m = true;
-                if(m) r += int2char(d);
-            }
-        }
-        return m?r:"0";
-    }
-
-    // (public) -this
-    function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
-
-    // (public) |this|
-    function bnAbs() { return (this.s<0)?this.negate():this; }
-
-    // (public) return + if this > a, - if this < a, 0 if equal
-    function bnCompareTo(a) {
-        var r = this.s-a.s;
-        if(r != 0) return r;
-        var i = this.t;
-        r = i-a.t;
-        if(r != 0) return (this.s<0)?-r:r;
-        while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;
-        return 0;
-    }
-
-    // returns bit length of the integer x
-    function nbits(x) {
-        var r = 1, t;
-        if((t=x>>>16) != 0) { x = t; r += 16; }
-        if((t=x>>8) != 0) { x = t; r += 8; }
-        if((t=x>>4) != 0) { x = t; r += 4; }
-        if((t=x>>2) != 0) { x = t; r += 2; }
-        if((t=x>>1) != 0) { x = t; r += 1; }
-        return r;
-    }
-
-    // (public) return the number of bits in "this"
-    function bnBitLength() {
-        if(this.t <= 0) return 0;
-        return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));
-    }
-
-    // (protected) r = this << n*DB
-    function bnpDLShiftTo(n,r) {
-        var i;
-        for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];
-        for(i = n-1; i >= 0; --i) r[i] = 0;
-        r.t = this.t+n;
-        r.s = this.s;
-    }
-
-    // (protected) r = this >> n*DB
-    function bnpDRShiftTo(n,r) {
-        for(var i = n; i < this.t; ++i) r[i-n] = this[i];
-        r.t = Math.max(this.t-n,0);
-        r.s = this.s;
-    }
-
-    // (protected) r = this << n
-    function bnpLShiftTo(n,r) {
-        var bs = n%this.DB;
-        var cbs = this.DB-bs;
-        var bm = (1<<cbs)-1;
-        var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;
-        for(i = this.t-1; i >= 0; --i) {
-            r[i+ds+1] = (this[i]>>cbs)|c;
-            c = (this[i]&bm)<<bs;
-        }
-        for(i = ds-1; i >= 0; --i) r[i] = 0;
-        r[ds] = c;
-        r.t = this.t+ds+1;
-        r.s = this.s;
-        r.clamp();
-    }
-
-    // (protected) r = this >> n
-    function bnpRShiftTo(n,r) {
-        r.s = this.s;
-        var ds = Math.floor(n/this.DB);
-        if(ds >= this.t) { r.t = 0; return; }
-        var bs = n%this.DB;
-        var cbs = this.DB-bs;
-        var bm = (1<<bs)-1;
-        r[0] = this[ds]>>bs;
-        for(var i = ds+1; i < this.t; ++i) {
-            r[i-ds-1] |= (this[i]&bm)<<cbs;
-            r[i-ds] = this[i]>>bs;
-        }
-        if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;
-        r.t = this.t-ds;
-        r.clamp();
-    }
-
-    // (protected) r = this - a
-    function bnpSubTo(a,r) {
-        var i = 0, c = 0, m = Math.min(a.t,this.t);
-        while(i < m) {
-            c += this[i]-a[i];
-            r[i++] = c&this.DM;
-            c >>= this.DB;
-        }
-        if(a.t < this.t) {
-            c -= a.s;
-            while(i < this.t) {
-                c += this[i];
-                r[i++] = c&this.DM;
-                c >>= this.DB;
-            }
-            c += this.s;
-        }
-        else {
-            c += this.s;
-            while(i < a.t) {
-                c -= a[i];
-                r[i++] = c&this.DM;
-                c >>= this.DB;
-            }
-            c -= a.s;
-        }
-        r.s = (c<0)?-1:0;
-        if(c < -1) r[i++] = this.DV+c;
-        else if(c > 0) r[i++] = c;
-        r.t = i;
-        r.clamp();
-    }
-
-    // (protected) r = this * a, r != this,a (HAC 14.12)
-    // "this" should be the larger one if appropriate.
-    function bnpMultiplyTo(a,r) {
-        var x = this.abs(), y = a.abs();
-        var i = x.t;
-        r.t = i+y.t;
-        while(--i >= 0) r[i] = 0;
-        for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);
-        r.s = 0;
-        r.clamp();
-        if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
-    }
-
-    // (protected) r = this^2, r != this (HAC 14.16)
-    function bnpSquareTo(r) {
-        var x = this.abs();
-        var i = r.t = 2*x.t;
-        while(--i >= 0) r[i] = 0;
-        for(i = 0; i < x.t-1; ++i) {
-            var c = x.am(i,x[i],r,2*i,0,1);
-            if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {
-                r[i+x.t] -= x.DV;
-                r[i+x.t+1] = 1;
-            }
-        }
-        if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);
-        r.s = 0;
-        r.clamp();
-    }
-
-    // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
-    // r != q, this != m.  q or r may be null.
-    function bnpDivRemTo(m,q,r) {
-        var pm = m.abs();
-        if(pm.t <= 0) return;
-        var pt = this.abs();
-        if(pt.t < pm.t) {
-            if(q != null) q.fromInt(0);
-            if(r != null) this.copyTo(r);
-            return;
-        }
-        if(r == null) r = nbi();
-        var y = nbi(), ts = this.s, ms = m.s;
-        var nsh = this.DB-nbits(pm[pm.t-1]);   // normalize modulus
-        if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
-        else { pm.copyTo(y); pt.copyTo(r); }
-        var ys = y.t;
-        var y0 = y[ys-1];
-        if(y0 == 0) return;
-        var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);
-        var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;
-        var i = r.t, j = i-ys, t = (q==null)?nbi():q;
-        y.dlShiftTo(j,t);
-        if(r.compareTo(t) >= 0) {
-            r[r.t++] = 1;
-            r.subTo(t,r);
-        }
-        BigInteger.ONE.dlShiftTo(ys,t);
-        t.subTo(y,y);  // "negative" y so we can replace sub with am later
-        while(y.t < ys) y[y.t++] = 0;
-        while(--j >= 0) {
-            // Estimate quotient digit
-            var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);
-            if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) {   // Try it out
-                y.dlShiftTo(j,t);
-                r.subTo(t,r);
-                while(r[i] < --qd) r.subTo(t,r);
-            }
-        }
-        if(q != null) {
-            r.drShiftTo(ys,q);
-            if(ts != ms) BigInteger.ZERO.subTo(q,q);
-        }
-        r.t = ys;
-        r.clamp();
-        if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder
-        if(ts < 0) BigInteger.ZERO.subTo(r,r);
-    }
-
-    // (public) this mod a
-    function bnMod(a) {
-        var r = nbi();
-        this.abs().divRemTo(a,null,r);
-        if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
-        return r;
-    }
-
-    // Modular reduction using "classic" algorithm
-    function Classic(m) { this.m = m; }
-    function cConvert(x) {
-        if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
-        else return x;
-    }
-    function cRevert(x) { return x; }
-    function cReduce(x) { x.divRemTo(this.m,null,x); }
-    function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
-    function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
-
-    Classic.prototype.convert = cConvert;
-    Classic.prototype.revert = cRevert;
-    Classic.prototype.reduce = cReduce;
-    Classic.prototype.mulTo = cMulTo;
-    Classic.prototype.sqrTo = cSqrTo;
-
-    // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
-    // justification:
-    //         xy == 1 (mod m)
-    //         xy =  1+km
-    //   xy(2-xy) = (1+km)(1-km)
-    // x[y(2-xy)] = 1-k^2m^2
-    // x[y(2-xy)] == 1 (mod m^2)
-    // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
-    // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
-    // JS multiply "overflows" differently from C/C++, so care is needed here.
-    function bnpInvDigit() {
-        if(this.t < 1) return 0;
-        var x = this[0];
-        if((x&1) == 0) return 0;
-        var y = x&3;       // y == 1/x mod 2^2
-        y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4
-        y = (y*(2-(x&0xff)*y))&0xff;   // y == 1/x mod 2^8
-        y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;    // y == 1/x mod 2^16
-        // last step - calculate inverse mod DV directly;
-        // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
-        y = (y*(2-x*y%this.DV))%this.DV;       // y == 1/x mod 2^dbits
-        // we really want the negative inverse, and -DV < y < DV
-        return (y>0)?this.DV-y:-y;
-    }
-
-    // Montgomery reduction
-    function Montgomery(m) {
-        this.m = m;
-        this.mp = m.invDigit();
-        this.mpl = this.mp&0x7fff;
-        this.mph = this.mp>>15;
-        this.um = (1<<(m.DB-15))-1;
-        this.mt2 = 2*m.t;
-    }
-
-    // xR mod m
-    function montConvert(x) {
-        var r = nbi();
-        x.abs().dlShiftTo(this.m.t,r);
-        r.divRemTo(this.m,null,r);
-        if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
-        return r;
-    }
-
-    // x/R mod m
-    function montRevert(x) {
-        var r = nbi();
-        x.copyTo(r);
-        this.reduce(r);
-        return r;
-    }
-
-    // x = x/R mod m (HAC 14.32)
-    function montReduce(x) {
-        while(x.t <= this.mt2) // pad x so am has enough room later
-            x[x.t++] = 0;
-        for(var i = 0; i < this.m.t; ++i) {
-            // faster way of calculating u0 = x[i]*mp mod DV
-            var j = x[i]&0x7fff;
-            var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;
-            // use am to combine the multiply-shift-add into one call
-            j = i+this.m.t;
-            x[j] += this.m.am(0,u0,x,i,0,this.m.t);
-            // propagate carry
-            while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }
-        }
-        x.clamp();
-        x.drShiftTo(this.m.t,x);
-        if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
-    }
-
-    // r = "x^2/R mod m"; x != r
-    function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
-
-    // r = "xy/R mod m"; x,y != r
-    function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
-
-    Montgomery.prototype.convert = montConvert;
-    Montgomery.prototype.revert = montRevert;
-    Montgomery.prototype.reduce = montReduce;
-    Montgomery.prototype.mulTo = montMulTo;
-    Montgomery.prototype.sqrTo = montSqrTo;
-
-    // (protected) true iff this is even
-    function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }
-
-    // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
-    function bnpExp(e,z) {
-        if(e > 0xffffffff || e < 1) return BigInteger.ONE;
-        var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
-        g.copyTo(r);
-        while(--i >= 0) {
-            z.sqrTo(r,r2);
-            if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
-            else { var t = r; r = r2; r2 = t; }
-        }
-        return z.revert(r);
-    }
-
-    // (public) this^e % m, 0 <= e < 2^32
-    function bnModPowInt(e,m) {
-        var z;
-        if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
-        return this.exp(e,z);
-    }
-
-    // protected
-    BigInteger.prototype.copyTo = bnpCopyTo;
-    BigInteger.prototype.fromInt = bnpFromInt;
-    BigInteger.prototype.fromString = bnpFromString;
-    BigInteger.prototype.clamp = bnpClamp;
-    BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
-    BigInteger.prototype.drShiftTo = bnpDRShiftTo;
-    BigInteger.prototype.lShiftTo = bnpLShiftTo;
-    BigInteger.prototype.rShiftTo = bnpRShiftTo;
-    BigInteger.prototype.subTo = bnpSubTo;
-    BigInteger.prototype.multiplyTo = bnpMultiplyTo;
-    BigInteger.prototype.squareTo = bnpSquareTo;
-    BigInteger.prototype.divRemTo = bnpDivRemTo;
-    BigInteger.prototype.invDigit = bnpInvDigit;
-    BigInteger.prototype.isEven = bnpIsEven;
-    BigInteger.prototype.exp = bnpExp;
-
-    // public
-    BigInteger.prototype.toString = bnToString;
-    BigInteger.prototype.negate = bnNegate;
-    BigInteger.prototype.abs = bnAbs;
-    BigInteger.prototype.compareTo = bnCompareTo;
-    BigInteger.prototype.bitLength = bnBitLength;
-    BigInteger.prototype.mod = bnMod;
-    BigInteger.prototype.modPowInt = bnModPowInt;
-
-    // "constants"
-    BigInteger.ZERO = nbv(0);
-    BigInteger.ONE = nbv(1);
-
-    // Copyright (c) 2005-2009  Tom Wu
-    // All Rights Reserved.
-    // See "LICENSE" for details.
-
-    // Extended JavaScript BN functions, required for RSA private ops.
-
-    // Version 1.1: new BigInteger("0", 10) returns "proper" zero
-    // Version 1.2: square() API, isProbablePrime fix
-
-    // (public)
-    function bnClone() { var r = nbi(); this.copyTo(r); return r; }
-
-    // (public) return value as integer
-    function bnIntValue() {
-        if(this.s < 0) {
-            if(this.t == 1) return this[0]-this.DV;
-            else if(this.t == 0) return -1;
-        }
-        else if(this.t == 1) return this[0];
-        else if(this.t == 0) return 0;
-        // assumes 16 < DB < 32
-        return ((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];
-    }
-
-    // (public) return value as byte
-    function bnByteValue() { return (this.t==0)?this.s:(this[0]<<24)>>24; }
-
-    // (public) return value as short (assumes DB>=16)
-    function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }
-
-    // (protected) return x s.t. r^x < DV
-    function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }
-
-    // (public) 0 if this == 0, 1 if this > 0
-    function bnSigNum() {
-        if(this.s < 0) return -1;
-        else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;
-        else return 1;
-    }
-
-    // (protected) convert to radix string
-    function bnpToRadix(b) {
-        if(b == null) b = 10;
-        if(this.signum() == 0 || b < 2 || b > 36) return "0";
-        var cs = this.chunkSize(b);
-        var a = Math.pow(b,cs);
-        var d = nbv(a), y = nbi(), z = nbi(), r = "";
-        this.divRemTo(d,y,z);
-        while(y.signum() > 0) {
-            r = (a+z.intValue()).toString(b).substr(1) + r;
-            y.divRemTo(d,y,z);
-        }
-        return z.intValue().toString(b) + r;
-    }
-
-    // (protected) convert from radix string
-    function bnpFromRadix(s,b) {
-        this.fromInt(0);
-        if(b == null) b = 10;
-        var cs = this.chunkSize(b);
-        var d = Math.pow(b,cs), mi = false, j = 0, w = 0;
-        for(var i = 0; i < s.length; ++i) {
-            var x = intAt(s,i);
-            if(x < 0) {
-                if(s.charAt(i) == "-" && this.signum() == 0) mi = true;
-                continue;
-            }
-            w = b*w+x;
-            if(++j >= cs) {
-                this.dMultiply(d);
-                this.dAddOffset(w,0);
-                j = 0;
-                w = 0;
-            }
-        }
-        if(j > 0) {
-            this.dMultiply(Math.pow(b,j));
-            this.dAddOffset(w,0);
-        }
-        if(mi) BigInteger.ZERO.subTo(this,this);
-    }
-
-    // (protected) alternate constructor
-    function bnpFromNumber(a,b,c) {
-        if("number" == typeof b) {
-            // new BigInteger(int,int,RNG)
-            if(a < 2) this.fromInt(1);
-            else {
-                this.fromNumber(a,c);
-                if(!this.testBit(a-1))	// force MSB set
-                    this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);
-                if(this.isEven()) this.dAddOffset(1,0); // force odd
-                while(!this.isProbablePrime(b)) {
-                    this.dAddOffset(2,0);
-                    if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);
-                }
-            }
-        }
-        else {
-            // new BigInteger(int,RNG)
-            var x = new Array(), t = a&7;
-            x.length = (a>>3)+1;
-            b.nextBytes(x);
-            if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;
-            this.fromString(x,256);
-        }
-    }
-
-    // (public) convert to bigendian byte array
-    function bnToByteArray() {
-        var i = this.t, r = new Array();
-        r[0] = this.s;
-        var p = this.DB-(i*this.DB)%8, d, k = 0;
-        if(i-- > 0) {
-            if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)
-                r[k++] = d|(this.s<<(this.DB-p));
-            while(i >= 0) {
-                if(p < 8) {
-                    d = (this[i]&((1<<p)-1))<<(8-p);
-                    d |= this[--i]>>(p+=this.DB-8);
-                }
-                else {
-                    d = (this[i]>>(p-=8))&0xff;
-                    if(p <= 0) { p += this.DB; --i; }
-                }
-                if((d&0x80) != 0) d |= -256;
-                if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;
-                if(k > 0 || d != this.s) r[k++] = d;
-            }
-        }
-        return r;
-    }
-
-    function bnEquals(a) { return(this.compareTo(a)==0); }
-    function bnMin(a) { return(this.compareTo(a)<0)?this:a; }
-    function bnMax(a) { return(this.compareTo(a)>0)?this:a; }
-
-    // (protected) r = this op a (bitwise)
-    function bnpBitwiseTo(a,op,r) {
-        var i, f, m = Math.min(a.t,this.t);
-        for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);
-        if(a.t < this.t) {
-            f = a.s&this.DM;
-            for(i = m; i < this.t; ++i) r[i] = op(this[i],f);
-            r.t = this.t;
-        }
-        else {
-            f = this.s&this.DM;
-            for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);
-            r.t = a.t;
-        }
-        r.s = op(this.s,a.s);
-        r.clamp();
-    }
-
-    // (public) this & a
-    function op_and(x,y) { return x&y; }
-    function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }
-
-    // (public) this | a
-    function op_or(x,y) { return x|y; }
-    function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }
-
-    // (public) this ^ a
-    function op_xor(x,y) { return x^y; }
-    function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }
-
-    // (public) this & ~a
-    function op_andnot(x,y) { return x&~y; }
-    function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }
-
-    // (public) ~this
-    function bnNot() {
-        var r = nbi();
-        for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];
-        r.t = this.t;
-        r.s = ~this.s;
-        return r;
-    }
-
-    // (public) this << n
-    function bnShiftLeft(n) {
-        var r = nbi();
-        if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);
-        return r;
-    }
-
-    // (public) this >> n
-    function bnShiftRight(n) {
-        var r = nbi();
-        if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);
-        return r;
-    }
-
-    // return index of lowest 1-bit in x, x < 2^31
-    function lbit(x) {
-        if(x == 0) return -1;
-        var r = 0;
-        if((x&0xffff) == 0) { x >>= 16; r += 16; }
-        if((x&0xff) == 0) { x >>= 8; r += 8; }
-        if((x&0xf) == 0) { x >>= 4; r += 4; }
-        if((x&3) == 0) { x >>= 2; r += 2; }
-        if((x&1) == 0) ++r;
-        return r;
-    }
-
-    // (public) returns index of lowest 1-bit (or -1 if none)
-    function bnGetLowestSetBit() {
-        for(var i = 0; i < this.t; ++i)
-            if(this[i] != 0) return i*this.DB+lbit(this[i]);
-        if(this.s < 0) return this.t*this.DB;
-        return -1;
-    }
-
-    // return number of 1 bits in x
-    function cbit(x) {
-        var r = 0;
-        while(x != 0) { x &= x-1; ++r; }
-        return r;
-    }
-
-    // (public) return number of set bits
-    function bnBitCount() {
-        var r = 0, x = this.s&this.DM;
-        for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);
-        return r;
-    }
-
-    // (public) true iff nth bit is set
-    function bnTestBit(n) {
-        var j = Math.floor(n/this.DB);
-        if(j >= this.t) return(this.s!=0);
-        return((this[j]&(1<<(n%this.DB)))!=0);
-    }
-
-    // (protected) this op (1<<n)
-    function bnpChangeBit(n,op) {
-        var r = BigInteger.ONE.shiftLeft(n);
-        this.bitwiseTo(r,op,r);
-        return r;
-    }
-
-    // (public) this | (1<<n)
-    function bnSetBit(n) { return this.changeBit(n,op_or); }
-
-    // (public) this & ~(1<<n)
-    function bnClearBit(n) { return this.changeBit(n,op_andnot); }
-
-    // (public) this ^ (1<<n)
-    function bnFlipBit(n) { return this.changeBit(n,op_xor); }
-
-    // (protected) r = this + a
-    function bnpAddTo(a,r) {
-        var i = 0, c = 0, m = Math.min(a.t,this.t);
-        while(i < m) {
-            c += this[i]+a[i];
-            r[i++] = c&this.DM;
-            c >>= this.DB;
-        }
-        if(a.t < this.t) {
-            c += a.s;
-            while(i < this.t) {
-                c += this[i];
-                r[i++] = c&this.DM;
-                c >>= this.DB;
-            }
-            c += this.s;
-        }
-        else {
-            c += this.s;
-            while(i < a.t) {
-                c += a[i];
-                r[i++] = c&this.DM;
-                c >>= this.DB;
-            }
-            c += a.s;
-        }
-        r.s = (c<0)?-1:0;
-        if(c > 0) r[i++] = c;
-        else if(c < -1) r[i++] = this.DV+c;
-        r.t = i;
-        r.clamp();
-    }
-
-    // (public) this + a
-    function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }
-
-    // (public) this - a
-    function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }
-
-    // (public) this * a
-    function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }
-
-    // (public) this^2
-    function bnSquare() { var r = nbi(); this.squareTo(r); return r; }
-
-    // (public) this / a
-    function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }
-
-    // (public) this % a
-    function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }
-
-    // (public) [this/a,this%a]
-    function bnDivideAndRemainder(a) {
-        var q = nbi(), r = nbi();
-        this.divRemTo(a,q,r);
-        return new Array(q,r);
-    }
-
-    // (protected) this *= n, this >= 0, 1 < n < DV
-    function bnpDMultiply(n) {
-        this[this.t] = this.am(0,n-1,this,0,0,this.t);
-        ++this.t;
-        this.clamp();
-    }
-
-    // (protected) this += n << w words, this >= 0
-    function bnpDAddOffset(n,w) {
-        if(n == 0) return;
-        while(this.t <= w) this[this.t++] = 0;
-        this[w] += n;
-        while(this[w] >= this.DV) {
-            this[w] -= this.DV;
-            if(++w >= this.t) this[this.t++] = 0;
-            ++this[w];
-        }
-    }
-
-    // A "null" reducer
-    function NullExp() {}
-    function nNop(x) { return x; }
-    function nMulTo(x,y,r) { x.multiplyTo(y,r); }
-    function nSqrTo(x,r) { x.squareTo(r); }
-
-    NullExp.prototype.convert = nNop;
-    NullExp.prototype.revert = nNop;
-    NullExp.prototype.mulTo = nMulTo;
-    NullExp.prototype.sqrTo = nSqrTo;
-
-    // (public) this^e
-    function bnPow(e) { return this.exp(e,new NullExp()); }
-
-    // (protected) r = lower n words of "this * a", a.t <= n
-    // "this" should be the larger one if appropriate.
-    function bnpMultiplyLowerTo(a,n,r) {
-        var i = Math.min(this.t+a.t,n);
-        r.s = 0; // assumes a,this >= 0
-        r.t = i;
-        while(i > 0) r[--i] = 0;
-        var j;
-        for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);
-        for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);
-        r.clamp();
-    }
-
-    // (protected) r = "this * a" without lower n words, n > 0
-    // "this" should be the larger one if appropriate.
-    function bnpMultiplyUpperTo(a,n,r) {
-        --n;
-        var i = r.t = this.t+a.t-n;
-        r.s = 0; // assumes a,this >= 0
-        while(--i >= 0) r[i] = 0;
-        for(i = Math.max(n-this.t,0); i < a.t; ++i)
-            r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);
-        r.clamp();
-        r.drShiftTo(1,r);
-    }
-
-    // Barrett modular reduction
-    function Barrett(m) {
-        // setup Barrett
-        this.r2 = nbi();
-        this.q3 = nbi();
-        BigInteger.ONE.dlShiftTo(2*m.t,this.r2);
-        this.mu = this.r2.divide(m);
-        this.m = m;
-    }
-
-    function barrettConvert(x) {
-        if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);
-        else if(x.compareTo(this.m) < 0) return x;
-        else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }
-    }
-
-    function barrettRevert(x) { return x; }
-
-    // x = x mod m (HAC 14.42)
-    function barrettReduce(x) {
-        x.drShiftTo(this.m.t-1,this.r2);
-        if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }
-        this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);
-        this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);
-        while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);
-        x.subTo(this.r2,x);
-        while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
-    }
-
-    // r = x^2 mod m; x != r
-    function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
-
-    // r = x*y mod m; x,y != r
-    function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
-
-    Barrett.prototype.convert = barrettConvert;
-    Barrett.prototype.revert = barrettRevert;
-    Barrett.prototype.reduce = barrettReduce;
-    Barrett.prototype.mulTo = barrettMulTo;
-    Barrett.prototype.sqrTo = barrettSqrTo;
-
-    // (public) this^e % m (HAC 14.85)
-    function bnModPow(e,m) {
-        var i = e.bitLength(), k, r = nbv(1), z;
-        if(i <= 0) return r;
-        else if(i < 18) k = 1;
-        else if(i < 48) k = 3;
-        else if(i < 144) k = 4;
-        else if(i < 768) k = 5;
-        else k = 6;
-        if(i < 8)
-            z = new Classic(m);
-        else if(m.isEven())
-            z = new Barrett(m);
-        else
-            z = new Montgomery(m);
-
-        // precomputation
-        var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;
-        g[1] = z.convert(this);
-        if(k > 1) {
-            var g2 = nbi();
-            z.sqrTo(g[1],g2);
-            while(n <= km) {
-                g[n] = nbi();
-                z.mulTo(g2,g[n-2],g[n]);
-                n += 2;
-            }
-        }
-
-        var j = e.t-1, w, is1 = true, r2 = nbi(), t;
-        i = nbits(e[j])-1;
-        while(j >= 0) {
-            if(i >= k1) w = (e[j]>>(i-k1))&km;
-            else {
-                w = (e[j]&((1<<(i+1))-1))<<(k1-i);
-                if(j > 0) w |= e[j-1]>>(this.DB+i-k1);
-            }
-
-            n = k;
-            while((w&1) == 0) { w >>= 1; --n; }
-            if((i -= n) < 0) { i += this.DB; --j; }
-            if(is1) {	// ret == 1, don't bother squaring or multiplying it
-                g[w].copyTo(r);
-                is1 = false;
-            }
-            else {
-                while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }
-                if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }
-                z.mulTo(r2,g[w],r);
-            }
-
-            while(j >= 0 && (e[j]&(1<<i)) == 0) {
-                z.sqrTo(r,r2); t = r; r = r2; r2 = t;
-                if(--i < 0) { i = this.DB-1; --j; }
-            }
-        }
-        return z.revert(r);
-    }
-
-    // (public) gcd(this,a) (HAC 14.54)
-    function bnGCD(a) {
-        var x = (this.s<0)?this.negate():this.clone();
-        var y = (a.s<0)?a.negate():a.clone();
-        if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }
-        var i = x.getLowestSetBit(), g = y.getLowestSetBit();
-        if(g < 0) return x;
-        if(i < g) g = i;
-        if(g > 0) {
-            x.rShiftTo(g,x);
-            y.rShiftTo(g,y);
-        }
-        while(x.signum() > 0) {
-            if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);
-            if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);
-            if(x.compareTo(y) >= 0) {
-                x.subTo(y,x);
-                x.rShiftTo(1,x);
-            }
-            else {
-                y.subTo(x,y);
-                y.rShiftTo(1,y);
-            }
-        }
-        if(g > 0) y.lShiftTo(g,y);
-        return y;
-    }
-
-    // (protected) this % n, n < 2^26
-    function bnpModInt(n) {
-        if(n <= 0) return 0;
-        var d = this.DV%n, r = (this.s<0)?n-1:0;
-        if(this.t > 0)
-            if(d == 0) r = this[0]%n;
-            else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;
-        return r;
-    }
-
-    // (public) 1/this % m (HAC 14.61)
-    function bnModInverse(m) {
-        var ac = m.isEven();
-        if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;
-        var u = m.clone(), v = this.clone();
-        var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);
-        while(u.signum() != 0) {
-            while(u.isEven()) {
-                u.rShiftTo(1,u);
-                if(ac) {
-                    if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }
-                    a.rShiftTo(1,a);
-                }
-                else if(!b.isEven()) b.subTo(m,b);
-                b.rShiftTo(1,b);
-            }
-            while(v.isEven()) {
-                v.rShiftTo(1,v);
-                if(ac) {
-                    if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }
-                    c.rShiftTo(1,c);
-                }
-                else if(!d.isEven()) d.subTo(m,d);
-                d.rShiftTo(1,d);
-            }
-            if(u.compareTo(v) >= 0) {
-                u.subTo(v,u);
-                if(ac) a.subTo(c,a);
-                b.subTo(d,b);
-            }
-            else {
-                v.subTo(u,v);
-                if(ac) c.subTo(a,c);
-                d.subTo(b,d);
-            }
-        }
-        if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;
-        if(d.compareTo(m) >= 0) return d.subtract(m);
-        if(d.signum() < 0) d.addTo(m,d); else return d;
-        if(d.signum() < 0) return d.add(m); else return d;
-    }
-
-    var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];
-    var lplim = (1<<26)/lowprimes[lowprimes.length-1];
-
-    // (public) test primality with certainty >= 1-.5^t
-    function bnIsProbablePrime(t) {
-        var i, x = this.abs();
-        if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {
-            for(i = 0; i < lowprimes.length; ++i)
-                if(x[0] == lowprimes[i]) return true;
-            return false;
-        }
-        if(x.isEven()) return false;
-        i = 1;
-        while(i < lowprimes.length) {
-            var m = lowprimes[i], j = i+1;
-            while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];
-            m = x.modInt(m);
-            while(i < j) if(m%lowprimes[i++] == 0) return false;
-        }
-        return x.millerRabin(t);
-    }
-
-    // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
-    function bnpMillerRabin(t) {
-        var n1 = this.subtract(BigInteger.ONE);
-        var k = n1.getLowestSetBit();
-        if(k <= 0) return false;
-        var r = n1.shiftRight(k);
-        t = (t+1)>>1;
-        if(t > lowprimes.length) t = lowprimes.length;
-        var a = nbi();
-        for(var i = 0; i < t; ++i) {
-            //Pick bases at random, instead of starting at 2
-            a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);
-            var y = a.modPow(r,this);
-            if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
-                var j = 1;
-                while(j++ < k && y.compareTo(n1) != 0) {
-                    y = y.modPowInt(2,this);
-                    if(y.compareTo(BigInteger.ONE) == 0) return false;
-                }
-                if(y.compareTo(n1) != 0) return false;
-            }
-        }
-        return true;
-    }
-
-    // protected
-    BigInteger.prototype.chunkSize = bnpChunkSize;
-    BigInteger.prototype.toRadix = bnpToRadix;
-    BigInteger.prototype.fromRadix = bnpFromRadix;
-    BigInteger.prototype.fromNumber = bnpFromNumber;
-    BigInteger.prototype.bitwiseTo = bnpBitwiseTo;
-    BigInteger.prototype.changeBit = bnpChangeBit;
-    BigInteger.prototype.addTo = bnpAddTo;
-    BigInteger.prototype.dMultiply = bnpDMultiply;
-    BigInteger.prototype.dAddOffset = bnpDAddOffset;
-    BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;
-    BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;
-    BigInteger.prototype.modInt = bnpModInt;
-    BigInteger.prototype.millerRabin = bnpMillerRabin;
-
-    // public
-    BigInteger.prototype.clone = bnClone;
-    BigInteger.prototype.intValue = bnIntValue;
-    BigInteger.prototype.byteValue = bnByteValue;
-    BigInteger.prototype.shortValue = bnShortValue;
-    BigInteger.prototype.signum = bnSigNum;
-    BigInteger.prototype.toByteArray = bnToByteArray;
-    BigInteger.prototype.equals = bnEquals;
-    BigInteger.prototype.min = bnMin;
-    BigInteger.prototype.max = bnMax;
-    BigInteger.prototype.and = bnAnd;
-    BigInteger.prototype.or = bnOr;
-    BigInteger.prototype.xor = bnXor;
-    BigInteger.prototype.andNot = bnAndNot;
-    BigInteger.prototype.not = bnNot;
-    BigInteger.prototype.shiftLeft = bnShiftLeft;
-    BigInteger.prototype.shiftRight = bnShiftRight;
-    BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;
-    BigInteger.prototype.bitCount = bnBitCount;
-    BigInteger.prototype.testBit = bnTestBit;
-    BigInteger.prototype.setBit = bnSetBit;
-    BigInteger.prototype.clearBit = bnClearBit;
-    BigInteger.prototype.flipBit = bnFlipBit;
-    BigInteger.prototype.add = bnAdd;
-    BigInteger.prototype.subtract = bnSubtract;
-    BigInteger.prototype.multiply = bnMultiply;
-    BigInteger.prototype.divide = bnDivide;
-    BigInteger.prototype.remainder = bnRemainder;
-    BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;
-    BigInteger.prototype.modPow = bnModPow;
-    BigInteger.prototype.modInverse = bnModInverse;
-    BigInteger.prototype.pow = bnPow;
-    BigInteger.prototype.gcd = bnGCD;
-    BigInteger.prototype.isProbablePrime = bnIsProbablePrime;
-
-    // JSBN-specific extension
-    BigInteger.prototype.square = bnSquare;
-
-    // BigInteger interfaces not implemented in jsbn:
-
-    // BigInteger(int signum, byte[] magnitude)
-    // double doubleValue()
-    // float floatValue()
-    // int hashCode()
-    // long longValue()
-    // static BigInteger valueOf(long val)
-    if (typeof exports !== 'undefined') {
-        exports = module.exports = BigInteger;
-    } else {
-        this.BigInteger = BigInteger;
-    }
-
-}).call(this);
\ No newline at end of file


[85/98] [abbrv] incubator-apex-malhar git commit: Cleanup of web resources

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/ClientData.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/ClientData.js b/contrib/src/main/html/siteops/ClientData.js
deleted file mode 100644
index 28df87a..0000000
--- a/contrib/src/main/html/siteops/ClientData.js
+++ /dev/null
@@ -1,39 +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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawClientDataTableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        document.getElementById('totaldata').innerHTML = pts[0];
-      }
-    }
-    connect.open('GET',  "ClientData.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/ClientData.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/ClientData.php b/contrib/src/main/html/siteops/ClientData.php
deleted file mode 100644
index 5e97e96..0000000
--- a/contrib/src/main/html/siteops/ClientData.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(9);
-
-// result array
-$result = array();
-
-$value = $redis->get(1);
-$result[] = $value;
-
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/DrawPageViewTimeChart.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/DrawPageViewTimeChart.js b/contrib/src/main/html/siteops/DrawPageViewTimeChart.js
deleted file mode 100644
index 9a71f14..0000000
--- a/contrib/src/main/html/siteops/DrawPageViewTimeChart.js
+++ /dev/null
@@ -1,173 +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.
- */
-/**
- * Functions for drawing page view vs time chart.
- */
-
-
-function PageViewTimeDataUrl()
-{    
-    var url = "PageViewTimeData.php?";
-    url += "from=";
-    url += Math.floor(pageViewLookback);
-    if (pageViewUrl) 
-    {
-       url += "&url=" + pageViewUrl;   
-    }
-    //url += "&url=mydomain.com/services.php?serviceid=6";
-    return url;  
-}
-
-function RenderPageViewTimeChart()
-{
-  // create/delete rows 
-  if (pageViewTable.getNumberOfRows() < pageDataPoints.length)
-  {    
-    var numRows = pageDataPoints.length - pageViewTable.getNumberOfRows();
-    pageViewTable.addRows(numRows);
-  } else {
-    for(var i=(pageViewTable.getNumberOfRows()-1); i >= pageDataPoints.length; i--)
-    {
-      pageViewTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/cost data points. 
-  for(var i=0; i < pageViewTable.getNumberOfRows(); i++)
-  {
-    //if(parseFloat(aggrDataPoints[i].cost) < 500) continue;
-    pageViewTable.setCell(i, 0, new Date(parseInt(pageDataPoints[i].timestamp)));
-    pageViewTable.setCell(i, 1, parseFloat(pageDataPoints[i].view));
-  }
-    
-  // get options
-  var page = document.getElementById('page').value;
-  var index = document.getElementById('index').value;
-  var title = "ALL Urls (PVS/Min)";
-  if (page == "home") title = "home.php (PVS/Min)";
-  if (page == "contact") title = "contactus.php (PVS/Min)";
-  if (page == "about") title = "about.php (PVS/Min)";
-  if (page == "support") title = "support.php (PVS/Min)";
-  if (page == "product") {
-    title = "product.php-" + index + " (PVS/Min)";
-  }
-  if (page == "services") {
-    title = "services.php-" + index + " (PVS/Min)";
-  }
-  if (page == "products") {
-    title = "products.php-" + index + " (PVS/Min)";
-  }
-
-  var options = { pointSize: 0, lineWidth : 1, legend : {position : 'top'} };
-  options.title = title;
-
-  // Draw line chart.
-  pageViewChart.draw(PageViewView, options); 
-}
-
-function DrawPageViewTimeChart()
-{
-  var url = PageViewTimeDataUrl();
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        pageViewData = connect.response;
-        var pts = JSON.parse(pageViewData);
-        for(var i=0; i <  pts.length; i++) 
-        {
-          pageDataPoints.push(pts[i]);
-          delete pts[i];
-        }
-        delete pts;
-        sortByKey(pageDataPoints, "timestamp");
-        RenderPageViewTimeChart();
-        delete pageViewData;
-        delete pageDataPoints;
-        pageDataPoints = new Array();
-      }
-    }
-    connect.open('GET',  url, true);
-    connect.send(null);
-  } catch(e) {
-  }
-  pageViewLookback = (new Date().getTime()/1000) - (3600 * pageViewInterval)-60;
-}
-
-
-function HandlePageViewTimeSubmit()
-{
-  // remove old time  
-  if(pageNowPlaying) clearInterval(pageNowPlaying); 
-
-  // get submit values 
-  var page = document.getElementById('page').value;
-  var index = document.getElementById('index').value;
-  if (page == "all") pageViewUrl ="";
-  if (page == "home") pageViewUrl = "mydomain.com/home.php";
-  if (page == "contact") pageViewUrl = "mydomain.com/contactus.php";
-  if (page == "about") pageViewUrl = "mydomain.com/about.php";
-  if (page == "support") pageViewUrl = "mydomain.com/support.php";
-  if (page == "product")
-  {
-    pageViewUrl = "mydomain.com/products.php";   
-    if (index && (index.length > 0)) pageViewUrl += "?productid=" + index;
-  }
-  if (page == "services") 
-  {
-    pageViewUrl = "mydomain.com/services.php";   
-    if (index && (index.length > 0)) pageViewUrl += "?serviceid=" + index;
-  }
-  if (page == "partners") 
-  {
-    pageViewUrl = "mydomain.com/partners.php";   
-    if (index && (index.length > 0)) pageViewUrl += "?partnerid=" + index;
-  }
-  pageViewLookback = document.getElementById('pageviewlookback').value;
-  if ( !pageViewLookback || (pageViewLookback == "")) {
-    pageViewLookback = (new Date().getTime()/1000) - 3600;
-  }  else {
-    pageViewLookback = (new Date().getTime()/1000) - 3600 * pageViewLookback;
-  }
-
-  // set from values  
-  document.getElementById('page').value = page;
-  document.getElementById('index').value = index;
-  var lookback = document.getElementById('pageviewlookback').value;
-  document.getElementById('pageviewlookback').value = lookback;
-  pageViewInterval = lookback;
-    
-  // draw chart
-  DrawPageViewTimeChart();
-  pageNowPlaying = setInterval(DrawPageViewTimeChart, 60 * 1000);
-}
-
-function handleUrlChange()
-{
-  var page = document.getElementById('page').value;
-  if ((page == "home")||(page == "contact")||(page == "about")||(page == "support") || (page =="all"))
-  {
-    document.getElementById('index').value = 0;
-    document.getElementById('index').disabled = "true";   
-  } else {
-    document.getElementById('index').value = 0;
-    document.getElementById('index').disabled = ""; 
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/PageViewTimeData.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/PageViewTimeData.php b/contrib/src/main/html/siteops/PageViewTimeData.php
deleted file mode 100644
index 7c42679..0000000
--- a/contrib/src/main/html/siteops/PageViewTimeData.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(1);
-$format = 'YmdHi';
-$incr = 60;
-
-// Get from date 
-$from = $_GET['from'];
-if (!$from || empty($from)) {
-  $from  = time()-3600;
-}
-
-// get url   
-$url = $_GET['url'];
-
-// result array
-$result = array();
-
-while ($from < time()) 
-{
-  $date = gmdate($format, $from);
-  if (!$url || empty($url))
-  {
-    // view total   
-    $total = 0;
-        
-    // home.php views
-    $key =  'm|' . $date . '|0:mydomain.com/home.php';
-    $arr =  $redis->hGetAll($key);
-    $total += $arr[1];
-            
-    // contactus.php views
-    $key =  'm|' . $date . '|0:mydomain.com/contactus.php';
-    $arr =  $redis->hGetAll($key);
-    $total += $arr[1];
-    
-    // contactus.php views
-    $key =  'm|' . $date . '|0:mydomain.com/about.php';
-    $arr =  $redis->hGetAll($key);
-    $total += $arr[1];
-    
-    // contactus.php views
-    $key =  'm|' . $date . '|0:mydomain.com/support.php';
-    $arr =  $redis->hGetAll($key);
-    $total += $arr[1];
-    
-    // products.php 
-    for ($i = 0; $i < 100; $i++)
-    {      
-        $key =  'm|' . $date . '|0:mydomain.com/products.php?productid='. $i;
-        $arr =  $redis->hGetAll($key);
-        $total += $arr[1];
-    }
-
-    // services.php 
-    for ($i = 0; $i < 100; $i++)
-    {      
-        $key =  'm|' . $date . '|0:mydomain.com/services.php?serviceid='. $i;
-        $arr =  $redis->hGetAll($key);
-        $total += $arr[1];
-    }
-
-    // partners.php 
-    for ($i = 0; $i < 100; $i++)
-    {      
-        $key =  'm|' . $date . '|0:mydomain.com/partners.php?partnerid='. $i;
-        $arr =  $redis->hGetAll($key);
-        $total += $arr[1];
-    }
-
-    // store result in array   
-    $result[] = array("timestamp" => $from * 1000, "url" => "all", "view" => $total);
-
-  } else {
-    
-    $key =  'm|' . $date . '|0:' . $url;
-    $arr = $redis->hGetAll($key);
-    if ($arr)
-    {
-      $result[] = array("timestamp" => $from * 1000, "url" => $url, "view" => $arr[1]);
-    }
-  }
-  $from += $incr;
-}
-
-array_pop($result);
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/Server404.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/Server404.php b/contrib/src/main/html/siteops/Server404.php
deleted file mode 100644
index 314d5e9..0000000
--- a/contrib/src/main/html/siteops/Server404.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(8);
-
-// result array
-$result = array();
-
-for($i = 0; $i < 10; $i++)
-{
-  $value = $redis->get($i);
-  //var_dump($value);
-  $result[] = $value;
-}
-
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/ServerLoad.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/ServerLoad.php b/contrib/src/main/html/siteops/ServerLoad.php
deleted file mode 100644
index d2f4dca..0000000
--- a/contrib/src/main/html/siteops/ServerLoad.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(4);
-$format = 'YmdHi';
-$incr = 60;
-
-// Get from date 
-$from = $_GET['from'];
-if (!$from || empty($from)) {
-  $from  = time()-3600;
-}
-
-// get server   
-$server = $_GET['server'];
-
-// result array
-$result = array();
-
-while ($from < time()) 
-{
-  $date = gmdate($format, $from);
-  if (!$server || empty($server) || ($server == "all"))
-  {
-    // total server load  
-    $total = 0;
-          
-    // server loads 
-    $key =  'm|' . $date . '|0:server0.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server1.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server2.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server3.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server4.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server5.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server6.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server7.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server8.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server9.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-
-    // add to result 
-
-    // add to result 
-    $result[] = array("timestamp" => $from * 1000, "server" => "all", "view" => $total);
-
-  } else {
-    
-    $key =  'm|' . $date . '|0:' . $server;
-    $arr = $redis->hGetAll($key);
-    if ($arr)
-    {
-      $result[] = array("timestamp" => $from * 1000, "server" => $server, "view" => $arr[1]);
-    }
-  }
-  $from += $incr;
-}
-
-array_pop($result);
-print json_encode($result);
-
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/TopIpClientChart.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopIpClientChart.js b/contrib/src/main/html/siteops/TopIpClientChart.js
deleted file mode 100644
index ee1a0c8..0000000
--- a/contrib/src/main/html/siteops/TopIpClientChart.js
+++ /dev/null
@@ -1,55 +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.
- */
-/**
- * Functions fro charting top IpClient table.
- */
-
-function DrawTopIpClientTableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        topIpClientTable = new google.visualization.DataTable();
-        topIpClientTable.addColumn('string', 'Client IP');
-        topIpClientTable.addColumn('number', 'requests/sec');
-        topIpClientTable.addRows(10);
-        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
-        {
-          var row = pts[i].split("##");
-          topIpClientTable.setCell(i, 0, row[0]);
-          topIpClientTable.setCell(i, 1, parseInt(row[1]));
-          delete row
-          delete pts[i];
-        }
-        topIpClientTableChart.draw(topIpClientTable, {showRowNumber: true});
-        delete topIpClientTable;
-        delete data;
-        delete pts;
-        //document.getElementById('top_IpClient_div').innerHTML = data;
-      }
-    }
-    connect.open('GET',  "TopIpClientData.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/TopIpClientData.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopIpClientData.php b/contrib/src/main/html/siteops/TopIpClientData.php
deleted file mode 100644
index ddb644d..0000000
--- a/contrib/src/main/html/siteops/TopIpClientData.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(3);
-
-// result array
-$result = array();
-
-for($i = 0; $i < 10; $i++)
-{
-  $value = $redis->get($i);
-  //var_dump($value);
-  $result[] = $value;
-}
-
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/TopIpData.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopIpData.js b/contrib/src/main/html/siteops/TopIpData.js
deleted file mode 100644
index e6f7f67..0000000
--- a/contrib/src/main/html/siteops/TopIpData.js
+++ /dev/null
@@ -1,54 +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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawRiskyClientTableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        var riskyCleintTable = new google.visualization.DataTable();
-        riskyCleintTable.addColumn('string', 'Client Ip');
-        riskyCleintTable.addColumn('number', 'bytes/sec');
-        riskyCleintTable.addRows(10);
-        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
-        {
-          var row = pts[i].split("##");
-          riskyCleintTable.setCell(i, 0, row[0]);
-          riskyCleintTable.setCell(i, 1, parseInt(row[1]));
-        }
-        //document.getElementById('risky_client_div').innerHTML = data;
-        //document.getElementById('risky_client_div').innerHTML = riskyCleintTable.getNumberOfRows();
-        riskyClientTableChart.draw(riskyCleintTable, {showRowNumber: true});
-        delete riskyCleintTable;
-        delete data;
-        delete pts;
-      }
-    }
-    connect.open('GET',  "TopIpData.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/TopIpData.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopIpData.php b/contrib/src/main/html/siteops/TopIpData.php
deleted file mode 100644
index ce07ad8..0000000
--- a/contrib/src/main/html/siteops/TopIpData.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(6);
-
-// result array
-$result = array();
-
-for($i = 0; $i < 10; $i++)
-{
-  $value = $redis->get($i);
-  $result[] = $value;
-}
-
-print json_encode($result);
-
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/TopServer.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopServer.js b/contrib/src/main/html/siteops/TopServer.js
deleted file mode 100644
index b94a876..0000000
--- a/contrib/src/main/html/siteops/TopServer.js
+++ /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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawTopServerTableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        topServerTable = new google.visualization.DataTable();
-        topServerTable.addColumn('string', 'SERVER');
-        topServerTable.addColumn('number', 'requests/sec');
-        topServerTable.addRows(10);
-        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
-        {
-          var row = pts[i].split("##");
-          topServerTable.setCell(i, 0, row[0]);
-          topServerTable.setCell(i, 1, parseInt(row[1]));
-          delete pts[i];
-        }
-        topServerTableChart.draw(topServerTable, {showRowNumber: true});
-        delete topServerTable;
-        delete data;
-        delete pts;
-      }
-    }
-    connect.open('GET',  "TopServer.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/TopServer.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopServer.php b/contrib/src/main/html/siteops/TopServer.php
deleted file mode 100644
index 91bfab5..0000000
--- a/contrib/src/main/html/siteops/TopServer.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(10);
-
-// result array
-$result = array();
-
-for($i = 0; $i < 10; $i++)
-{
-  $value = $redis->get($i);
-  //var_dump($value);
-  $result[] = $value;
-}
-
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/TopUrlChart.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopUrlChart.js b/contrib/src/main/html/siteops/TopUrlChart.js
deleted file mode 100644
index 646bb69..0000000
--- a/contrib/src/main/html/siteops/TopUrlChart.js
+++ /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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawTopUrlTableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        topUrlTable = new google.visualization.DataTable();
-        topUrlTable.addColumn('string', 'URL');
-        topUrlTable.addColumn('number', 'requests/sec');
-        topUrlTable.addRows(10);
-        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
-        {
-          var row = pts[i].split("##");
-          topUrlTable.setCell(i, 0, row[0]);
-          topUrlTable.setCell(i, 1, parseInt(row[1]));
-          delete pts[i];
-        }
-        topUrlTableChart.draw(topUrlTable, {showRowNumber: true});
-        delete topUrlTable;
-        delete data;
-        delete pts;
-      }
-    }
-    connect.open('GET',  "TopUrlData.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/TopUrlData.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopUrlData.php b/contrib/src/main/html/siteops/TopUrlData.php
deleted file mode 100644
index 52c3ddf..0000000
--- a/contrib/src/main/html/siteops/TopUrlData.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(2);
-
-// result array
-$result = array();
-
-for($i = 0; $i < 20; $i++)
-{
-  $value = $redis->get($i);
-  //var_dump($value);
-  $result[] = $value;
-}
-
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/TotalViews.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TotalViews.js b/contrib/src/main/html/siteops/TotalViews.js
deleted file mode 100644
index 58ecf7e..0000000
--- a/contrib/src/main/html/siteops/TotalViews.js
+++ /dev/null
@@ -1,38 +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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawTotalViewsTableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        document.getElementById('totalviews').innerHTML = data;
-      }
-    }
-    connect.open('GET',  "TotalViews.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/TotalViews.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TotalViews.php b/contrib/src/main/html/siteops/TotalViews.php
deleted file mode 100644
index 178cb9b..0000000
--- a/contrib/src/main/html/siteops/TotalViews.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(11);
-
-$value = $redis->get(1);
-print $value;
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/Url404.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/Url404.js b/contrib/src/main/html/siteops/Url404.js
deleted file mode 100644
index faa1734..0000000
--- a/contrib/src/main/html/siteops/Url404.js
+++ /dev/null
@@ -1,64 +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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawUrl404TableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        var url404Table = new google.visualization.DataTable();
-        url404Table.addColumn('string', 'URL');
-        url404Table.addColumn('number', '404/sec');
-        url404Table.addRows(10);
-        for(var i=0; ((i <  pts.length)&&(i < 10)); i++) 
-        {
-          var row = pts[i].split("##");
-          if ((row[1] == null)||(row[1] == ""))
-          {
-            url404Table.setCell(i, 0,  "-");
-          } else {
-            url404Table.setCell(i, 0, row[0]);
-          }
-          if ((row[1] == null)||(row[1] == ""))
-          {
-            url404Table.setCell(i, 1, 0);   
-          } else {
-            url404Table.setCell(i, 1, parseInt(row[1]));
-          }
-        }
-        //document.getElementById('risky_client_div').innerHTML = data;
-        //document.getElementById('risky_client_div').innerHTML = url404Table.getNumberOfRows();
-        url404TableChart.draw(url404Table, {showRowNumber: true});
-        delete url404Table;
-        delete data;
-        delete pts;
-      }
-    }
-    connect.open('GET',  "Url404.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/Url404.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/Url404.php b/contrib/src/main/html/siteops/Url404.php
deleted file mode 100644
index 82067f8..0000000
--- a/contrib/src/main/html/siteops/Url404.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(7);
-
-// result array
-$result = array();
-
-for($i = 0; $i < 10; $i++)
-{
-  $value = $redis->get($i);
-  //var_dump($value);
-  $result[] = $value;
-}
-
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/global.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/global.js b/contrib/src/main/html/siteops/global.js
deleted file mode 100644
index 7555f39..0000000
--- a/contrib/src/main/html/siteops/global.js
+++ /dev/null
@@ -1,133 +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.
- */
-/**
- * Declaration and initialization for global variables.
- */
-
-// url parameters   
-var params;
-
-// Page View/Time
-var pageViewData; 
-var pageDataPoints; 
-var pageViewTable;
-var pageViewChart; 
-var PageViewView;
-var pageViewRefresh;
-var pageViewLookback;
-var pageViewUrl;
-var pageViewInterval;
-var pageNowPlaying;
-
-// top url(s)
-var topUrlTable;
-var topUrlTableChart;
-
-// server load  
-var serverLoadRefresh;
-var serverLoadLookback;
-var serverName;
-var serverLoadDataPoints;
-var serverLoadTable;
-var serverLoadChart;
-var serverLoadView;
-var serverLoadInterval;
-
-// Top server(s)
-var topServerTable;
-var topServerTableChart;
-
-var topIpClientTable;
-var topIpClientTableChart;
-var riskyClientTableChart;
-var url404TableChart;
-var server404TableChart;
-var serverNowPlaying;
-
-
-// Get split query string
-function QueryString() {
-  var query_string = {};
-  var query = window.location.search.substring(1);
-  return query;
-}
-function SplitQuery(query)
-{  
-	var params = {};
-	var vars = query.split("&");
-	for (var i=0;i<vars.length;i++)
-	{
-		var pair = vars[i].split("=");
-		if(pair.length == 2) 
-		{
-			params[pair[0]] = pair[1];
-		}
-	}
-	return params;
-}  
-
-// Initialize global variable(s)
-function InitializeGlobal()
-{
-  // Initialize params  
-  params = SplitQuery(QueryString()); 
-
-  // intialize page view variables
-  pageDataPoints = new Array();
-  pageViewTable = new google.visualization.DataTable();
-  pageViewTable.addColumn('datetime', 'Time');
-  pageViewTable.addColumn('number', 'Page View');
-  pageViewChart = new google.visualization.LineChart(document.getElementById('pageview_chart_div'));
-  PageViewView = new google.visualization.DataView(pageViewTable);
-  pageViewRefresh = 60;
-  pageViewLookback = (new Date().getTime()/1000) - 3600;
-  document.getElementById('pageviewlookback').value = "1";
-  pageViewInterval = 1;
-
-  serverLoadRefresh = 60;
-  serverLoadLookback = (new Date().getTime()/1000) - 3600;
-  document.getElementById('serverloadlookback').value = "1";
-  serverLoadDataPoints = new Array();
-  serverLoadTable = new google.visualization.DataTable();
-  serverLoadTable.addColumn('datetime', 'Time');
-  serverLoadTable.addColumn('number', 'Server Load');
-  serverLoadChart = new google.visualization.LineChart(document.getElementById('server_load_div'));
-  serverLoadView = new google.visualization.DataView(serverLoadTable);
-  serverLoadInterval = 1;
-
-  topUrlTableChart = new google.visualization.Table(document.getElementById('top_url_div'));
-  topServerTableChart = new google.visualization.Table(document.getElementById('top_server_div'));
-
-  topIpClientTableChart = new google.visualization.Table(document.getElementById('top_IpClient_div'));
-  riskyClientTableChart = new google.visualization.Table(document.getElementById('top_ipdata_div'));
-
-  url404TableChart = new google.visualization.Table(document.getElementById('url_404_div'));
-  server404TableChart = new google.visualization.Table(document.getElementById('server_404_div'));
-}
-
-/**
- * Sort json array  
- */
-function sortByKey(array, key) {
-    return array.sort(function(a, b) {
-        var x = a[key]; var y = b[key];
-        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
-    });
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/index.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/index.php b/contrib/src/main/html/siteops/index.php
deleted file mode 100644
index d72bc9d..0000000
--- a/contrib/src/main/html/siteops/index.php
+++ /dev/null
@@ -1,177 +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.
- */
-<!--
- --  Copyright (c) 2012-2013 DataTorrent, Inc.
- --  All Rights Reserved.
- -->
-
-<!-- ## Siteops is deprecated, please use logstream instead ## -->
-    
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Data Torrent : Site Operations Demo </title>
-
-<link rel="stylesheet" type="text/css" href="malhar.css">
-
-<!-- Google charts include -->
-<script type="text/javascript" src="https://www.google.com/jsapi"></script>
-<script type="text/javascript">
-google.load('visualization', '1', {'packages':['corechart']});
-google.load('visualization', '1', {'packages':['table']});
-
-</script>
-
-<!-- DataTorrent charting utils -->
-<script type="text/javascript" src="global.js"></script>
-<script type="text/javascript" src="DrawPageViewTimeChart.js"></script>
-<script type="text/javascript" src="TopUrlChart.js"></script>
-<script type="text/javascript" src="TopServer.js"></script>
-<script type="text/javascript" src="TopIpClientChart.js"></script>
-<script type="text/javascript" src="server.js"></script>
-<script type="text/javascript" src="TopIpData.js"></script>
-<script type="text/javascript" src="TotalViews.js"></script>
-<script type="text/javascript" src="Url404.js"></script>
-<script type="text/javascript" src="ClientData.js"></script>
-<script type="text/javascript" src="serverfail.js"></script>
-<script type="text/javascript" src="TotalViews.js"></script>
-
-<!-- window onload -->
-<script type="text/javascript">
-
-window.onload = function() {
-  
-  // Initialize variables   
-  InitializeGlobal();
-   
-  // Draw top charts 
-  DrawClientDataTableChart();
-  DrawTotalViewsTableChart();
-  DrawTopUrlTableChart();
-  DrawTopServerTableChart();
-  DrawRiskyClientTableChart();
-  DrawTopIpClientTableChart(); 
-  DrawUrl404TableChart();
-  DrawServer404TableChart();
-  setInterval(DrawClientDataTableChart, 1000)
-  setInterval(DrawTotalViewsTableChart, 1000);
-  setInterval(DrawTopUrlTableChart, 1000);
-  setInterval(DrawTopServerTableChart, 1000);
-  setInterval(DrawRiskyClientTableChart, 1000);
-  setInterval(DrawTopIpClientTableChart, 1000);
-  setInterval(DrawUrl404TableChart, 1000);
-  setInterval(DrawServer404TableChart, 1000);
-};
-
-</script>
-
-</head>
-<body>
-
-    <div id="header">
-        <ul class="dashboard-modes">
-            <li>
-                <a href="#" class="active">Site Operations Demo</a>
-            </li>
-        </ul>
-
-        <div id="logo"><img src="main_banner.png" style="margin-left:10px;"/></div>
-    </div>
-	
-	<div id="main">
-    <div id="pagecontent">
-        <div class="dashboardMgr">
-            <div class="inner" style="">
-                <h2 class="title">Page views vs Time Chart</h2> 
-                <form onsubmit="return false;">
-                        Select Page:
-                        <select name="page" id="page" style="width:200px;" onchange="handleUrlChange();">
-                           <option value="all">ALL</option>
-                           <option value="home">home.php</option>
-                           <option value="contact">contactus.php</option>
-                           <option value="about">about.php</option>
-                           <option value="support">support.php</option>
-                           <option value="product">products.php</option>
-                           <option value="services">services.php</option>
-                           <option value="partners">partners.php</option>
-            		</select><br>
-                        Product/Services/Partners Index : 
-                        <select name="index" id="index" style="width:200px;" disabled="true" >
-                          <option value=\"$i\"></option>
-                          <?php
-                            for ($i = 0; $i < 100; $i++) {
-                              print "<option value=\"$i\">$i</option>\n";
-                            }
-        	           ?>
-                        </select><br>
-		        Look Back(Hours):
-                        <input type="text" name="lookback" id="pageviewlookback" class="input-small"/>
-                </form><br>
-                <a href="javascript:void(0)" onclick="HandlePageViewTimeSubmit();">View Chart</a><br><br>
-
-                <h2 class="title">Server Load vs Time Chart</h2> 
-                <form onsubmit="return false;">
-                        Server Name : 
-                        <select name="servername" id="servername" style="width:200px;">
-                          <option value="all">All</option>
-                          <?php
-                            for ($i = 0; $i < 10; $i++) {
-                              print "<option value=\"server{$i}.mydomain.com:80\">Server$i.mydomain.com</option>\n";
-                            }
-        	           ?>
-                        </select><br>
-		        Server Load Look Back(Hours):
-                        <input type="text" name="serverloadlookback" id="serverloadlookback" class="input-small"/>
-                </form><br>
-                <a href="javascript:void(0)" onclick="HandleServerLoadTimeSubmit();">View Server Load Chart</a><br><br>
-                
-                <b>Total Bytes/Sec :</b> <b id="totaldata"> </b> <br 
-                <b>Total Views/Sec :</b> <b id="totalviews"> </b> 
-            </div>
-        </div>
-        <div class="dashboardMain">
-           <div class="dbib">     
-                <div id="pageview_chart_div"></div>
-		<div id="server_load_div"></div>
-           </div>
-           <div class="dbib">
-                <table><tbody><tr>
-      
-		         <td>       <h1>Top 10 Urls</h1>
-		                    <div  id="top_url_div" ></div><br><br>
-                                    <h1>Top 10 Client IPs</h1>
-                                    <div id="top_IpClient_div"></div> <br><br>
-                                    <h1>Top 10 Urls with 404 response</h1>
-                                    <div id="url_404_div"></div>
-		          </td>
-		          <td>
-                                   <h1>Server Load</h1>
-		                   <div id="top_server_div"></div> <br><br>
-                                   <h1>Top 10 client IPs download</h1>
-                                   <div id="top_ipdata_div"></div> <br><br>
-                                   <h1>404 per Server</h1>
-                                   <div id="server_404_div"></div-->
-		           </td>
-                          
-               </tr></tbody></table>
-           </div>
-        </div>		
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/info.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/info.php b/contrib/src/main/html/siteops/info.php
deleted file mode 100644
index adc6a88..0000000
--- a/contrib/src/main/html/siteops/info.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/*
- * 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.
- */
-phpinfo();
-
-?>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/main_banner.png
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/main_banner.png b/contrib/src/main/html/siteops/main_banner.png
deleted file mode 100644
index f3f4810..0000000
Binary files a/contrib/src/main/html/siteops/main_banner.png and /dev/null differ


[46/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/styles/bootstrap.css
----------------------------------------------------------------------
diff --git a/web/demos/app/styles/bootstrap.css b/web/demos/app/styles/bootstrap.css
deleted file mode 100644
index 94a937a..0000000
--- a/web/demos/app/styles/bootstrap.css
+++ /dev/null
@@ -1,6175 +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.
- */
-.clearfix {
-  *zoom: 1;
-}
-
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.clearfix:after {
-  clear: both;
-}
-
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 30px;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-
-audio:not([controls]) {
-  display: none;
-}
-
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-      -ms-text-size-adjust: 100%;
-}
-
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-a:hover,
-a:active {
-  outline: 0;
-}
-
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-
-sup {
-  top: -0.5em;
-}
-
-sub {
-  bottom: -0.25em;
-}
-
-img {
-  width: auto\9;
-  height: auto;
-  max-width: 100%;
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-
-#map_canvas img,
-.google-maps img {
-  max-width: none;
-}
-
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  cursor: pointer;
-  -webkit-appearance: button;
-}
-
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
-  cursor: pointer;
-}
-
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-
-@media print {
-  * {
-    color: #000 !important;
-    text-shadow: none !important;
-    background: transparent !important;
-    box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  .ir a:after,
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  @page  {
-    margin: 0.5cm;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-}
-
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 14px;
-  line-height: 20px;
-  color: #333333;
-  background-color: #ffffff;
-}
-
-a {
-  color: #0088cc;
-  text-decoration: none;
-}
-
-a:hover,
-a:focus {
-  color: #005580;
-  text-decoration: underline;
-}
-
-.img-rounded {
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.img-polaroid {
-  padding: 4px;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-
-.img-circle {
-  -webkit-border-radius: 500px;
-     -moz-border-radius: 500px;
-          border-radius: 500px;
-}
-
-.row {
-  margin-left: -20px;
-  *zoom: 1;
-}
-
-.row:before,
-.row:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.row:after {
-  clear: both;
-}
-
-[class*="span"] {
-  float: left;
-  min-height: 1px;
-  margin-left: 20px;
-}
-
-.container,
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-
-.span12 {
-  width: 940px;
-}
-
-.span11 {
-  width: 860px;
-}
-
-.span10 {
-  width: 780px;
-}
-
-.span9 {
-  width: 700px;
-}
-
-.span8 {
-  width: 620px;
-}
-
-.span7 {
-  width: 540px;
-}
-
-.span6 {
-  width: 460px;
-}
-
-.span5 {
-  width: 380px;
-}
-
-.span4 {
-  width: 300px;
-}
-
-.span3 {
-  width: 220px;
-}
-
-.span2 {
-  width: 140px;
-}
-
-.span1 {
-  width: 60px;
-}
-
-.offset12 {
-  margin-left: 980px;
-}
-
-.offset11 {
-  margin-left: 900px;
-}
-
-.offset10 {
-  margin-left: 820px;
-}
-
-.offset9 {
-  margin-left: 740px;
-}
-
-.offset8 {
-  margin-left: 660px;
-}
-
-.offset7 {
-  margin-left: 580px;
-}
-
-.offset6 {
-  margin-left: 500px;
-}
-
-.offset5 {
-  margin-left: 420px;
-}
-
-.offset4 {
-  margin-left: 340px;
-}
-
-.offset3 {
-  margin-left: 260px;
-}
-
-.offset2 {
-  margin-left: 180px;
-}
-
-.offset1 {
-  margin-left: 100px;
-}
-
-.row-fluid {
-  width: 100%;
-  *zoom: 1;
-}
-
-.row-fluid:before,
-.row-fluid:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.row-fluid:after {
-  clear: both;
-}
-
-.row-fluid [class*="span"] {
-  display: block;
-  float: left;
-  width: 100%;
-  min-height: 30px;
-  margin-left: 2.127659574468085%;
-  *margin-left: 2.074468085106383%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.row-fluid [class*="span"]:first-child {
-  margin-left: 0;
-}
-
-.row-fluid .controls-row [class*="span"] + [class*="span"] {
-  margin-left: 2.127659574468085%;
-}
-
-.row-fluid .span12 {
-  width: 100%;
-  *width: 99.94680851063829%;
-}
-
-.row-fluid .span11 {
-  width: 91.48936170212765%;
-  *width: 91.43617021276594%;
-}
-
-.row-fluid .span10 {
-  width: 82.97872340425532%;
-  *width: 82.92553191489361%;
-}
-
-.row-fluid .span9 {
-  width: 74.46808510638297%;
-  *width: 74.41489361702126%;
-}
-
-.row-fluid .span8 {
-  width: 65.95744680851064%;
-  *width: 65.90425531914893%;
-}
-
-.row-fluid .span7 {
-  width: 57.44680851063829%;
-  *width: 57.39361702127659%;
-}
-
-.row-fluid .span6 {
-  width: 48.93617021276595%;
-  *width: 48.88297872340425%;
-}
-
-.row-fluid .span5 {
-  width: 40.42553191489362%;
-  *width: 40.37234042553192%;
-}
-
-.row-fluid .span4 {
-  width: 31.914893617021278%;
-  *width: 31.861702127659576%;
-}
-
-.row-fluid .span3 {
-  width: 23.404255319148934%;
-  *width: 23.351063829787233%;
-}
-
-.row-fluid .span2 {
-  width: 14.893617021276595%;
-  *width: 14.840425531914894%;
-}
-
-.row-fluid .span1 {
-  width: 6.382978723404255%;
-  *width: 6.329787234042553%;
-}
-
-.row-fluid .offset12 {
-  margin-left: 104.25531914893617%;
-  *margin-left: 104.14893617021275%;
-}
-
-.row-fluid .offset12:first-child {
-  margin-left: 102.12765957446808%;
-  *margin-left: 102.02127659574467%;
-}
-
-.row-fluid .offset11 {
-  margin-left: 95.74468085106382%;
-  *margin-left: 95.6382978723404%;
-}
-
-.row-fluid .offset11:first-child {
-  margin-left: 93.61702127659574%;
-  *margin-left: 93.51063829787232%;
-}
-
-.row-fluid .offset10 {
-  margin-left: 87.23404255319149%;
-  *margin-left: 87.12765957446807%;
-}
-
-.row-fluid .offset10:first-child {
-  margin-left: 85.1063829787234%;
-  *margin-left: 84.99999999999999%;
-}
-
-.row-fluid .offset9 {
-  margin-left: 78.72340425531914%;
-  *margin-left: 78.61702127659572%;
-}
-
-.row-fluid .offset9:first-child {
-  margin-left: 76.59574468085106%;
-  *margin-left: 76.48936170212764%;
-}
-
-.row-fluid .offset8 {
-  margin-left: 70.2127659574468%;
-  *margin-left: 70.10638297872339%;
-}
-
-.row-fluid .offset8:first-child {
-  margin-left: 68.08510638297872%;
-  *margin-left: 67.9787234042553%;
-}
-
-.row-fluid .offset7 {
-  margin-left: 61.70212765957446%;
-  *margin-left: 61.59574468085106%;
-}
-
-.row-fluid .offset7:first-child {
-  margin-left: 59.574468085106375%;
-  *margin-left: 59.46808510638297%;
-}
-
-.row-fluid .offset6 {
-  margin-left: 53.191489361702125%;
-  *margin-left: 53.085106382978715%;
-}
-
-.row-fluid .offset6:first-child {
-  margin-left: 51.063829787234035%;
-  *margin-left: 50.95744680851063%;
-}
-
-.row-fluid .offset5 {
-  margin-left: 44.68085106382979%;
-  *margin-left: 44.57446808510638%;
-}
-
-.row-fluid .offset5:first-child {
-  margin-left: 42.5531914893617%;
-  *margin-left: 42.4468085106383%;
-}
-
-.row-fluid .offset4 {
-  margin-left: 36.170212765957444%;
-  *margin-left: 36.06382978723405%;
-}
-
-.row-fluid .offset4:first-child {
-  margin-left: 34.04255319148936%;
-  *margin-left: 33.93617021276596%;
-}
-
-.row-fluid .offset3 {
-  margin-left: 27.659574468085104%;
-  *margin-left: 27.5531914893617%;
-}
-
-.row-fluid .offset3:first-child {
-  margin-left: 25.53191489361702%;
-  *margin-left: 25.425531914893618%;
-}
-
-.row-fluid .offset2 {
-  margin-left: 19.148936170212764%;
-  *margin-left: 19.04255319148936%;
-}
-
-.row-fluid .offset2:first-child {
-  margin-left: 17.02127659574468%;
-  *margin-left: 16.914893617021278%;
-}
-
-.row-fluid .offset1 {
-  margin-left: 10.638297872340425%;
-  *margin-left: 10.53191489361702%;
-}
-
-.row-fluid .offset1:first-child {
-  margin-left: 8.51063829787234%;
-  *margin-left: 8.404255319148938%;
-}
-
-[class*="span"].hide,
-.row-fluid [class*="span"].hide {
-  display: none;
-}
-
-[class*="span"].pull-right,
-.row-fluid [class*="span"].pull-right {
-  float: right;
-}
-
-.container {
-  margin-right: auto;
-  margin-left: auto;
-  *zoom: 1;
-}
-
-.container:before,
-.container:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.container:after {
-  clear: both;
-}
-
-.container-fluid {
-  padding-right: 20px;
-  padding-left: 20px;
-  *zoom: 1;
-}
-
-.container-fluid:before,
-.container-fluid:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.container-fluid:after {
-  clear: both;
-}
-
-p {
-  margin: 0 0 10px;
-}
-
-.lead {
-  margin-bottom: 20px;
-  font-size: 21px;
-  font-weight: 200;
-  line-height: 30px;
-}
-
-small {
-  font-size: 85%;
-}
-
-strong {
-  font-weight: bold;
-}
-
-em {
-  font-style: italic;
-}
-
-cite {
-  font-style: normal;
-}
-
-.muted {
-  color: #999999;
-}
-
-a.muted:hover,
-a.muted:focus {
-  color: #808080;
-}
-
-.text-warning {
-  color: #c09853;
-}
-
-a.text-warning:hover,
-a.text-warning:focus {
-  color: #a47e3c;
-}
-
-.text-error {
-  color: #b94a48;
-}
-
-a.text-error:hover,
-a.text-error:focus {
-  color: #953b39;
-}
-
-.text-info {
-  color: #3a87ad;
-}
-
-a.text-info:hover,
-a.text-info:focus {
-  color: #2d6987;
-}
-
-.text-success {
-  color: #468847;
-}
-
-a.text-success:hover,
-a.text-success:focus {
-  color: #356635;
-}
-
-.text-left {
-  text-align: left;
-}
-
-.text-right {
-  text-align: right;
-}
-
-.text-center {
-  text-align: center;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 10px 0;
-  font-family: inherit;
-  font-weight: bold;
-  line-height: 20px;
-  color: inherit;
-  text-rendering: optimizelegibility;
-}
-
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  line-height: 1;
-  color: #999999;
-}
-
-h1,
-h2,
-h3 {
-  line-height: 40px;
-}
-
-h1 {
-  font-size: 38.5px;
-}
-
-h2 {
-  font-size: 31.5px;
-}
-
-h3 {
-  font-size: 24.5px;
-}
-
-h4 {
-  font-size: 17.5px;
-}
-
-h5 {
-  font-size: 14px;
-}
-
-h6 {
-  font-size: 11.9px;
-}
-
-h1 small {
-  font-size: 24.5px;
-}
-
-h2 small {
-  font-size: 17.5px;
-}
-
-h3 small {
-  font-size: 14px;
-}
-
-h4 small {
-  font-size: 14px;
-}
-
-.page-header {
-  padding-bottom: 9px;
-  margin: 20px 0 30px;
-  border-bottom: 1px solid #eeeeee;
-}
-
-ul,
-ol {
-  padding: 0;
-  margin: 0 0 10px 25px;
-}
-
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-
-li {
-  line-height: 20px;
-}
-
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-
-ul.inline,
-ol.inline {
-  margin-left: 0;
-  list-style: none;
-}
-
-ul.inline > li,
-ol.inline > li {
-  display: inline-block;
-  *display: inline;
-  padding-right: 5px;
-  padding-left: 5px;
-  *zoom: 1;
-}
-
-dl {
-  margin-bottom: 20px;
-}
-
-dt,
-dd {
-  line-height: 20px;
-}
-
-dt {
-  font-weight: bold;
-}
-
-dd {
-  margin-left: 10px;
-}
-
-.dl-horizontal {
-  *zoom: 1;
-}
-
-.dl-horizontal:before,
-.dl-horizontal:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.dl-horizontal:after {
-  clear: both;
-}
-
-.dl-horizontal dt {
-  float: left;
-  width: 160px;
-  overflow: hidden;
-  clear: left;
-  text-align: right;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.dl-horizontal dd {
-  margin-left: 180px;
-}
-
-hr {
-  margin: 20px 0;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-  border-bottom: 1px solid #ffffff;
-}
-
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #999999;
-}
-
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 20px;
-  border-left: 5px solid #eeeeee;
-}
-
-blockquote p {
-  margin-bottom: 0;
-  font-size: 17.5px;
-  font-weight: 300;
-  line-height: 1.25;
-}
-
-blockquote small {
-  display: block;
-  line-height: 20px;
-  color: #999999;
-}
-
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-
-blockquote.pull-right {
-  float: right;
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-
-blockquote.pull-right small:before {
-  content: '';
-}
-
-blockquote.pull-right small:after {
-  content: '\00A0 \2014';
-}
-
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-
-address {
-  display: block;
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 20px;
-}
-
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-  font-size: 12px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-code {
-  padding: 2px 4px;
-  color: #d14;
-  white-space: nowrap;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-}
-
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 13px;
-  line-height: 20px;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-pre.prettyprint {
-  margin-bottom: 20px;
-}
-
-pre code {
-  padding: 0;
-  color: inherit;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border: 0;
-}
-
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-
-form {
-  margin: 0 0 20px;
-}
-
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 21px;
-  line-height: 40px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-
-legend small {
-  font-size: 15px;
-  color: #999999;
-}
-
-label,
-input,
-button,
-select,
-textarea {
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 20px;
-}
-
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-
-label {
-  display: block;
-  margin-bottom: 5px;
-}
-
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  display: inline-block;
-  height: 20px;
-  padding: 4px 6px;
-  margin-bottom: 10px;
-  font-size: 14px;
-  line-height: 20px;
-  color: #555555;
-  vertical-align: middle;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-input,
-textarea,
-.uneditable-input {
-  width: 206px;
-}
-
-textarea {
-  height: auto;
-}
-
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
-     -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
-       -o-transition: border linear 0.2s, box-shadow linear 0.2s;
-          transition: border linear 0.2s, box-shadow linear 0.2s;
-}
-
-textarea:focus,
-input[type="text"]:focus,
-input[type="password"]:focus,
-input[type="datetime"]:focus,
-input[type="datetime-local"]:focus,
-input[type="date"]:focus,
-input[type="month"]:focus,
-input[type="time"]:focus,
-input[type="week"]:focus,
-input[type="number"]:focus,
-input[type="email"]:focus,
-input[type="url"]:focus,
-input[type="search"]:focus,
-input[type="tel"]:focus,
-input[type="color"]:focus,
-.uneditable-input:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-9 */
-
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-}
-
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9;
-  *margin-top: 0;
-  line-height: normal;
-}
-
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
-  width: auto;
-}
-
-select,
-input[type="file"] {
-  height: 30px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 30px;
-}
-
-select {
-  width: 220px;
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-}
-
-select[multiple],
-select[size] {
-  height: auto;
-}
-
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-.uneditable-input,
-.uneditable-textarea {
-  color: #999999;
-  cursor: not-allowed;
-  background-color: #fcfcfc;
-  border-color: #cccccc;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-}
-
-.uneditable-input {
-  overflow: hidden;
-  white-space: nowrap;
-}
-
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-
-input:-moz-placeholder,
-textarea:-moz-placeholder {
-  color: #999999;
-}
-
-input:-ms-input-placeholder,
-textarea:-ms-input-placeholder {
-  color: #999999;
-}
-
-input::-webkit-input-placeholder,
-textarea::-webkit-input-placeholder {
-  color: #999999;
-}
-
-.radio,
-.checkbox {
-  min-height: 20px;
-  padding-left: 20px;
-}
-
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-
-.input-mini {
-  width: 60px;
-}
-
-.input-small {
-  width: 90px;
-}
-
-.input-medium {
-  width: 150px;
-}
-
-.input-large {
-  width: 210px;
-}
-
-.input-xlarge {
-  width: 270px;
-}
-
-.input-xxlarge {
-  width: 530px;
-}
-
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
-  display: inline-block;
-}
-
-input,
-textarea,
-.uneditable-input {
-  margin-left: 0;
-}
-
-.controls-row [class*="span"] + [class*="span"] {
-  margin-left: 20px;
-}
-
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 926px;
-}
-
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 846px;
-}
-
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 766px;
-}
-
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 686px;
-}
-
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 606px;
-}
-
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 526px;
-}
-
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 446px;
-}
-
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 366px;
-}
-
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 286px;
-}
-
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 206px;
-}
-
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 126px;
-}
-
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 46px;
-}
-
-.controls-row {
-  *zoom: 1;
-}
-
-.controls-row:before,
-.controls-row:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.controls-row:after {
-  clear: both;
-}
-
-.controls-row [class*="span"],
-.row-fluid .controls-row [class*="span"] {
-  float: left;
-}
-
-.controls-row .checkbox[class*="span"],
-.controls-row .radio[class*="span"] {
-  padding-top: 5px;
-}
-
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-}
-
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-
-.control-group.warning .control-label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-
-.control-group.warning .checkbox,
-.control-group.warning .radio,
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-}
-
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  border-color: #c09853;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-}
-
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-
-.control-group.error .control-label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-
-.control-group.error .checkbox,
-.control-group.error .radio,
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-}
-
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  border-color: #b94a48;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-}
-
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-
-.control-group.success .control-label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-
-.control-group.success .checkbox,
-.control-group.success .radio,
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-}
-
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  border-color: #468847;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-}
-
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-
-.control-group.info .control-label,
-.control-group.info .help-block,
-.control-group.info .help-inline {
-  color: #3a87ad;
-}
-
-.control-group.info .checkbox,
-.control-group.info .radio,
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  color: #3a87ad;
-}
-
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  border-color: #3a87ad;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.info input:focus,
-.control-group.info select:focus,
-.control-group.info textarea:focus {
-  border-color: #2d6987;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-}
-
-.control-group.info .input-prepend .add-on,
-.control-group.info .input-append .add-on {
-  color: #3a87ad;
-  background-color: #d9edf7;
-  border-color: #3a87ad;
-}
-
-input:focus:invalid,
-textarea:focus:invalid,
-select:focus:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-
-input:focus:invalid:focus,
-textarea:focus:invalid:focus,
-select:focus:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-     -moz-box-shadow: 0 0 6px #f8b9b7;
-          box-shadow: 0 0 6px #f8b9b7;
-}
-
-.form-actions {
-  padding: 19px 20px 20px;
-  margin-top: 20px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #e5e5e5;
-  *zoom: 1;
-}
-
-.form-actions:before,
-.form-actions:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.form-actions:after {
-  clear: both;
-}
-
-.help-block,
-.help-inline {
-  color: #595959;
-}
-
-.help-block {
-  display: block;
-  margin-bottom: 10px;
-}
-
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  padding-left: 5px;
-  vertical-align: middle;
-  *zoom: 1;
-}
-
-.input-append,
-.input-prepend {
-  display: inline-block;
-  margin-bottom: 10px;
-  font-size: 0;
-  white-space: nowrap;
-  vertical-align: middle;
-}
-
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input,
-.input-append .dropdown-menu,
-.input-prepend .dropdown-menu,
-.input-append .popover,
-.input-prepend .popover {
-  font-size: 14px;
-}
-
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input {
-  position: relative;
-  margin-bottom: 0;
-  *margin-left: 0;
-  vertical-align: top;
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.input-append input:focus,
-.input-prepend input:focus,
-.input-append select:focus,
-.input-prepend select:focus,
-.input-append .uneditable-input:focus,
-.input-prepend .uneditable-input:focus {
-  z-index: 2;
-}
-
-.input-append .add-on,
-.input-prepend .add-on {
-  display: inline-block;
-  width: auto;
-  height: 20px;
-  min-width: 16px;
-  padding: 4px 5px;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 20px;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-}
-
-.input-append .add-on,
-.input-prepend .add-on,
-.input-append .btn,
-.input-prepend .btn,
-.input-append .btn-group > .dropdown-toggle,
-.input-prepend .btn-group > .dropdown-toggle {
-  vertical-align: top;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.input-append .active,
-.input-prepend .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-
-.input-prepend .add-on,
-.input-prepend .btn {
-  margin-right: -1px;
-}
-
-.input-prepend .add-on:first-child,
-.input-prepend .btn:first-child {
-  -webkit-border-radius: 4px 0 0 4px;
-     -moz-border-radius: 4px 0 0 4px;
-          border-radius: 4px 0 0 4px;
-}
-
-.input-append input,
-.input-append select,
-.input-append .uneditable-input {
-  -webkit-border-radius: 4px 0 0 4px;
-     -moz-border-radius: 4px 0 0 4px;
-          border-radius: 4px 0 0 4px;
-}
-
-.input-append input + .btn-group .btn:last-child,
-.input-append select + .btn-group .btn:last-child,
-.input-append .uneditable-input + .btn-group .btn:last-child {
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.input-append .add-on,
-.input-append .btn,
-.input-append .btn-group {
-  margin-left: -1px;
-}
-
-.input-append .add-on:last-child,
-.input-append .btn:last-child,
-.input-append .btn-group:last-child > .dropdown-toggle {
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.input-prepend.input-append input,
-.input-prepend.input-append select,
-.input-prepend.input-append .uneditable-input {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.input-prepend.input-append input + .btn-group .btn,
-.input-prepend.input-append select + .btn-group .btn,
-.input-prepend.input-append .uneditable-input + .btn-group .btn {
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.input-prepend.input-append .add-on:first-child,
-.input-prepend.input-append .btn:first-child {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-     -moz-border-radius: 4px 0 0 4px;
-          border-radius: 4px 0 0 4px;
-}
-
-.input-prepend.input-append .add-on:last-child,
-.input-prepend.input-append .btn:last-child {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.input-prepend.input-append .btn-group:first-child {
-  margin-left: 0;
-}
-
-input.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9;
-  /* IE7-8 doesn't have border-radius, so don't indent the padding */
-
-  margin-bottom: 0;
-  -webkit-border-radius: 15px;
-     -moz-border-radius: 15px;
-          border-radius: 15px;
-}
-
-/* Allow for input prepend/append in search forms */
-
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.form-search .input-append .search-query {
-  -webkit-border-radius: 14px 0 0 14px;
-     -moz-border-radius: 14px 0 0 14px;
-          border-radius: 14px 0 0 14px;
-}
-
-.form-search .input-append .btn {
-  -webkit-border-radius: 0 14px 14px 0;
-     -moz-border-radius: 0 14px 14px 0;
-          border-radius: 0 14px 14px 0;
-}
-
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0 14px 14px 0;
-     -moz-border-radius: 0 14px 14px 0;
-          border-radius: 0 14px 14px 0;
-}
-
-.form-search .input-prepend .btn {
-  -webkit-border-radius: 14px 0 0 14px;
-     -moz-border-radius: 14px 0 0 14px;
-          border-radius: 14px 0 0 14px;
-}
-
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input,
-.form-search .input-prepend,
-.form-inline .input-prepend,
-.form-horizontal .input-prepend,
-.form-search .input-append,
-.form-inline .input-append,
-.form-horizontal .input-append {
-  display: inline-block;
-  *display: inline;
-  margin-bottom: 0;
-  vertical-align: middle;
-  *zoom: 1;
-}
-
-.form-search .hide,
-.form-inline .hide,
-.form-horizontal .hide {
-  display: none;
-}
-
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
-  display: inline-block;
-}
-
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-
-.control-group {
-  margin-bottom: 10px;
-}
-
-legend + .control-group {
-  margin-top: 20px;
-  -webkit-margin-top-collapse: separate;
-}
-
-.form-horizontal .control-group {
-  margin-bottom: 20px;
-  *zoom: 1;
-}
-
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.form-horizontal .control-group:after {
-  clear: both;
-}
-
-.form-horizontal .control-label {
-  float: left;
-  width: 160px;
-  padding-top: 5px;
-  text-align: right;
-}
-
-.form-horizontal .controls {
-  *display: inline-block;
-  *padding-left: 20px;
-  margin-left: 180px;
-  *margin-left: 0;
-}
-
-.form-horizontal .controls:first-child {
-  *padding-left: 180px;
-}
-
-.form-horizontal .help-block {
-  margin-bottom: 0;
-}
-
-.form-horizontal input + .help-block,
-.form-horizontal select + .help-block,
-.form-horizontal textarea + .help-block,
-.form-horizontal .uneditable-input + .help-block,
-.form-horizontal .input-prepend + .help-block,
-.form-horizontal .input-append + .help-block {
-  margin-top: 10px;
-}
-
-.form-horizontal .form-actions {
-  padding-left: 180px;
-}
-
-table {
-  max-width: 100%;
-  background-color: transparent;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-.table {
-  width: 100%;
-  margin-bottom: 20px;
-}
-
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 20px;
-  text-align: left;
-  vertical-align: top;
-  border-top: 1px solid #dddddd;
-}
-
-.table th {
-  font-weight: bold;
-}
-
-.table thead th {
-  vertical-align: bottom;
-}
-
-.table caption + thead tr:first-child th,
-.table caption + thead tr:first-child td,
-.table colgroup + thead tr:first-child th,
-.table colgroup + thead tr:first-child td,
-.table thead:first-child tr:first-child th,
-.table thead:first-child tr:first-child td {
-  border-top: 0;
-}
-
-.table tbody + tbody {
-  border-top: 2px solid #dddddd;
-}
-
-.table .table {
-  background-color: #ffffff;
-}
-
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-
-.table-bordered {
-  border: 1px solid #dddddd;
-  border-collapse: separate;
-  *border-collapse: collapse;
-  border-left: 0;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.table-bordered th,
-.table-bordered td {
-  border-left: 1px solid #dddddd;
-}
-
-.table-bordered caption + thead tr:first-child th,
-.table-bordered caption + tbody tr:first-child th,
-.table-bordered caption + tbody tr:first-child td,
-.table-bordered colgroup + thead tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child td,
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-
-.table-bordered thead:first-child tr:first-child > th:first-child,
-.table-bordered tbody:first-child tr:first-child > td:first-child,
-.table-bordered tbody:first-child tr:first-child > th:first-child {
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.table-bordered thead:first-child tr:first-child > th:last-child,
-.table-bordered tbody:first-child tr:first-child > td:last-child,
-.table-bordered tbody:first-child tr:first-child > th:last-child {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-}
-
-.table-bordered thead:last-child tr:last-child > th:first-child,
-.table-bordered tbody:last-child tr:last-child > td:first-child,
-.table-bordered tbody:last-child tr:last-child > th:first-child,
-.table-bordered tfoot:last-child tr:last-child > td:first-child,
-.table-bordered tfoot:last-child tr:last-child > th:first-child {
-  -webkit-border-bottom-left-radius: 4px;
-          border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-}
-
-.table-bordered thead:last-child tr:last-child > th:last-child,
-.table-bordered tbody:last-child tr:last-child > td:last-child,
-.table-bordered tbody:last-child tr:last-child > th:last-child,
-.table-bordered tfoot:last-child tr:last-child > td:last-child,
-.table-bordered tfoot:last-child tr:last-child > th:last-child {
-  -webkit-border-bottom-right-radius: 4px;
-          border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-}
-
-.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
-  -webkit-border-bottom-left-radius: 0;
-          border-bottom-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-}
-
-.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
-  -webkit-border-bottom-right-radius: 0;
-          border-bottom-right-radius: 0;
-  -moz-border-radius-bottomright: 0;
-}
-
-.table-bordered caption + thead tr:first-child th:first-child,
-.table-bordered caption + tbody tr:first-child td:first-child,
-.table-bordered colgroup + thead tr:first-child th:first-child,
-.table-bordered colgroup + tbody tr:first-child td:first-child {
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.table-bordered caption + thead tr:first-child th:last-child,
-.table-bordered caption + tbody tr:first-child td:last-child,
-.table-bordered colgroup + thead tr:first-child th:last-child,
-.table-bordered colgroup + tbody tr:first-child td:last-child {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-}
-
-.table-striped tbody > tr:nth-child(odd) > td,
-.table-striped tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9;
-}
-
-.table-hover tbody tr:hover > td,
-.table-hover tbody tr:hover > th {
-  background-color: #f5f5f5;
-}
-
-table td[class*="span"],
-table th[class*="span"],
-.row-fluid table td[class*="span"],
-.row-fluid table th[class*="span"] {
-  display: table-cell;
-  float: none;
-  margin-left: 0;
-}
-
-.table td.span1,
-.table th.span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-
-.table td.span2,
-.table th.span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-
-.table td.span3,
-.table th.span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-
-.table td.span4,
-.table th.span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-
-.table td.span5,
-.table th.span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-
-.table td.span6,
-.table th.span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-
-.table td.span7,
-.table th.span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-
-.table td.span8,
-.table th.span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-
-.table td.span9,
-.table th.span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-
-.table td.span10,
-.table th.span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-
-.table td.span11,
-.table th.span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-
-.table td.span12,
-.table th.span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-
-.table tbody tr.success > td {
-  background-color: #dff0d8;
-}
-
-.table tbody tr.error > td {
-  background-color: #f2dede;
-}
-
-.table tbody tr.warning > td {
-  background-color: #fcf8e3;
-}
-
-.table tbody tr.info > td {
-  background-color: #d9edf7;
-}
-
-.table-hover tbody tr.success:hover > td {
-  background-color: #d0e9c6;
-}
-
-.table-hover tbody tr.error:hover > td {
-  background-color: #ebcccc;
-}
-
-.table-hover tbody tr.warning:hover > td {
-  background-color: #faf2cc;
-}
-
-.table-hover tbody tr.info:hover > td {
-  background-color: #c4e3f3;
-}
-
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  margin-top: 1px;
-  *margin-right: .3em;
-  line-height: 14px;
-  vertical-align: text-top;
-  background-image: url("../img/glyphicons-halflings.png");
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-}
-
-/* White icons with optional class, or on hover/focus/active states of certain elements */
-
-.icon-white,
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:focus > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > li > a:focus > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"],
-.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:focus > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"],
-.dropdown-submenu:focus > a > [class*=" icon-"] {
-  background-image: url("../img/glyphicons-halflings-white.png");
-}
-
-.icon-glass {
-  background-position: 0      0;
-}
-
-.icon-music {
-  background-position: -24px 0;
-}
-
-.icon-search {
-  background-position: -48px 0;
-}
-
-.icon-envelope {
-  background-position: -72px 0;
-}
-
-.icon-heart {
-  background-position: -96px 0;
-}
-
-.icon-star {
-  background-position: -120px 0;
-}
-
-.icon-star-empty {
-  background-position: -144px 0;
-}
-
-.icon-user {
-  background-position: -168px 0;
-}
-
-.icon-film {
-  background-position: -192px 0;
-}
-
-.icon-th-large {
-  background-position: -216px 0;
-}
-
-.icon-th {
-  background-position: -240px 0;
-}
-
-.icon-th-list {
-  background-position: -264px 0;
-}
-
-.icon-ok {
-  background-position: -288px 0;
-}
-
-.icon-remove {
-  background-position: -312px 0;
-}
-
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-
-.icon-off {
-  background-position: -384px 0;
-}
-
-.icon-signal {
-  background-position: -408px 0;
-}
-
-.icon-cog {
-  background-position: -432px 0;
-}
-
-.icon-trash {
-  background-position: -456px 0;
-}
-
-.icon-home {
-  background-position: 0 -24px;
-}
-
-.icon-file {
-  background-position: -24px -24px;
-}
-
-.icon-time {
-  background-position: -48px -24px;
-}
-
-.icon-road {
-  background-position: -72px -24px;
-}
-
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-
-.icon-download {
-  background-position: -120px -24px;
-}
-
-.icon-upload {
-  background-position: -144px -24px;
-}
-
-.icon-inbox {
-  background-position: -168px -24px;
-}
-
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-
-.icon-repeat {
-  background-position: -216px -24px;
-}
-
-.icon-refresh {
-  background-position: -240px -24px;
-}
-
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-
-.icon-lock {
-  background-position: -287px -24px;
-}
-
-.icon-flag {
-  background-position: -312px -24px;
-}
-
-.icon-headphones {
-  background-position: -336px -24px;
-}
-
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-
-.icon-volume-up {
-  background-position: -408px -24px;
-}
-
-.icon-qrcode {
-  background-position: -432px -24px;
-}
-
-.icon-barcode {
-  background-position: -456px -24px;
-}
-
-.icon-tag {
-  background-position: 0 -48px;
-}
-
-.icon-tags {
-  background-position: -25px -48px;
-}
-
-.icon-book {
-  background-position: -48px -48px;
-}
-
-.icon-bookmark {
-  background-position: -72px -48px;
-}
-
-.icon-print {
-  background-position: -96px -48px;
-}
-
-.icon-camera {
-  background-position: -120px -48px;
-}
-
-.icon-font {
-  background-position: -144px -48px;
-}
-
-.icon-bold {
-  background-position: -167px -48px;
-}
-
-.icon-italic {
-  background-position: -192px -48px;
-}
-
-.icon-text-height {
-  background-position: -216px -48px;
-}
-
-.icon-text-width {
-  background-position: -240px -48px;
-}
-
-.icon-align-left {
-  background-position: -264px -48px;
-}
-
-.icon-align-center {
-  background-position: -288px -48px;
-}
-
-.icon-align-right {
-  background-position: -312px -48px;
-}
-
-.icon-align-justify {
-  background-position: -336px -48px;
-}
-
-.icon-list {
-  background-position: -360px -48px;
-}
-
-.icon-indent-left {
-  background-position: -384px -48px;
-}
-
-.icon-indent-right {
-  background-position: -408px -48px;
-}
-
-.icon-facetime-video {
-  background-position: -432px -48px;
-}
-
-.icon-picture {
-  background-position: -456px -48px;
-}
-
-.icon-pencil {
-  background-position: 0 -72px;
-}
-
-.icon-map-marker {
-  background-position: -24px -72px;
-}
-
-.icon-adjust {
-  background-position: -48px -72px;
-}
-
-.icon-tint {
-  background-position: -72px -72px;
-}
-
-.icon-edit {
-  background-position: -96px -72px;
-}
-
-.icon-share {
-  background-position: -120px -72px;
-}
-
-.icon-check {
-  background-position: -144px -72px;
-}
-
-.icon-move {
-  background-position: -168px -72px;
-}
-
-.icon-step-backward {
-  background-position: -192px -72px;
-}
-
-.icon-fast-backward {
-  background-position: -216px -72px;
-}
-
-.icon-backward {
-  background-position: -240px -72px;
-}
-
-.icon-play {
-  background-position: -264px -72px;
-}
-
-.icon-pause {
-  background-position: -288px -72px;
-}
-
-.icon-stop {
-  background-position: -312px -72px;
-}
-
-.icon-forward {
-  background-position: -336px -72px;
-}
-
-.icon-fast-forward {
-  background-position: -360px -72px;
-}
-
-.icon-step-forward {
-  background-position: -384px -72px;
-}
-
-.icon-eject {
-  background-position: -408px -72px;
-}
-
-.icon-chevron-left {
-  background-position: -432px -72px;
-}
-
-.icon-chevron-right {
-  background-position: -456px -72px;
-}
-
-.icon-plus-sign {
-  background-position: 0 -96px;
-}
-
-.icon-minus-sign {
-  background-position: -24px -96px;
-}
-
-.icon-remove-sign {
-  background-position: -48px -96px;
-}
-
-.icon-ok-sign {
-  background-position: -72px -96px;
-}
-
-.icon-question-sign {
-  background-position: -96px -96px;
-}
-
-.icon-info-sign {
-  background-position: -120px -96px;
-}
-
-.icon-screenshot {
-  background-position: -144px -96px;
-}
-
-.icon-remove-circle {
-  background-position: -168px -96px;
-}
-
-.icon-ok-circle {
-  background-position: -192px -96px;
-}
-
-.icon-ban-circle {
-  background-position: -216px -96px;
-}
-
-.icon-arrow-left {
-  background-position: -240px -96px;
-}
-
-.icon-arrow-right {
-  background-position: -264px -96px;
-}
-
-.icon-arrow-up {
-  background-position: -289px -96px;
-}
-
-.icon-arrow-down {
-  background-position: -312px -96px;
-}
-
-.icon-share-alt {
-  background-position: -336px -96px;
-}
-
-.icon-resize-full {
-  background-position: -360px -96px;
-}
-
-.icon-resize-small {
-  background-position: -384px -96px;
-}
-
-.icon-plus {
-  background-position: -408px -96px;
-}
-
-.icon-minus {
-  background-position: -433px -96px;
-}
-
-.icon-asterisk {
-  background-position: -456px -96px;
-}
-
-.icon-exclamation-sign {
-  background-position: 0 -120px;
-}
-
-.icon-gift {
-  background-position: -24px -120px;
-}
-
-.icon-leaf {
-  background-position: -48px -120px;
-}
-
-.icon-fire {
-  background-position: -72px -120px;
-}
-
-.icon-eye-open {
-  background-position: -96px -120px;
-}
-
-.icon-eye-close {
-  background-position: -120px -120px;
-}
-
-.icon-warning-sign {
-  background-position: -144px -120px;
-}
-
-.icon-plane {
-  background-position: -168px -120px;
-}
-
-.icon-calendar {
-  background-position: -192px -120px;
-}
-
-.icon-random {
-  width: 16px;
-  background-position: -216px -120px;
-}
-
-.icon-comment {
-  background-position: -240px -120px;
-}
-
-.icon-magnet {
-  background-position: -264px -120px;
-}
-
-.icon-chevron-up {
-  background-position: -288px -120px;
-}
-
-.icon-chevron-down {
-  background-position: -313px -119px;
-}
-
-.icon-retweet {
-  background-position: -336px -120px;
-}
-
-.icon-shopping-cart {
-  background-position: -360px -120px;
-}
-
-.icon-folder-close {
-  width: 16px;
-  background-position: -384px -120px;
-}
-
-.icon-folder-open {
-  width: 16px;
-  background-position: -408px -120px;
-}
-
-.icon-resize-vertical {
-  background-position: -432px -119px;
-}
-
-.icon-resize-horizontal {
-  background-position: -456px -118px;
-}
-
-.icon-hdd {
-  background-position: 0 -144px;
-}
-
-.icon-bullhorn {
-  background-position: -24px -144px;
-}
-
-.icon-bell {
-  background-position: -48px -144px;
-}
-
-.icon-certificate {
-  background-position: -72px -144px;
-}
-
-.icon-thumbs-up {
-  background-position: -96px -144px;
-}
-
-.icon-thumbs-down {
-  background-position: -120px -144px;
-}
-
-.icon-hand-right {
-  background-position: -144px -144px;
-}
-
-.icon-hand-left {
-  background-position: -168px -144px;
-}
-
-.icon-hand-up {
-  background-position: -192px -144px;
-}
-
-.icon-hand-down {
-  background-position: -216px -144px;
-}
-
-.icon-circle-arrow-right {
-  background-position: -240px -144px;
-}
-
-.icon-circle-arrow-left {
-  background-position: -264px -144px;
-}
-
-.icon-circle-arrow-up {
-  background-position: -288px -144px;
-}
-
-.icon-circle-arrow-down {
-  background-position: -312px -144px;
-}
-
-.icon-globe {
-  background-position: -336px -144px;
-}
-
-.icon-wrench {
-  background-position: -360px -144px;
-}
-
-.icon-tasks {
-  background-position: -384px -144px;
-}
-
-.icon-filter {
-  background-position: -408px -144px;
-}
-
-.icon-briefcase {
-  background-position: -432px -144px;
-}
-
-.icon-fullscreen {
-  background-position: -456px -144px;
-}
-
-.dropup,
-.dropdown {
-  position: relative;
-}
-
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top: 4px solid #000000;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  content: "";
-}
-
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding;
-          background-clip: padding-box;
-}
-
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-
-.dropdown-menu .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 20px;
-  color: #333333;
-  white-space: nowrap;
-}
-
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  outline: 0;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #999999;
-}
-
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  cursor: default;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.open {
-  *z-index: 1000;
-}
-
-.open > .dropdown-menu {
-  display: block;
-}
-
-.dropdown-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 990;
-}
-
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid #000000;
-  content: "";
-}
-
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-
-.dropdown-submenu {
-  position: relative;
-}
-
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  -webkit-border-radius: 0 6px 6px 6px;
-     -moz-border-radius: 0 6px 6px 6px;
-          border-radius: 0 6px 6px 6px;
-}
-
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-}
-
-.dropup .dropdown-submenu > .dropdown-menu {
-  top: auto;
-  bottom: 0;
-  margin-top: 0;
-  margin-bottom: -2px;
-  -webkit-border-radius: 5px 5px 5px 0;
-     -moz-border-radius: 5px 5px 5px 0;
-          border-radius: 5px 5px 5px 0;
-}
-
-.dropdown-submenu > a:after {
-  display: block;
-  float: right;
-  width: 0;
-  height: 0;
-  margin-top: 5px;
-  margin-right: -10px;
-  border-color: transparent;
-  border-left-color: #cccccc;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  content: " ";
-}
-
-.dropdown-submenu:hover > a:after {
-  border-left-color: #ffffff;
-}
-
-.dropdown-submenu.pull-left {
-  float: none;
-}
-
-.dropdown-submenu.pull-left > .dropdown-menu {
-  left: -100%;
-  margin-left: 10px;
-  -webkit-border-radius: 6px 0 6px 6px;
-     -moz-border-radius: 6px 0 6px 6px;
-          border-radius: 6px 0 6px 6px;
-}
-
-.dropdown .dropdown-menu .nav-header {
-  padding-right: 20px;
-  padding-left: 20px;
-}
-
-.typeahead {
-  z-index: 1051;
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-
-.well-large {
-  padding: 24px;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.well-small {
-  padding: 9px;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity 0.15s linear;
-     -moz-transition: opacity 0.15s linear;
-       -o-transition: opacity 0.15s linear;
-          transition: opacity 0.15s linear;
-}
-
-.fade.in {
-  opacity: 1;
-}
-
-.collapse {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition: height 0.35s ease;
-     -moz-transition: height 0.35s ease;
-       -o-transition: height 0.35s ease;
-          transition: height 0.35s ease;
-}
-
-.collapse.in {
-  height: auto;
-}
-
-.close {
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #000000;
-  text-shadow: 0 1px 0 #ffffff;
-  opacity: 0.2;
-  filter: alpha(opacity=20);
-}
-
-.close:hover,
-.close:focus {
-  color: #000000;
-  text-decoration: none;
-  cursor: pointer;
-  opacity: 0.4;
-  filter: alpha(opacity=40);
-}
-
-button.close {
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0;
-  -webkit-appearance: none;
-}
-
-.btn {
-  display: inline-block;
-  *display: inline;
-  padding: 4px 12px;
-  margin-bottom: 0;
-  *margin-left: .3em;
-  font-size: 14px;
-  line-height: 20px;
-  color: #333333;
-  text-align: center;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  vertical-align: middle;
-  cursor: pointer;
-  background-color: #f5f5f5;
-  *background-color: #e6e6e6;
-  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
-  background-repeat: repeat-x;
-  border: 1px solid #cccccc;
-  *border: 0;
-  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  border-bottom-color: #b3b3b3;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-  *zoom: 1;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn:hover,
-.btn:focus,
-.btn:active,
-.btn.active,
-.btn.disabled,
-.btn[disabled] {
-  color: #333333;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-}
-
-.btn:active,
-.btn.active {
-  background-color: #cccccc \9;
-}
-
-.btn:first-child {
-  *margin-left: 0;
-}
-
-.btn:hover,
-.btn:focus {
-  color: #333333;
-  text-decoration: none;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-     -moz-transition: background-position 0.1s linear;
-       -o-transition: background-position 0.1s linear;
-          transition: background-position 0.1s linear;
-}
-
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-.btn.active,
-.btn:active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.btn-large {
-  padding: 11px 19px;
-  font-size: 17.5px;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.btn-large [class^="icon-"],
-.btn-large [class*=" icon-"] {
-  margin-top: 4px;
-}
-
-.btn-small {
-  padding: 2px 10px;
-  font-size: 11.9px;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-.btn-small [class^="icon-"],
-.btn-small [class*=" icon-"] {
-  margin-top: 0;
-}
-
-.btn-mini [class^="icon-"],
-.btn-mini [class*=" icon-"] {
-  margin-top: -1px;
-}
-
-.btn-mini {
-  padding: 0 6px;
-  font-size: 10.5px;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-right: 0;
-  padding-left: 0;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-
-.btn-primary {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #006dcc;
-  *background-color: #0044cc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  color: #ffffff;
-  background-color: #0044cc;
-  *background-color: #003bb3;
-}
-
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #003399 \9;
-}
-
-.btn-warning {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #faa732;
-  *background-color: #f89406;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  color: #ffffff;
-  background-color: #f89406;
-  *background-color: #df8505;
-}
-
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-
-.btn-danger {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #da4f49;
-  *background-color: #bd362f;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  color: #ffffff;
-  background-color: #bd362f;
-  *background-color: #a9302a;
-}
-
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-
-.btn-success {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #5bb75b;
-  *background-color: #51a351;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(to bottom, #62c462, #51a351);
-  background-repeat: repeat-x;
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  color: #ffffff;
-  background-color: #51a351;
-  *background-color: #499249;
-}
-
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-
-.btn-info {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #49afcd;
-  *background-color: #2f96b4;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  color: #ffffff;
-  background-color: #2f96b4;
-  *background-color: #2a85a0;
-}
-
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-
-.btn-inverse {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #363636;
-  *background-color: #222222;
-  background-image: -moz-linear-gradient(top, #444444, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
-  background-image: -webkit-linear-gradient(top, #444444, #222222);
-  background-image: -o-linear-gradient(top, #444444, #222222);
-  background-image: linear-gradient(to bottom, #444444, #222222);
-  background-repeat: repeat-x;
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-inverse:hover,
-.btn-inverse:focus,
-.btn-inverse:active,
-.btn-inverse.active,
-.btn-inverse.disabled,
-.btn-inverse[disabled] {
-  color: #ffffff;
-  background-color: #222222;
-  *background-color: #151515;
-}
-
-.btn-inverse:active,
-.btn-inverse.active {
-  background-color: #080808 \9;
-}
-
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-
-button.btn.btn-large,
-input[type="submit"].btn.btn-large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-
-button.btn.btn-small,
-input[type="submit"].btn.btn-small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-
-button.btn.btn-mini,
-input[type="submit"].btn.btn-mini {
-  *padding-top: 1px;
-  *padding-bottom: 1px;
-}
-
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
-  background-color: transparent;
-  background-image: none;
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.btn-link {
-  color: #0088cc;
-  cursor: pointer;
-  border-color: transparent;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-link:hover,
-.btn-link:focus {
-  color: #005580;
-  text-decoration: underline;
-  background-color: transparent;
-}
-
-.btn-link[disabled]:hover,
-.btn-link[disabled]:focus {
-  color: #333333;
-  text-decoration: none;
-}
-
-.btn-group {
-  position: relative;
-  display: inline-block;
-  *display: inline;
-  *margin-left: .3em;
-  font-size: 0;
-  white-space: nowrap;
-  vertical-align: middle;
-  *zoom: 1;
-}
-
-.btn-group:first-child {
-  *margin-left: 0;
-}
-
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-
-.btn-toolbar {
-  margin-top: 10px;
-  margin-bottom: 10px;
-  font-size: 0;
-}
-
-.btn-toolbar > .btn + .btn,
-.btn-toolbar > .btn-group + .btn,
-.btn-toolbar > .btn + .btn-group {
-  margin-left: 5px;
-}
-
-.btn-group > .btn {
-  position: relative;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-group > .btn + .btn {
-  margin-left: -1px;
-}
-
-.btn-group > .btn,
-.btn-group > .dropdown-menu,
-.btn-group > .popover {
-  font-size: 14px;
-}
-
-.btn-group > .btn-mini {
-  font-size: 10.5px;
-}
-
-.btn-group > .btn-small {
-  font-size: 11.9px;
-}
-
-.btn-group > .btn-large {
-  font-size: 17.5px;
-}
-
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  -webkit-border-bottom-left-radius: 4px;
-          border-bottom-left-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-          border-bottom-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  -moz-border-radius-bottomright: 4px;
-}
-
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-bottom-left-radius: 6px;
-          border-bottom-left-radius: 6px;
-  -webkit-border-top-left-radius: 6px;
-          border-top-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  -moz-border-radius-topleft: 6px;
-}
-
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-          border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-          border-bottom-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  -moz-border-radius-bottomright: 6px;
-}
-
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-
-.btn-group > .btn + .dropdown-toggle {
-  *padding-top: 5px;
-  padding-right: 8px;
-  *padding-bottom: 5px;
-  padding-left: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn-group > .btn-mini + .dropdown-toggle {
-  *padding-top: 2px;
-  padding-right: 5px;
-  *padding-bottom: 2px;
-  padding-left: 5px;
-}
-
-.btn-group > .btn-small + .dropdown-toggle {
-  *padding-top: 5px;
-  *padding-bottom: 4px;
-}
-
-.btn-group > .btn-large + .dropdown-toggle {
-  *padding-top: 7px;
-  padding-right: 12px;
-  *padding-bottom: 7px;
-  padding-left: 12px;
-}
-
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn-group.open .btn.dropdown-toggle {
-  background-color: #e6e6e6;
-}
-
-.btn-group.open .btn-primary.dropdown-toggle {
-  background-color: #0044cc;
-}
-
-.btn-group.open .btn-warning.dropdown-toggle {
-  background-color: #f89406;
-}
-
-.btn-group.open .btn-danger.dropdown-toggle {
-  background-color: #bd362f;
-}
-
-.btn-group.open .btn-success.dropdown-toggle {
-  background-color: #51a351;
-}
-
-.btn-group.open .btn-info.dropdown-toggle {
-  background-color: #2f96b4;
-}
-
-.btn-group.open .btn-inverse.dropdown-toggle {
-  background-color: #222222;
-}
-
-.btn .caret {
-  margin-top: 8px;
-  margin-left: 0;
-}
-
-.btn-large .caret {
-  margin-top: 6px;
-}
-
-.btn-large .caret {
-  border-top-width: 5px;
-  border-right-width: 5px;
-  border-left-width: 5px;
-}
-
-.btn-mini .caret,
-.btn-small .caret {
-  margin-top: 8px;
-}
-
-.dropup .btn-large .caret {
-  border-bottom-width: 5px;
-}
-
-.btn-primary .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret,
-.btn-inverse .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.btn-group-vertical {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-
-.btn-group-vertical > .btn {
-  display: block;
-  float: none;
-  max-width: 100%;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-group-vertical > .btn + .btn {
-  margin-top: -1px;
-  margin-left: 0;
-}
-
-.btn-group-vertical > .btn:first-child {
-  -webkit-border-radius: 4px 4px 0 0;
-     -moz-border-radius: 4px 4px 0 0;
-          border-radius: 4px 4px 0 0;
-}
-
-.btn-group-vertical > .btn:last-child {
-  -webkit-border-radius: 0 0 4px 4px;
-     -moz-border-radius: 0 0 4px 4px;
-          border-radius: 0 0 4px 4px;
-}
-
-.btn-group-vertical > .btn-large:first-child {
-  -webkit-border-radius: 6px 6px 0 0;
-     -moz-border-radius: 6px 6px 0 0;
-          border-radius: 6px 6px 0 0;
-}
-
-.btn-group-vertical > .btn-large:last-child {
-  -webkit-border-radius: 0 0 6px 6px;
-     -moz-border-radius: 0 0 6px 6px;
-          border-radius: 0 0 6px 6px;
-}
-
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 20px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.alert,
-.alert h4 {
-  color: #c09853;
-}
-
-.alert h4 {
-  margin: 0;
-}
-
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 20px;
-}
-
-.alert-success {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-}
-
-.alert-success h4 {
-  color: #468847;
-}
-
-.alert-danger,
-.alert-error {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #eed3d7;
-}
-
-.alert-danger h4,
-.alert-error h4 {
-  color: #b94a48;
-}
-
-.alert-info {
-  color: #3a87ad;
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-}
-
-.alert-info h4 {
-  color: #3a87ad;
-}
-
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-
-.alert-block p + p {
-  margin-top: 5px;
-}
-
-.nav {
-  margin-bottom: 20px;
-  margin-left: 0;
-  list-style: none;
-}
-
-.nav > li > a {
-  display: block;
-}
-
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-
-.nav > li > a > img {
-  max-width: none;
-}
-
-.nav > .pull-right {
-  float: right;
-}
-
-.nav-header {
-  display: block;
-  padding: 3px 15px;
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #999999;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  text-transform: uppercase;
-}
-
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-
-.nav-list {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-bottom: 0;
-}
-
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-right: -15px;
-  margin-left: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-
-.nav-list > .active > a,
-.nav-list > .active > a:hover,
-.nav-list > .active > a:focus {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #0088cc;
-}
-
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  margin-right: 2px;
-}
-
-.nav-list .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: 20px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-     -moz-border-radius: 4px 4px 0 0;
-          border-radius: 4px 4px 0 0;
-}
-
-.nav-tabs > li > a:hover,
-.nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
-  color: #555555;
-  cursor: default;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-}
-
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-     -moz-border-radius: 5px;
-          border-radius: 5px;
-}
-
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover,
-.nav-pills > .active > a:focus {
-  color: #ffffff;
-  background-color: #0088cc;
-}
-
-.nav-stacked > li {
-  float: none;
-}
-
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-bottom-right-radius: 4px;
-          border-bottom-right-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-          border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  -moz-border-radius-bottomleft: 4px;
-}
-
-.nav-tabs.nav-stacked > li > a:hover,
-.nav-tabs.nav-stacked > li > a:focus {
-  z-index: 2;
-  border-color: #ddd;
-}
-
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-
-.nav-tabs .dropdown-menu {
-  -webkit-border-radius: 0 0 6px 6px;
-     -moz-border-radius: 0 0 6px 6px;
-          border-radius: 0 0 6px 6px;
-}
-
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.nav .dropdown-toggle .caret {
-  margin-top: 6px;
-  border-top-color: #0088cc;
-  border-bottom-color: #0088cc;
-}
-
-.nav .dropdown-toggle:hover .caret,
-.nav .dropdown-toggle:focus .caret {
-  border-top-color: #005580;
-  border-bottom-color: #005580;
-}
-
-/* move down carets for tabs */
-
-.nav-tabs .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-
-.nav .active .dropdown-toggle .caret {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-
-.nav-tabs .active .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-
-.nav > .dropdown.active > a:hover,
-.nav > .dropdown.active > a:focus {
-  cursor: pointer;
-}
-
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover,
-.nav > li.dropdown.open.active > a:focus {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret,
-.nav li.dropdown.open a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-
-.tabs-stacked .open > a:hover,
-.tabs-stacked .open > a:focus {
-  border-color: #999999;
-}
-
-.tabbable {
-  *zoom: 1;
-}
-
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.tabbable:after {
-  clear: both;
-}
-
-.tab-content {
-  overflow: auto;
-}
-
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-
-.tabs-below > .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-     -moz-border-radius: 0 0 4px 4px;
-          border-radius: 0 0 4px 4px;
-}
-
-.tabs-below > .nav-tabs > li > a:hover,
-.tabs-below > .nav-tabs > li > a:focus {
-  border-top-color: #ddd;
-  border-bottom-color: transparent;
-}
-
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover,
-.tabs-below > .nav-tabs > .active > a:focus {
-  border-color: transparent #ddd #ddd #ddd;
-}
-
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-     -moz-border-radius: 4px 0 0 4px;
-          border-radius: 4px 0 0 4px;
-}
-
-.tabs-left > .nav-tabs > li > a:hover,
-.tabs-left > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover,
-.tabs-left > .nav-tabs .active > a:focus {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.tabs-right > .nav-tabs > li > a:hover,
-.tabs-right > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover,
-.tabs-right > .nav-tabs .active > a:focus {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-
-.nav > .disabled > a {
-  color: #999999;
-}
-
-.nav > .disabled > a:hover,
-.nav > .disabled > a:focus {
-  text-decoration: none;
-  cursor: default;
-  background-color: transparent;
-}
-
-.navbar {
-  *position: relative;
-  *z-index: 2;
-  margin-bottom: 20px;
-  overflow: visible;
-}
-
-.navbar-inner {
-  min-height: 40px;
-  padding-right: 20px;
-  padding-left: 20px;
-  background-color: #fafafa;
-  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
-  background-repeat: repeat-x;
-  border: 1px solid #d4d4d4;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorst

<TRUNCATED>


[49/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/controllers/twitter.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/controllers/twitter.js b/web/demos/app/scripts/controllers/twitter.js
deleted file mode 100644
index f9e8ffd..0000000
--- a/web/demos/app/scripts/controllers/twitter.js
+++ /dev/null
@@ -1,103 +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.
- */
-/*global settings, angular, jQuery, _*/
-(function () {
-'use strict';
-
-angular.module('twitter')
-    .controller('TwitterUrlsController', ['$scope', 'rest', function ($scope, rest) {
-        rest.getApp(settings.twitterUrls.appName).then(function (app) {
-            $scope.app = app;
-            $scope.appURL = settings.appsURL + app.id;
-        });
-
-        $scope.topic = settings.twitterUrls.topic;
-        $scope.pageTitle = 'Twitter Top URLs';
-        $scope.entity = 'URLs';
-        $scope.gridTitle = 'Twitter Top URLs';
-        $scope.chartTitle = 'Top 10 URLs Chart';
-        $scope.colName = 'URL';
-        $scope.formatter = function(url) {
-            return '<a class="svg-link" xlink:href="' + url + '">' + url + '</a>';
-        };
-    }])
-    .controller('TwitterHashtagsController', ['$scope', 'rest', function ($scope, rest) {
-        rest.getApp(settings.twitterHashtags.appName).then(function (app) {
-          $scope.app = app;
-          $scope.appURL = settings.appsURL + app.id;
-        });
-
-        $scope.topic = settings.twitterHashtags.topic;
-        $scope.pageTitle = 'Twitter Top Hashtags';
-        $scope.entity = 'hashtags';
-        $scope.gridTitle = 'Twitter Top Hashtags';
-        $scope.chartTitle = 'Top 10 Hashtags Chart';
-        $scope.colName = 'Hashtag';
-        $scope.formatter = function(Hashtag) {
-            return '<a class="svg-link" xlink:href="https://twitter.com/search?q=%23' + encodeURIComponent(Hashtag) + '">' + Hashtag + '</a>';
-        };
-    }])
-    .controller('TwitterGridControlller', ['$scope', 'socket', function ($scope, socket) {
-        socket.subscribe($scope.topic, function(data) {
-            var list = [];
-            jQuery.each(data.data, function(key, value) {
-                list.push( { name: key, value: parseInt(value, 10) } );
-            });
-            list = _.sortBy(list, function(item) {
-                return -item.value;
-            });
-            $scope.topTen = list;
-            $scope.$apply();
-        }, $scope);
-
-        $scope.gridOptions = {
-            data: 'topTen',
-            enableColumnResize: true,
-          columnDefs: [
-            { field: "name", displayName: $scope.colName, width: '75%', sortable: false },
-            { field: "value", displayName: 'Count', width: '25%', sortable: false }
-          ]
-        };
-    }])
-    .controller('TwitterBarChartController', ['$scope', 'socket', function($scope, socket) {
-        socket.subscribe($scope.topic, function(data) {
-            var list = [];
-            jQuery.each(data.data, function(key, value) {
-                list.push( { name: key, value: parseInt(value, 10) } );
-            });
-            list = _.sortBy(list, function(item) {
-                return -item.value;
-            });
-            //var max = _.max(list, function(item) {item.value});
-            var max = list[0].value;
-            _.each(list, function(item) {
-                if ($scope.formatter) {
-                    item.name = $scope.formatter(item.name);
-                }
-                item.name += ' - ' + item.value;
-                item.score = item.value / max * 100;
-            });
-
-            $scope.twitterBarChartData = list;
-            $scope.$apply();
-        }, $scope);
-        $scope.twitterBarChartData = [];
-    }]);
-
-})();

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/directives/barChart.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/directives/barChart.js b/web/demos/app/scripts/directives/barChart.js
deleted file mode 100644
index dad2b4c..0000000
--- a/web/demos/app/scripts/directives/barChart.js
+++ /dev/null
@@ -1,104 +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.
- */
-/*global angular, d3*/
-(function () {
-'use strict';
-
-angular.module('widgets')
-    .directive('widgetsBarChart', function () {
-        return {
-            restrict: 'A',
-            scope: {
-                data: "=",
-                label: "@",
-                onClick: "&"
-            },
-            link: function(scope, iElement, iAttrs) {
-                var svg = d3.select(iElement[0])
-                    .append("svg")
-                    .attr("width", "100%");
-
-                // on window resize, re-render d3 canvas
-                window.onresize = function() {
-                    return scope.$apply();
-                };
-                scope.$watch(function(){
-                        return angular.element(window)[0].innerWidth;
-                    }, function(){
-                        return scope.render(scope.data);
-                    }
-                );
-
-                // watch for data changes and re-render
-                scope.$watch('data', function(newVals, oldVals) {
-                    return scope.render(newVals);
-                }, true);
-
-                // define render function
-                scope.render = function(data){
-                    // remove all previous items before render
-                    svg.selectAll("*").remove();
-
-                    // setup variables
-                    var width, height, max;
-                    width = d3.select(iElement[0])[0][0].offsetWidth - 20;
-                    // 20 is for margins and can be changed
-                    height = scope.data.length * 35;
-                    // 35 = 30(bar height) + 5(margin between bars)
-                    max = 98;
-                    // this can also be found dynamically when the data is not static
-                    // max = Math.max.apply(Math, _.map(data, ((val)-> val.count)))
-
-                    // set the height based on the calculations above
-                    svg.attr('height', height);
-
-                    //create the rectangles for the bar chart
-                    svg.selectAll("rect")
-                        .data(data)
-                        .enter()
-                        .append("rect")
-                        .on("click", function(d, i){return scope.onClick({item: d});})
-                        .attr("height", 30) // height of each bar
-                        .attr("width", 0) // initial width of 0 for transition
-                        .attr("x", 10) // half of the 20 side margin specified above
-                        .attr("y", function(d, i){
-                            return i * 35;
-                        }) // height + margin between bars
-                        //.transition()
-                        //.duration(1000)
-                        .attr("width", function(d){
-                            var w = d.score/(max/width); // width based on scale
-                            return w > 10 ? w : 10;
-                        });
-
-                    svg.selectAll("text")
-                        .data(data)
-                        .enter()
-                        .append("text")
-                        .attr("fill", "#fff")
-                        .attr("y", function(d, i){return i * 35 + 22;})
-                        .attr("x", 15)
-                        .html(function(d){return d[scope.label];});
-
-                };
-            }
-        };
-    });
-
-})();

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/directives/gauge.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/directives/gauge.js b/web/demos/app/scripts/directives/gauge.js
deleted file mode 100644
index f3bc06f..0000000
--- a/web/demos/app/scripts/directives/gauge.js
+++ /dev/null
@@ -1,63 +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.
- */
-/**
- * Modified copy of https://github.com/lithiumtech/angular_and_d3/blob/master/step5/custom/gauges.js
- */
-
-/*global Gauge, angular, d3*/
-(function () {
-'use strict';
-
-    angular.module('widgets').directive( 'gauge', function () {
-        return {
-            restrict: 'A',
-            replace: true,
-            scope: {
-                label: "@",
-                min: "=",
-                max: "=",
-                value: "="
-            },
-            link: function (scope, element, attrs) {
-                var config = {
-                    size: 280,
-                    label: attrs.label,
-                    min: undefined !== scope.min ? scope.min : 0,
-                    max: undefined !== scope.max ? scope.max : 100,
-                    minorTicks: 5
-                };
-
-                var range = config.max - config.min;
-                config.yellowZones = [ { from: config.min + range*0.75, to: config.min + range*0.9 } ];
-                config.redZones = [ { from: config.min + range*0.9, to: config.max } ];
-
-                scope.gauge = new Gauge( element[0], config );
-                scope.gauge.render();
-                scope.gauge.redraw( scope.value );
-
-                scope.$watch('value', function() {
-                    if (scope.gauge) {
-                        scope.gauge.redraw( scope.value );
-                    }
-                });
-            }
-        };
-    });
-
-})();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/directives/lineChart.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/directives/lineChart.js b/web/demos/app/scripts/directives/lineChart.js
deleted file mode 100644
index 5ff3310..0000000
--- a/web/demos/app/scripts/directives/lineChart.js
+++ /dev/null
@@ -1,75 +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.
- */
-/*global angular, google*/
-(function () {
-'use strict';
-
-angular.module('widgets')
-  .directive('lineChart', function () {
-    return {
-      template: '<div></div>',
-      scope: {
-        chart: '='
-      },
-      restrict: 'E',
-      replace: true,
-      link: function postLink(scope, element, attrs) {
-        var lineChart = new google.visualization.LineChart(element[0]);
-
-        function draw(chart) {
-          var data = chart.data;
-
-          if (!data) {
-            data = [];
-          }
-
-          var table = new google.visualization.DataTable();
-          table.addColumn('datetime');
-          table.addColumn('number');
-          table.addRows(data.length);
-
-          var view = new google.visualization.DataView(table);
-
-          for (var i = 0; i < data.length; i++) {
-            var item = data[i];
-            table.setCell(i, 0, new Date(item.timestamp));
-            var value = parseFloat(item.value);
-            table.setCell(i, 1, value);
-          }
-
-          var options;
-          if (data.length === 0 && chart.emptyChartOptions) {
-            options = chart.emptyChartOptions();
-          } else {
-            options = chart.options;
-          }
-
-          lineChart.draw(view, options);
-        }
-
-        scope.$watch('chart', function (chart) {
-          if (chart) {
-            draw(chart);
-          }
-        });
-      }
-    };
-  });
-
-})();

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/directives/stat.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/directives/stat.js b/web/demos/app/scripts/directives/stat.js
deleted file mode 100644
index c0b6dc4..0000000
--- a/web/demos/app/scripts/directives/stat.js
+++ /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.
- */
-/*global BigInteger, angular, _*/
-(function () {
-'use strict';
-
-angular.module('widgets')
-    .directive('widgetsStat', ['$timeout', 'socket', function ($timeout, socket) {
-        return {
-            restrict: 'A',
-            templateUrl: 'views/stat.html',
-            scope: {
-                app: "=",
-                label: "@",
-                onClick: "&"
-            },
-            link: function($scope, iElement, iAttrs) {
-                $scope.totalEmitted = 0;
-                $scope.totalProcessed = 0;
-                $scope.elapsed = 0;
-
-                var initialElapsedTime;
-                var startTime;
-
-                function updatedElapsedTime() {
-                    $scope.elapsed = initialElapsedTime + (Date.now() - startTime);
-                    $timeout(updatedElapsedTime, 1000);
-                }
-
-                $scope.$watch('app', function (app) {
-                    if (app) {
-                        initialElapsedTime = parseInt(app.elapsedTime);
-                        startTime = Date.now();
-                        updatedElapsedTime();
-
-                        var topic = 'applications.' + app.id;
-
-                        socket.subscribe(topic, function (message) {
-                            var appData = message.data;
-                            $scope.totalEmitted = appData.tuplesEmittedPSMA;
-                            $scope.totalProcessed = appData.totalTuplesProcessed;
-                            $scope.$apply();
-                        }, $scope);
-                    }
-                });
-            }
-        };
-    }]);
-
-})();

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/filters/elapsed.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/filters/elapsed.js b/web/demos/app/scripts/filters/elapsed.js
deleted file mode 100644
index f52c97e..0000000
--- a/web/demos/app/scripts/filters/elapsed.js
+++ /dev/null
@@ -1,105 +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.
- */
-/*global angular, _*/
-(function () {
-'use strict';
-
-angular.module('widgets').filter('elapsed', function() {
-    return function(timeStamp) {
-        var options = { timeChunk: timeStamp * 1, unixUptime: true };
-
-        _.defaults(options, {
-            compareDate: +new Date(),
-            timeChunk: undefined,
-            maxUnit: "year",
-            unixUptime: false,
-            max_levels: 3,
-            timeStamp: timeStamp || 0
-        });
-        var remaining = (options.timeChunk !== undefined) ? options.timeChunk : options.compareDate - options.timeStamp;
-        var string = "";
-        var separator = ", ";
-        var level = 0;
-        var max_levels = options.max_levels;
-        var milli_per_second = 1000;
-        var milli_per_minute = milli_per_second * 60;
-        var milli_per_hour = milli_per_minute * 60;
-        var milli_per_day = milli_per_hour * 24;
-        var milli_per_week = milli_per_day * 7;
-        var milli_per_month = milli_per_week * 4;
-        var milli_per_year = milli_per_day * 365;
-
-        if (options.unixUptime) {
-            var days = Math.floor(remaining / milli_per_day);
-            remaining -= days*milli_per_day;
-            var hours = Math.floor(remaining / milli_per_hour);
-            remaining -= hours*milli_per_hour;
-            var minutes = Math.round(remaining / milli_per_minute);
-
-            if (days === 0) {
-                minutes = Math.floor(remaining / milli_per_minute);
-                remaining -= minutes*milli_per_minute;
-                var seconds = Math.round(remaining / 1000);
-                string = (hours < 10 ? "0" : "")+hours+':'+(minutes < 10 ? "0" : "")+minutes+':'+(seconds < 10 ? "0" : "")+seconds;
-            }
-            else {
-                string = days + " days, " + hours.toString() + ":" + (minutes < 10 ? "0" : "") + minutes.toString();
-            }
-
-        } else {
-            var levels = [
-                { plural: "years", singular: "year", ms: milli_per_year },
-                { plural: "months", singular: "month", ms: milli_per_month },
-                { plural: "weeks", singular: "week", ms: milli_per_week },
-                { plural: "days", singular: "day", ms: milli_per_day },
-                { plural: "hours", singular: "hour", ms: milli_per_hour },
-                { plural: "minutes", singular: "minute", ms: milli_per_minute },
-                { plural: "seconds", singular: "second", ms: milli_per_second }
-            ];
-
-            var crossedThreshold = false;
-            for (var i=0; i < levels.length; i++) {
-                if ( options.maxUnit === levels[i].singular ) {
-                    crossedThreshold = true;
-                }
-                if ( remaining < levels[i].ms || !crossedThreshold ) {
-                    continue;
-                }
-                level++;
-                var num = Math.floor( remaining / levels[i].ms );
-                var label = num === 1 ? levels[i].singular : levels[i].plural ;
-                string += num + " " + label + separator;
-                remaining %= levels[i].ms;
-                if ( level >= max_levels ) {
-                    break;
-                }
-            }
-            string = string.substring(0, string.length - separator.length);
-        }
-
-
-        return string;
-    };
-});
-
-})();
-
-
-    
-    
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/services/rest.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/services/rest.js b/web/demos/app/scripts/services/rest.js
deleted file mode 100644
index 7e1ef01..0000000
--- a/web/demos/app/scripts/services/rest.js
+++ /dev/null
@@ -1,95 +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.
- */
-/*global angular, jQuery, _*/
-(function () {
-'use strict';
-
-angular.module('rest', ['ng', 'restangular'])
-    .factory('rest', ['$q', 'Restangular', function($q, Restangular) {
-        return {
-            getApp: function (appName) {
-                var deferred = $q.defer();
-                Restangular.oneUrl('applications', 'ws/v2/applications').get().then(function (response) {
-                    var errorMessage = null;
-                    if (response && response.apps && response.apps.length > 0) {
-                        var apps = _.where(response.apps, { name: appName, state: 'RUNNING' });
-                        if (apps.length > 0) {
-                            apps = _.sortBy(apps, function (app) { return parseInt(app.elapsedTime, 10); });
-                            var app = apps[0];
-                            deferred.resolve(app);
-                        } else {
-                            errorMessage = appName + ' is not found. Please make sure application is running.';
-                        }
-                    } else {
-                        errorMessage = 'No applications available.';
-                    }
-
-                    if (errorMessage) {
-                        deferred.reject(errorMessage);
-                        jQuery.pnotify({
-                            title: 'Error',
-                            text: errorMessage,
-                            type: 'error',
-                            icon: false,
-                            hide: false
-                        });
-                    }
-                });
-
-                return deferred.promise;
-            },
-
-            getMachineData: function (query) {
-                var promise = Restangular.one('machine').get(query);
-
-                promise.then(null, function (response) {
-                  jQuery.pnotify({
-                    title: 'Error',
-                    text: 'Error getting data from server. Status Code: ' + response.status,
-                    type: 'error',
-                    icon: false,
-                    hide: false
-                  });
-                });
-
-                return promise;
-            },
-
-          getDimensionsData: function (query) {
-            var promise = Restangular.one('dimensions').get(query);
-
-            promise.then(null, function (response) {
-              jQuery.pnotify({
-                title: 'Error',
-                text: 'Error getting data from server. Status Code: ' + response.status,
-                type: 'error',
-                icon: false,
-                hide: false
-              });
-            });
-
-            return promise;
-          }
-        };
-    }])
-    .run(function(Restangular) {
-        //Restangular.setBaseUrl('/ws/v1');
-        //Restangular.setBaseUrl('/stram/v1');
-    });
-})();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/services/socket.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/services/socket.js b/web/demos/app/scripts/services/socket.js
deleted file mode 100644
index 1dc16a0..0000000
--- a/web/demos/app/scripts/services/socket.js
+++ /dev/null
@@ -1,187 +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.
- */
-/*global settings, console, angular, jQuery, _*/
-(function () {
-  'use strict';
-
-  angular.module('socket', [])
-    .factory('visibly', function ($window) {
-      return $window.visibly;
-    })
-    .provider('socket', function () {
-
-      var webSocketURL;
-      var webSocketObject; // for testing only
-
-      return {
-        $get: function ($q, $rootScope, $timeout, visibly) {
-          if (!webSocketURL && !webSocketObject) {
-            throw 'WebSocket URL is not defined';
-          }
-
-          var socket = !webSocketObject ? new WebSocket(webSocketURL) : webSocketObject;
-
-          var deferred = $q.defer();
-
-          socket.onopen = function () {
-            deferred.resolve();
-            $rootScope.$apply();
-
-            jQuery.pnotify({
-              title: 'WebSocket',
-              text: 'WebSocket connection established.',
-              type: 'success',
-              delay: 2000,
-              icon: false,
-              history: false
-            });
-          };
-
-          var webSocketError = false;
-
-          socket.onclose = function () {
-            if (!webSocketError) {
-              jQuery.pnotify({
-                title: 'WebSocket Closed',
-                text: 'WebSocket connection has been closed. Try refreshing the page.',
-                type: 'error',
-                icon: false,
-                hide: false,
-                history: false
-              });
-            }
-          };
-
-          //TODO
-          socket.onerror = function () {
-            webSocketError = true;
-            jQuery.pnotify({
-              title: 'WebSocket Error',
-              text: 'WebSocket error. Try refreshing the page.',
-              type: 'error',
-              icon: false,
-              hide: false,
-              history: false
-            });
-          };
-
-          var topicMap = {}; // topic -> [callbacks] mapping
-
-          var stopUpdates = false;
-
-          socket.onmessage = function (event) {
-            if (stopUpdates) { // stop updates if page is inactive
-              return;
-            }
-
-            var message = JSON.parse(event.data);
-
-            var topic = message.topic;
-
-            if (topicMap.hasOwnProperty(topic)) {
-              topicMap[topic].fire(message);
-            }
-          };
-
-          var timeoutPromise;
-
-          visibly.onHidden(function () {
-            timeoutPromise = $timeout(function () {
-              stopUpdates = true;
-              timeoutPromise = null;
-            }, 60000);
-          });
-
-          visibly.onVisible(function () {
-            /*
-            if (stopUpdates && !webSocketError) {
-              jQuery.pnotify({
-                title: 'Warning',
-                text: 'Page has not been visible for more than 60 seconds. WebSocket real-time updates have been suspended to conserve system resources. ' +
-                  'Refreshing the page is recommended.',
-                type: 'warning',
-                icon: false,
-                hide: false,
-                history: false
-              });
-            }
-            */
-
-            stopUpdates = false;
-
-            if (timeoutPromise) {
-              $timeout.cancel(timeoutPromise);
-            }
-          });
-
-          return {
-            send: function (message) {
-              var msg = JSON.stringify(message);
-
-              deferred.promise.then(function () {
-                console.log('send ' + msg);
-                socket.send(msg);
-              });
-            },
-
-            publish: function(topic, data) {
-              var message = { "type": "publish", "topic": topic, "data": data };
-              this.send(message);
-            },
-
-            subscribe: function (topic, callback, $scope) {
-              var callbacks = topicMap[topic];
-
-              if (!callbacks) {
-                var message = { type: 'subscribe', topic: topic }; // subscribe message
-                this.send(message);
-
-                callbacks = jQuery.Callbacks();
-                topicMap[topic] = callbacks;
-              }
-
-              callbacks.add(callback);
-
-              if ($scope) {
-                $scope.$on('$destroy', function () {
-                  this.unsubscribe(topic, callback);
-                }.bind(this));
-              }
-            },
-
-            unsubscribe: function (topic, callback) {
-              if (topicMap.hasOwnProperty(topic)) {
-                var callbacks = topicMap[topic];
-                callbacks.remove(callback); //TODO remove topic from topicMap if callbacks is empty
-              }
-            }
-          };
-        },
-
-        setWebSocketURL: function (wsURL) {
-          webSocketURL = wsURL;
-        },
-
-        setWebSocketObject: function (wsObject) {
-          webSocketObject = wsObject;
-        }
-      };
-    });
-
-})();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/vendor/angular-google-maps.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/vendor/angular-google-maps.js b/web/demos/app/scripts/vendor/angular-google-maps.js
deleted file mode 100644
index e74ba38..0000000
--- a/web/demos/app/scripts/vendor/angular-google-maps.js
+++ /dev/null
@@ -1,584 +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.
- */
-/**
- * Modified copy (using MarkerWithLabel instead of google.maps.Marker).
- */
-
-/**!
- * The MIT License
- *
- * Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * angular-google-maps
- * https://github.com/nlaplante/angular-google-maps
- *
- * @author Nicolas Laplante https://plus.google.com/108189012221374960701
- */
-
-(function () {
-
-    "use strict";
-
-    /*
-     * Utility functions
-     */
-
-    /**
-     * Check if 2 floating point numbers are equal
-     *
-     * @see http://stackoverflow.com/a/588014
-     */
-    function floatEqual (f1, f2) {
-        return (Math.abs(f1 - f2) < 0.000001);
-    }
-
-    /*
-     * Create the model in a self-contained class where map-specific logic is
-     * done. This model will be used in the directive.
-     */
-
-    var MapModel = (function () {
-
-        var _defaults = {
-            zoom: 8,
-            draggable: false,
-            container: null
-        };
-
-        /**
-         *
-         */
-        function PrivateMapModel(opts) {
-
-            var _instance = null,
-                _markers = [],  // caches the instances of google.maps.Marker
-                _handlers = [], // event handlers
-                _windows = [],  // InfoWindow objects
-                o = angular.extend({}, _defaults, opts),
-                that = this,
-                currentInfoWindow = null;
-
-            this.center = opts.center;
-            this.zoom = o.zoom;
-            this.draggable = o.draggable;
-            this.dragging = false;
-            this.selector = o.container;
-            this.markers = [];
-            this.options = o.options;
-
-            this.draw = function () {
-
-                if (that.center == null) {
-                    // TODO log error
-                    return;
-                }
-
-                if (_instance == null) {
-
-                    // Create a new map instance
-
-                    _instance = new google.maps.Map(that.selector, angular.extend(that.options, {
-                        center: that.center,
-                        zoom: that.zoom,
-                        draggable: that.draggable,
-                        mapTypeId : google.maps.MapTypeId.ROADMAP
-                    }));
-
-                    google.maps.event.addListener(_instance, "dragstart",
-
-                        function () {
-                            that.dragging = true;
-                        }
-                    );
-
-                    google.maps.event.addListener(_instance, "idle",
-
-                        function () {
-                            that.dragging = false;
-                        }
-                    );
-
-                    google.maps.event.addListener(_instance, "drag",
-
-                        function () {
-                            that.dragging = true;
-                        }
-                    );
-
-                    google.maps.event.addListener(_instance, "zoom_changed",
-
-                        function () {
-                            that.zoom = _instance.getZoom();
-                            that.center = _instance.getCenter();
-                        }
-                    );
-
-                    google.maps.event.addListener(_instance, "center_changed",
-
-                        function () {
-                            that.center = _instance.getCenter();
-                        }
-                    );
-
-                    // Attach additional event listeners if needed
-                    if (_handlers.length) {
-
-                        angular.forEach(_handlers, function (h, i) {
-
-                            google.maps.event.addListener(_instance,
-                                h.on, h.handler);
-                        });
-                    }
-                }
-                else {
-
-                    // Refresh the existing instance
-                    google.maps.event.trigger(_instance, "resize");
-
-                    var instanceCenter = _instance.getCenter();
-
-                    if (!floatEqual(instanceCenter.lat(), that.center.lat())
-                        || !floatEqual(instanceCenter.lng(), that.center.lng())) {
-                        _instance.setCenter(that.center);
-                    }
-
-                    if (_instance.getZoom() != that.zoom) {
-                        _instance.setZoom(that.zoom);
-                    }
-                }
-            };
-
-            this.fit = function () {
-                if (_instance && _markers.length) {
-
-                    var bounds = new google.maps.LatLngBounds();
-
-                    angular.forEach(_markers, function (m, i) {
-                        bounds.extend(m.getPosition());
-                    });
-
-                    _instance.fitBounds(bounds);
-                }
-            };
-
-            this.on = function(event, handler) {
-                _handlers.push({
-                    "on": event,
-                    "handler": handler
-                });
-            };
-
-            this.addMarker = function (lat, lng, icon, infoWindowContent, label, url,
-                                       thumbnail) {
-
-                if (that.findMarker(lat, lng) != null) {
-                    return;
-                }
-
-                var marker = new MarkerWithLabel({
-                    position: new google.maps.LatLng(lat, lng),
-                    draggable: false,
-                    raiseOnDrag: true,
-                    map: _instance,
-                    labelContent: label,
-                    labelAnchor: new google.maps.Point(25, 0),
-                    labelClass: "marker-label", // the CSS class for the label
-                    labelStyle: {opacity: 1.0}
-                });
-
-                /*
-                var marker = new google.maps.Marker({
-                    position: new google.maps.LatLng(lat, lng),
-                    map: _instance,
-                    icon: icon
-                });
-                */
-
-                if (label) {
-
-                }
-
-                if (url) {
-
-                }
-
-                if (infoWindowContent != null) {
-                    var infoWindow = new google.maps.InfoWindow({
-                        content: infoWindowContent
-                    });
-
-                    google.maps.event.addListener(marker, 'click', function() {
-                        if (currentInfoWindow != null) {
-                            currentInfoWindow.close();
-                        }
-                        infoWindow.open(_instance, marker);
-                        currentInfoWindow = infoWindow;
-                    });
-                }
-
-                // Cache marker
-                _markers.unshift(marker);
-
-                // Cache instance of our marker for scope purposes
-                that.markers.unshift({
-                    "lat": lat,
-                    "lng": lng,
-                    "draggable": false,
-                    "icon": icon,
-                    "infoWindowContent": infoWindowContent,
-                    "label": label,
-                    "url": url,
-                    "thumbnail": thumbnail
-                });
-
-                // Return marker instance
-                return marker;
-            };
-
-            this.findMarker = function (lat, lng) {
-                for (var i = 0; i < _markers.length; i++) {
-                    var pos = _markers[i].getPosition();
-
-                    if (floatEqual(pos.lat(), lat) && floatEqual(pos.lng(), lng)) {
-                        return _markers[i];
-                    }
-                }
-
-                return null;
-            };
-
-            this.findMarkerIndex = function (lat, lng) {
-                for (var i = 0; i < _markers.length; i++) {
-                    var pos = _markers[i].getPosition();
-
-                    if (floatEqual(pos.lat(), lat) && floatEqual(pos.lng(), lng)) {
-                        return i;
-                    }
-                }
-
-                return -1;
-            };
-
-            this.addInfoWindow = function (lat, lng, html) {
-                var win = new google.maps.InfoWindow({
-                    content: html,
-                    position: new google.maps.LatLng(lat, lng)
-                });
-
-                _windows.push(win);
-
-                return win;
-            };
-
-            this.hasMarker = function (lat, lng) {
-                return that.findMarker(lat, lng) !== null;
-            };
-
-            this.getMarkerInstances = function () {
-                return _markers;
-            };
-
-            this.removeMarkers = function (markerInstances) {
-
-                var s = this;
-
-                angular.forEach(markerInstances, function (v, i) {
-                    var pos = v.getPosition(),
-                        lat = pos.lat(),
-                        lng = pos.lng(),
-                        index = s.findMarkerIndex(lat, lng);
-
-                    // Remove from local arrays
-                    _markers.splice(index, 1);
-                    s.markers.splice(index, 1);
-
-                    // Remove from map
-                    v.setMap(null);
-                });
-            };
-        }
-
-        // Done
-        return PrivateMapModel;
-    }());
-
-    // End model
-
-    // Start Angular directive
-
-    var googleMapsModule = angular.module("google-maps", []);
-
-    /**
-     * Map directive
-     */
-    googleMapsModule.directive("googleMap", ["$log", "$timeout", "$filter", function ($log, $timeout,
-                                                                                      $filter) {
-
-        var controller = function ($scope, $element) {
-
-            var _m = $scope.map;
-
-            self.addInfoWindow = function (lat, lng, content) {
-                _m.addInfoWindow(lat, lng, content);
-            };
-        };
-
-        controller.$inject = ['$scope', '$element'];
-
-        return {
-            restrict: "ECA",
-            priority: 100,
-            transclude: true,
-            template: "<div class='angular-google-map' ng-transclude></div>",
-            replace: false,
-            scope: {
-                center: "=center", // required
-                markers: "=markers", // optional
-                latitude: "=latitude", // required
-                longitude: "=longitude", // required
-                zoom: "=zoom", // required
-                refresh: "&refresh", // optional
-                windows: "=windows", // optional
-                events: "=events"
-            },
-            controller: controller,
-            link: function (scope, element, attrs, ctrl) {
-
-                // Center property must be specified and provide lat &
-                // lng properties
-                if (!angular.isDefined(scope.center) ||
-                    (!angular.isDefined(scope.center.latitude) ||
-                        !angular.isDefined(scope.center.longitude))) {
-
-                    $log.error("angular-google-maps: could not find a valid center property");
-                    return;
-                }
-
-                if (!angular.isDefined(scope.zoom)) {
-                    $log.error("angular-google-maps: map zoom property not set");
-                    return;
-                }
-
-                angular.element(element).addClass("angular-google-map");
-
-                // Parse options
-                var opts = {options: {}};
-                if (attrs.options) {
-                    opts.options = angular.fromJson(attrs.options);
-                }
-
-                // Create our model
-                var _m = new MapModel(angular.extend(opts, {
-                    container: element[0],
-                    center: new google.maps.LatLng(scope.center.latitude, scope.center.longitude),
-                    draggable: attrs.draggable == "true",
-                    zoom: scope.zoom
-                }));
-
-                _m.on("drag", function () {
-
-                    var c = _m.center;
-
-                    $timeout(function () {
-
-                        scope.$apply(function (s) {
-                            scope.center.latitude = c.lat();
-                            scope.center.longitude = c.lng();
-                        });
-                    });
-                });
-
-                _m.on("zoom_changed", function () {
-
-                    if (scope.zoom != _m.zoom) {
-
-                        $timeout(function () {
-
-                            scope.$apply(function (s) {
-                                scope.zoom = _m.zoom;
-                            });
-                        });
-                    }
-                });
-
-                _m.on("center_changed", function () {
-                    var c = _m.center;
-
-                    $timeout(function () {
-
-                        scope.$apply(function (s) {
-
-                            if (!_m.dragging) {
-                                scope.center.latitude = c.lat();
-                                scope.center.longitude = c.lng();
-                            }
-                        });
-                    });
-                });
-
-                if (angular.isDefined(scope.events)) {
-                    for (var eventName in scope.events) {
-                        if (scope.events.hasOwnProperty(eventName) && angular.isFunction(scope.events[eventName])) {
-                            _m.on(eventName, function () {
-                                scope.events[eventName].apply(scope, [_m, eventName, arguments]);
-                            });
-                        }
-                    }
-                }
-
-                if (attrs.markClick == "true") {
-                    (function () {
-                        var cm = null;
-
-                        _m.on("click", function (e) {
-                            if (cm == null) {
-
-                                cm = {
-                                    latitude: e.latLng.lat(),
-                                    longitude: e.latLng.lng()
-                                };
-
-                                scope.markers.push(cm);
-                            }
-                            else {
-                                cm.latitude = e.latLng.lat();
-                                cm.longitude = e.latLng.lng();
-                            }
-
-
-                            $timeout(function () {
-                                scope.latitude = cm.latitude;
-                                scope.longitude = cm.longitude;
-                                scope.$apply();
-                            });
-                        });
-                    }());
-                }
-
-                // Put the map into the scope
-                scope.map = _m;
-
-                // Check if we need to refresh the map
-                if (angular.isUndefined(scope.refresh())) {
-                    // No refresh property given; draw the map immediately
-                    _m.draw();
-                }
-                else {
-                    scope.$watch("refresh()", function (newValue, oldValue) {
-                        if (newValue && !oldValue) {
-                            _m.draw();
-                        }
-                    });
-                }
-
-                // Markers
-                scope.$watch("markers", function (newValue, oldValue) {
-
-                    $timeout(function () {
-
-                        angular.forEach(newValue, function (v, i) {
-                            if (!_m.hasMarker(v.latitude, v.longitude)) {
-                                _m.addMarker(v.latitude, v.longitude, v.icon, v.infoWindow, v.label);
-                            }
-                        });
-
-                        // Clear orphaned markers
-                        var orphaned = [];
-
-                        angular.forEach(_m.getMarkerInstances(), function (v, i) {
-                            // Check our scope if a marker with equal latitude and longitude.
-                            // If not found, then that marker has been removed form the scope.
-
-                            var pos = v.getPosition(),
-                                lat = pos.lat(),
-                                lng = pos.lng(),
-                                found = false;
-
-                            // Test against each marker in the scope
-                            for (var si = 0; si < scope.markers.length; si++) {
-
-                                var sm = scope.markers[si];
-
-                                if (floatEqual(sm.latitude, lat) && floatEqual(sm.longitude, lng)) {
-                                    // Map marker is present in scope too, don't remove
-                                    found = true;
-                                }
-                            }
-
-                            // Marker in map has not been found in scope. Remove.
-                            if (!found) {
-                                orphaned.push(v);
-                            }
-                        });
-
-                        orphaned.length && _m.removeMarkers(orphaned);
-
-                        // Fit map when there are more than one marker.
-                        // This will change the map center coordinates
-                        if (attrs.fit == "true" && newValue && newValue.length > 1) {
-                            _m.fit();
-                        }
-                    });
-
-                }, true);
-
-
-                // Update map when center coordinates change
-                scope.$watch("center", function (newValue, oldValue) {
-                    if (newValue === oldValue) {
-                        return;
-                    }
-
-                    if (!_m.dragging) {
-                        _m.center = new google.maps.LatLng(newValue.latitude,
-                            newValue.longitude);
-                        _m.draw();
-                    }
-                }, true);
-
-                scope.$watch("zoom", function (newValue, oldValue) {
-                    if (newValue === oldValue) {
-                        return;
-                    }
-
-                    _m.zoom = newValue;
-                    _m.draw();
-                });
-            }
-        };
-    }]);
-}());
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/vendor/gauge.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/vendor/gauge.js b/web/demos/app/scripts/vendor/gauge.js
deleted file mode 100644
index edf6d9b..0000000
--- a/web/demos/app/scripts/vendor/gauge.js
+++ /dev/null
@@ -1,283 +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.
- */
-/**
- * Copied from https://github.com/lithiumtech/angular_and_d3
- */
-
-function Gauge(element, configuration)
-{
-	this.element = element;
-
-	var self = this; // for internal d3 functions
-
-	this.configure = function(configuration)
-	{
-		this.config = configuration;
-
-		this.config.size = this.config.size * 0.9;
-
-		this.config.raduis = this.config.size * 0.97 / 2;
-		this.config.cx = this.config.size / 2;
-		this.config.cy = this.config.size / 2;
-
-		this.config.min = undefined != configuration.min ? configuration.min : 0;
-		this.config.max = undefined != configuration.max ? configuration.max : 100;
-		this.config.range = this.config.max - this.config.min;
-
-		this.config.majorTicks = configuration.majorTicks || 5;
-		this.config.minorTicks = configuration.minorTicks || 2;
-
-		this.config.greenColor 	= configuration.greenColor || "#109618";
-		this.config.yellowColor = configuration.yellowColor || "#FF9900";
-		this.config.redColor 	= configuration.redColor || "#DC3912";
-
-		this.config.transitionDuration = configuration.transitionDuration || 500;
-	}
-
-	this.render = function()
-	{
-		this.body = d3.select( this.element )
-							.append("svg:svg")
-							.attr("class", "gauge")
-							.attr("width", this.config.size)
-							.attr("height", this.config.size);
-
-		this.body.append("svg:circle")
-					.attr("cx", this.config.cx)
-					.attr("cy", this.config.cy)
-					.attr("r", this.config.raduis)
-					.style("fill", "#ccc")
-					.style("stroke", "#000")
-					.style("stroke-width", "0.5px");
-
-		this.body.append("svg:circle")
-					.attr("cx", this.config.cx)
-					.attr("cy", this.config.cy)
-					.attr("r", 0.9 * this.config.raduis)
-					.style("fill", "#fff")
-					.style("stroke", "#e0e0e0")
-					.style("stroke-width", "2px");
-
-		for (var index in this.config.greenZones)
-		{
-			this.drawBand(this.config.greenZones[index].from, this.config.greenZones[index].to, self.config.greenColor);
-		}
-
-		for (var index in this.config.yellowZones)
-		{
-			this.drawBand(this.config.yellowZones[index].from, this.config.yellowZones[index].to, self.config.yellowColor);
-		}
-
-		for (var index in this.config.redZones)
-		{
-			this.drawBand(this.config.redZones[index].from, this.config.redZones[index].to, self.config.redColor);
-		}
-
-		if (undefined != this.config.label)
-		{
-			var fontSize = Math.round(this.config.size / 9);
-			this.body.append("svg:text")
-						.attr("x", this.config.cx)
-						.attr("y", this.config.cy / 2 + fontSize / 2)
-						.attr("dy", fontSize / 2)
-						.attr("text-anchor", "middle")
-						.text(this.config.label)
-						.style("font-size", fontSize + "px")
-						.style("fill", "#333")
-						.style("stroke-width", "0px");
-		}
-
-		var fontSize = Math.round(this.config.size / 16);
-		var majorDelta = this.config.range / (this.config.majorTicks - 1);
-		for (var major = this.config.min; major <= this.config.max; major += majorDelta)
-		{
-			var minorDelta = majorDelta / this.config.minorTicks;
-			for (var minor = major + minorDelta; minor < Math.min(major + majorDelta, this.config.max); minor += minorDelta)
-			{
-				var point1 = this.valueToPoint(minor, 0.75);
-				var point2 = this.valueToPoint(minor, 0.85);
-
-				this.body.append("svg:line")
-							.attr("x1", point1.x)
-							.attr("y1", point1.y)
-							.attr("x2", point2.x)
-							.attr("y2", point2.y)
-							.style("stroke", "#666")
-							.style("stroke-width", "1px");
-			}
-
-			var point1 = this.valueToPoint(major, 0.7);
-			var point2 = this.valueToPoint(major, 0.85);
-
-			this.body.append("svg:line")
-						.attr("x1", point1.x)
-						.attr("y1", point1.y)
-						.attr("x2", point2.x)
-						.attr("y2", point2.y)
-						.style("stroke", "#333")
-						.style("stroke-width", "2px");
-
-			if (major == this.config.min || major == this.config.max)
-			{
-				var point = this.valueToPoint(major, 0.63);
-
-				this.body.append("svg:text")
-				 			.attr("x", point.x)
-				 			.attr("y", point.y)
-				 			.attr("dy", fontSize / 3)
-				 			.attr("text-anchor", major == this.config.min ? "start" : "end")
-				 			.text(major)
-				 			.style("font-size", fontSize + "px")
-							.style("fill", "#333")
-							.style("stroke-width", "0px");
-			}
-		}
-
-		var pointerContainer = this.body.append("svg:g").attr("class", "pointerContainer");
-
-		var midValue = (this.config.min + this.config.max) / 2;
-
-		var pointerPath = this.buildPointerPath(midValue);
-
-		var pointerLine = d3.svg.line()
-									.x(function(d) { return d.x })
-									.y(function(d) { return d.y })
-									.interpolate("basis");
-
-		pointerContainer.selectAll("path")
-							.data([pointerPath])
-							.enter()
-								.append("svg:path")
-									.attr("d", pointerLine)
-									.style("fill", "#dc3912")
-									.style("stroke", "#c63310")
-									.style("fill-opacity", 0.7)
-
-		pointerContainer.append("svg:circle")
-							.attr("cx", this.config.cx)
-							.attr("cy", this.config.cy)
-							.attr("r", 0.12 * this.config.raduis)
-							.style("fill", "#4684EE")
-							.style("stroke", "#666")
-							.style("opacity", 1);
-
-		var fontSize = Math.round(this.config.size / 10);
-		pointerContainer.selectAll("text")
-							.data([midValue])
-							.enter()
-								.append("svg:text")
-									.attr("x", this.config.cx)
-									.attr("y", this.config.size - this.config.cy / 4 - fontSize)
-									.attr("dy", fontSize / 2)
-									.attr("text-anchor", "middle")
-									.style("font-size", fontSize + "px")
-									.style("fill", "#000")
-									.style("stroke-width", "0px");
-
-		this.redraw(this.config.min, 0);
-	}
-
-	this.buildPointerPath = function(value)
-	{
-		var delta = this.config.range / 13;
-
-		var head = valueToPoint(value, 0.85);
-		var head1 = valueToPoint(value - delta, 0.12);
-		var head2 = valueToPoint(value + delta, 0.12);
-
-		var tailValue = value - (this.config.range * (1/(270/360)) / 2);
-		var tail = valueToPoint(tailValue, 0.28);
-		var tail1 = valueToPoint(tailValue - delta, 0.12);
-		var tail2 = valueToPoint(tailValue + delta, 0.12);
-
-		return [head, head1, tail2, tail, tail1, head2, head];
-
-		function valueToPoint(value, factor)
-		{
-			var point = self.valueToPoint(value, factor);
-			point.x -= self.config.cx;
-			point.y -= self.config.cy;
-			return point;
-		}
-	}
-
-	this.drawBand = function(start, end, color)
-	{
-		if (0 >= end - start) return;
-
-		this.body.append("svg:path")
-					.style("fill", color)
-					.attr("d", d3.svg.arc()
-						.startAngle(this.valueToRadians(start))
-						.endAngle(this.valueToRadians(end))
-						.innerRadius(0.65 * this.config.raduis)
-						.outerRadius(0.85 * this.config.raduis))
-					.attr("transform", function() { return "translate(" + self.config.cx + ", " + self.config.cy + ") rotate(270)" });
-	}
-
-	this.redraw = function(value, transitionDuration)
-	{
-		var pointerContainer = this.body.select(".pointerContainer");
-
-		pointerContainer.selectAll("text").text(Math.round(value));
-
-		var pointer = pointerContainer.selectAll("path");
-		pointer.transition()
-					.duration(undefined != transitionDuration ? transitionDuration : this.config.transitionDuration)
-					//.delay(0)
-					//.ease("linear")
-					//.attr("transform", function(d)
-					.attrTween("transform", function()
-					{
-						var pointerValue = value;
-						if (value > self.config.max) pointerValue = self.config.max + 0.02*self.config.range;
-						else if (value < self.config.min) pointerValue = self.config.min - 0.02*self.config.range;
-						var targetRotation = (self.valueToDegrees(pointerValue) - 90);
-						var currentRotation = self._currentRotation || targetRotation;
-						self._currentRotation = targetRotation;
-
-						return function(step)
-						{
-							var rotation = currentRotation + (targetRotation-currentRotation)*step;
-							return "translate(" + self.config.cx + ", " + self.config.cy + ") rotate(" + rotation + ")";
-						}
-					});
-	}
-
-	this.valueToDegrees = function(value)
-	{
-		// thanks @closealert
-		//return value / this.config.range * 270 - 45;
-		return value / this.config.range * 270 - (this.config.min / this.config.range * 270 + 45);
-	}
-
-	this.valueToRadians = function(value)
-	{
-		return this.valueToDegrees(value) * Math.PI / 180;
-	}
-
-	this.valueToPoint = function(value, factor)
-	{
-		return { 	x: this.config.cx - this.config.raduis * factor * Math.cos(this.valueToRadians(value)),
-					y: this.config.cy - this.config.raduis * factor * Math.sin(this.valueToRadians(value)) 		};
-	}
-
-	// initialization
-	this.configure(configuration);
-}
\ No newline at end of file


[26/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/middleware/jsonp-middleware.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/middleware/jsonp-middleware.js b/web/demos/package/node_modules/http-proxy/examples/middleware/jsonp-middleware.js
deleted file mode 100644
index 15ab9ee..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/middleware/jsonp-middleware.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var Store = require('../helpers/store')
-  , http = require('http')
-
-//
-// jsonp is a handy technique for getting around the limitations of the same-origin policy. 
-// (http://en.wikipedia.org/wiki/Same_origin_policy) 
-// 
-// normally, to dynamically update a page you use an XmlHttpRequest. this has flakey support 
-// is some browsers and is restricted by the same origin policy. you cannot perform XHR requests to
-// someone else's server. one way around this would be to proxy requests to all the servers you want
-// to xhr to, and your core server - so that everything has the same port and host.
-// 
-// another way, is to turn json into javascript. (which is exempt from the same origin policy) 
-// this is done by wrapping the json object in a function call, and then including a script tag.
-//
-// here we're proxing our own JSON returning server, but we could proxy any server on the internet,
-// and our client side app would be slurping down JSONP from anywhere.
-// 
-// curl localhost:1337/whatever?callback=alert
-// alert([]) //which is valid javascript!
-//
-// also see http://en.wikipedia.org/wiki/JSONP#JSONP
-//
-
-http.createServer(new Store().handler()).listen(7531)
-
-require('../../lib/node-http-proxy').createServer(
-  require('connect-jsonp')(true),
-  'localhost', 7531
-).listen(1337)

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/middleware/modifyResponse-middleware.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/middleware/modifyResponse-middleware.js b/web/demos/package/node_modules/http-proxy/examples/middleware/modifyResponse-middleware.js
deleted file mode 100644
index af21236..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/middleware/modifyResponse-middleware.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-  modifyBody-middleware.js: Example of middleware which modifies response
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, Marak Squires, & Dominic Tarr.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    colors = require('colors'),
-    http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-//
-// Basic Http Proxy Server
-//
-httpProxy.createServer(
-  function (req, res, next) {
-    var _write = res.write;
-
-    res.write = function (data) {
-      _write.call(res, data.toString().replace("Ruby", "nodejitsu"));
-    }
-    next();
-  },
-  9000, 'localhost'
-).listen(8000);
-
-//
-// Target Http Server
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.end('Hello, I know Ruby\n');
-}).listen(9000);
-
-util.puts('http proxy server'.blue + ' started '.green.bold + 'on port '.blue + '8000'.yellow);
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '9000 '.yellow);
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/middleware/url-middleware.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/middleware/url-middleware.js b/web/demos/package/node_modules/http-proxy/examples/middleware/url-middleware.js
deleted file mode 100644
index b4f3045..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/middleware/url-middleware.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  url-middleware.js: Example of a simple url routing middleware for node-http-proxy
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    colors = require('colors'),
-    http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-//
-// Now we set up our proxy.
-//
-httpProxy.createServer(
-  //
-  // This is where our middlewares go, with any options desired - in this case,
-  // the list of routes/URLs and their destinations.
-  //
-  require('proxy-by-url')({
-    '/hello': { port: 9000, host: 'localhost' },
-    '/charlie': { port: 80, host: 'charlieistheman.com' },
-    '/google': { port: 80, host: 'google.com' } 
-  })
-).listen(8000);
-
-//
-// Target Http Server (to listen for requests on 'localhost')
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000);
-
-// And finally, some colored startup output.
-util.puts('http proxy server'.blue + ' started '.green.bold + 'on port '.blue + '8000'.yellow);
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '9000 '.yellow);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/middleware/url-middleware2.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/middleware/url-middleware2.js b/web/demos/package/node_modules/http-proxy/examples/middleware/url-middleware2.js
deleted file mode 100644
index 2c894e1..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/middleware/url-middleware2.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var util = require('util'),
-    colors = require('colors'),
-    http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy'),
-    Store = require('../helpers/store') 
-
-http.createServer(new Store().handler()).listen(7531)
-
-// Now we set up our proxy.
-httpProxy.createServer(
-  // This is where our middlewares go, with any options desired - in this case,
-  // the list of routes/URLs and their destinations.
-  require('proxy-by-url')({
-    '/store': { port: 7531, host: 'localhost' },
-    '/': { port: 9000, host: 'localhost' }
-  })
-).listen(8000);
-
-//
-// Target Http Server (to listen for requests on 'localhost')
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000);
-
-// And finally, some colored startup output.
-util.puts('http proxy server'.blue + ' started '.green.bold + 'on port '.blue + '8000'.yellow);
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '9000 '.yellow);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/package.json b/web/demos/package/node_modules/http-proxy/examples/package.json
deleted file mode 100644
index ca95fd8..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/package.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "name": "http-proxy-examples", 
-  "description": "packages required to run the examples", 
-  "version": "0.0.0",
-  "dependencies": {
-    "connect": "1.6", 
-    "connect-gzip": "0.1",
-    "connect-jsonp": "0.0.5",
-    "connect-restreamer": "1",
-    "proxy-by-url": ">= 0.0.1"
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/websocket/latent-websocket-proxy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/websocket/latent-websocket-proxy.js b/web/demos/package/node_modules/http-proxy/examples/websocket/latent-websocket-proxy.js
deleted file mode 100644
index 99a0728..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/websocket/latent-websocket-proxy.js
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-  standalone-websocket-proxy.js: Example of proxying websockets over HTTP with a standalone HTTP server.
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    http = require('http'),
-    colors = require('colors'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-try {
-  var io = require('socket.io'),
-      client = require('socket.io-client');
-}
-catch (ex) {
-  console.error('Socket.io is required for this example:');
-  console.error('npm ' + 'install'.green);
-  process.exit(1);
-}
-
-//
-// Create the target HTTP server and setup
-// socket.io on it.
-//
-var server = io.listen(8080);
-server.sockets.on('connection', function (client) {
-  util.debug('Got websocket connection');
-
-  client.on('message', function (msg) {
-    util.debug('Got message from client: ' + msg);
-  });
-
-  client.send('from server');
-});
-
-//
-// Setup our server to proxy standard HTTP requests
-//
-var proxy = new httpProxy.HttpProxy({
-  target: {
-    host: 'localhost', 
-    port: 8080
-  }
-});
-
-var proxyServer = http.createServer(function (req, res) {
-  proxy.proxyRequest(req, res);
-});
-
-//
-// Listen to the `upgrade` event and proxy the 
-// WebSocket requests as well.
-//
-proxyServer.on('upgrade', function (req, socket, head) {
-  var buffer = httpProxy.buffer(socket);
-  
-  setTimeout(function () {
-    proxy.proxyWebSocketRequest(req, socket, head, buffer);
-  }, 1000);
-});
-
-proxyServer.listen(8081);
-
-//
-// Setup the socket.io client against our proxy
-//
-var ws = client.connect('ws://localhost:8081');
-
-ws.on('message', function (msg) {
-  util.debug('Got message: ' + msg);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/websocket/standalone-websocket-proxy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/websocket/standalone-websocket-proxy.js b/web/demos/package/node_modules/http-proxy/examples/websocket/standalone-websocket-proxy.js
deleted file mode 100644
index acf43b9..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/websocket/standalone-websocket-proxy.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-  standalone-websocket-proxy.js: Example of proxying websockets over HTTP with a standalone HTTP server.
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    http = require('http'),
-    colors = require('colors'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-try {
-  var io = require('socket.io'),
-      client = require('socket.io-client');
-}
-catch (ex) {
-  console.error('Socket.io is required for this example:');
-  console.error('npm ' + 'install'.green);
-  process.exit(1);
-}
-
-//
-// Create the target HTTP server and setup
-// socket.io on it.
-//
-var server = io.listen(8080);
-server.sockets.on('connection', function (client) {
-  util.debug('Got websocket connection');
-
-  client.on('message', function (msg) {
-    util.debug('Got message from client: ' + msg);
-  });
-
-  client.send('from server');
-});
-
-//
-// Setup our server to proxy standard HTTP requests
-//
-var proxy = new httpProxy.HttpProxy({
-  target: {
-    host: 'localhost', 
-    port: 8080
-  }
-});
-var proxyServer = http.createServer(function (req, res) {
-  proxy.proxyRequest(req, res);
-});
-
-//
-// Listen to the `upgrade` event and proxy the 
-// WebSocket requests as well.
-//
-proxyServer.on('upgrade', function (req, socket, head) {
-  proxy.proxyWebSocketRequest(req, socket, head);
-});
-
-proxyServer.listen(8081);
-
-//
-// Setup the socket.io client against our proxy
-//
-var ws = client.connect('ws://localhost:8081');
-
-ws.on('message', function (msg) {
-  util.debug('Got message: ' + msg);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/websocket/websocket-proxy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/websocket/websocket-proxy.js b/web/demos/package/node_modules/http-proxy/examples/websocket/websocket-proxy.js
deleted file mode 100644
index 4e3cf6f..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/websocket/websocket-proxy.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-  web-socket-proxy.js: Example of proxying over HTTP and WebSockets.
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    http = require('http'),
-    colors = require('colors'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-try {
-  var io = require('socket.io'),
-      client = require('socket.io-client');
-}
-catch (ex) {
-  console.error('Socket.io is required for this example:');
-  console.error('npm ' + 'install'.green);
-  process.exit(1);
-}
-
-//
-// Create the target HTTP server and setup
-// socket.io on it.
-//
-var server = io.listen(8080);
-server.sockets.on('connection', function (client) {
-  util.debug('Got websocket connection');
-
-  client.on('message', function (msg) {
-    util.debug('Got message from client: ' + msg);
-  });
-
-  client.send('from server');
-});
-
-//
-// Create a proxy server with node-http-proxy
-//
-httpProxy.createServer(8080, 'localhost').listen(8081);
-
-//
-// Setup the socket.io client against our proxy
-//
-var ws = client.connect('ws://localhost:8081');
-
-ws.on('message', function (msg) {
-  util.debug('Got message: ' + msg);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/lib/node-http-proxy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/lib/node-http-proxy.js b/web/demos/package/node_modules/http-proxy/lib/node-http-proxy.js
deleted file mode 100644
index b5de6bb..0000000
--- a/web/demos/package/node_modules/http-proxy/lib/node-http-proxy.js
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
-  node-http-proxy.js: http proxy for node.js
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Marak Squires, Fedor Indutny
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    http = require('http'),
-    https = require('https'),
-    events = require('events'),
-    maxSockets = 100;
-
-//
-// Expose version information through `pkginfo`.
-//
-require('pkginfo')(module, 'version');
-
-//
-// ### Export the relevant objects exposed by `node-http-proxy`
-//
-var HttpProxy    = exports.HttpProxy    = require('./node-http-proxy/http-proxy').HttpProxy,
-    ProxyTable   = exports.ProxyTable   = require('./node-http-proxy/proxy-table').ProxyTable,
-    RoutingProxy = exports.RoutingProxy = require('./node-http-proxy/routing-proxy').RoutingProxy;
-
-//
-// ### function createServer ([port, host, options, handler])
-// #### @port {number} **Optional** Port to use on the proxy target host.
-// #### @host {string} **Optional** Host of the proxy target.
-// #### @options {Object} **Optional** Options for the HttpProxy instance used
-// #### @handler {function} **Optional** Request handler for the server
-// Returns a server that manages an instance of HttpProxy. Flexible arguments allow for:
-//
-// * `httpProxy.createServer(9000, 'localhost')`
-// * `httpProxy.createServer(9000, 'localhost', options)
-// * `httpPRoxy.createServer(function (req, res, proxy) { ... })`
-//
-exports.createServer = function () {
-  var args = Array.prototype.slice.call(arguments),
-      handlers = [],
-      callback,
-      options = {},
-      message,
-      handler,
-      server,
-      proxy,
-      host,
-      port;
-
-  //
-  // Liberally parse arguments of the form:
-  //
-  //    httpProxy.createServer('localhost', 9000, callback);
-  //    httpProxy.createServer({ host: 'localhost', port: 9000 }, callback);
-  //    **NEED MORE HERE!!!**
-  //
-  args.forEach(function (arg) {
-    arg = Number(arg) || arg;
-    switch (typeof arg) {
-      case 'string':   host = arg; break;
-      case 'number':   port = arg; break;
-      case 'object':   options = arg || {}; break;
-      case 'function': callback = arg; handlers.push(callback); break;
-    };
-  });
-
-  //
-  // Helper function to create intelligent error message(s)
-  // for the very liberal arguments parsing performed by
-  // `require('http-proxy').createServer()`.
-  //
-  function validArguments() {
-    var conditions = {
-      'port and host': function () {
-        return port && host;
-      },
-      'options.target or options.router': function () {
-        return options && (options.router ||
-          (options.target && options.target.host && options.target.port));
-      },
-      'or proxy handlers': function () {
-        return handlers && handlers.length;
-      }
-    }
-
-    var missing = Object.keys(conditions).filter(function (name) {
-      return !conditions[name]();
-    });
-
-    if (missing.length === 3) {
-      message = 'Cannot proxy without ' + missing.join(', ');
-      return false;
-    }
-
-    return true;
-  }
-
-  if (!validArguments()) {
-    //
-    // If `host`, `port` and `options` are all not passed (with valid
-    // options) then this server is improperly configured.
-    //
-    throw new Error(message);
-    return;
-  }
-
-  //
-  // Hoist up any explicit `host` or `port` arguments
-  // that have been passed in to the options we will
-  // pass to the `httpProxy.HttpProxy` constructor.
-  //
-  options.target      = options.target      || {};
-  options.target.port = options.target.port || port;
-  options.target.host = options.target.host || host;
-
-  if (options.target && options.target.host && options.target.port) {
-    //
-    // If an explicit `host` and `port` combination has been passed
-    // to `.createServer()` then instantiate a hot-path optimized
-    // `HttpProxy` object and add the "proxy" middleware layer.
-    //
-    proxy = new HttpProxy(options);
-    handlers.push(function (req, res) {
-      proxy.proxyRequest(req, res);
-    });
-  }
-  else {
-    //
-    // If no explicit `host` or `port` combination has been passed then
-    // we have to assume that this is a "go-anywhere" Proxy (i.e. a `RoutingProxy`).
-    //
-    proxy = new RoutingProxy(options);
-
-    if (options.router) {
-      //
-      // If a routing table has been supplied than we assume
-      // the user intends us to add the "proxy" middleware layer
-      // for them
-      //
-      handlers.push(function (req, res) {
-        proxy.proxyRequest(req, res);
-      });
-
-      proxy.on('routes', function (routes) {
-        server.emit('routes', routes);
-      });
-    }
-  }
-
-  //
-  // Create the `http[s].Server` instance which will use
-  // an instance of `httpProxy.HttpProxy`.
-  //
-  handler = handlers.length > 1
-    ? exports.stack(handlers, proxy)
-    : function (req, res) { handlers[0](req, res, proxy) };
-
-  server  = options.https
-    ? https.createServer(options.https, handler)
-    : http.createServer(handler);
-
-  server.on('close', function () {
-    proxy.close();
-  });
-
-  if (!callback) {
-    //
-    // If an explicit callback has not been supplied then
-    // automagically proxy the request using the `HttpProxy`
-    // instance we have created.
-    //
-    server.on('upgrade', function (req, socket, head) {
-      proxy.proxyWebSocketRequest(req, socket, head);
-    });
-  }
-
-  //
-  // Set the proxy on the server so it is available
-  // to the consumer of the server
-  //
-  server.proxy = proxy;
-  return server;
-};
-
-//
-// ### function buffer (obj)
-// #### @obj {Object} Object to pause events from
-// Buffer `data` and `end` events from the given `obj`.
-// Consumers of HttpProxy performing async tasks
-// __must__ utilize this utility, to re-emit data once
-// the async operation has completed, otherwise these
-// __events will be lost.__
-//
-//      var buffer = httpProxy.buffer(req);
-//      fs.readFile(path, function () {
-//         httpProxy.proxyRequest(req, res, host, port, buffer);
-//      });
-//
-// __Attribution:__ This approach is based heavily on
-// [Connect](https://github.com/senchalabs/connect/blob/master/lib/utils.js#L157).
-// However, this is not a big leap from the implementation in node-http-proxy < 0.4.0.
-// This simply chooses to manage the scope of the events on a new Object literal as opposed to
-// [on the HttpProxy instance](https://github.com/nodejitsu/node-http-proxy/blob/v0.3.1/lib/node-http-proxy.js#L154).
-//
-exports.buffer = function (obj) {
-  var events = [],
-      onData,
-      onEnd;
-
-  obj.on('data', onData = function (data, encoding) {
-    events.push(['data', data, encoding]);
-  });
-
-  obj.on('end', onEnd = function (data, encoding) {
-    events.push(['end', data, encoding]);
-  });
-
-  return {
-    end: function () {
-      obj.removeListener('data', onData);
-      obj.removeListener('end', onEnd);
-    },
-    destroy: function () {
-      this.end();
-     	this.resume = function () {
-     	  console.error("Cannot resume buffer after destroying it.");
-     	};
-
-     	onData = onEnd = events = obj = null;
-    },
-    resume: function () {
-      this.end();
-      for (var i = 0, len = events.length; i < len; ++i) {
-        obj.emit.apply(obj, events[i]);
-      }
-    }
-  };
-};
-
-//
-// ### function getMaxSockets ()
-// Returns the maximum number of sockets
-// allowed on __every__ outgoing request
-// made by __all__ instances of `HttpProxy`
-//
-exports.getMaxSockets = function () {
-  return maxSockets;
-};
-
-//
-// ### function setMaxSockets ()
-// Sets the maximum number of sockets
-// allowed on __every__ outgoing request
-// made by __all__ instances of `HttpProxy`
-//
-exports.setMaxSockets = function (value) {
-  maxSockets = value;
-};
-
-//
-// ### function stack (middlewares, proxy)
-// #### @middlewares {Array} Array of functions to stack.
-// #### @proxy {HttpProxy|RoutingProxy} Proxy instance to
-// Iteratively build up a single handler to the `http.Server`
-// `request` event (i.e. `function (req, res)`) by wrapping
-// each middleware `layer` into a `child` middleware which
-// is in invoked by the parent (i.e. predecessor in the Array).
-//
-// adapted from https://github.com/creationix/stack
-//
-exports.stack = function stack (middlewares, proxy) {
-  var handle;
-  middlewares.reverse().forEach(function (layer) {
-    var child = handle;
-    handle = function (req, res) {
-      var next = function (err) {
-        if (err) {
-          if (! proxy.emit('middlewareError', err, req, res)) {
-            console.error('Error in middleware(s): %s', err.stack);
-          }
-
-          if (res._headerSent) {
-            res.destroy();
-          }
-          else {
-            res.statusCode = 500;
-            res.setHeader('Content-Type', 'text/plain');
-            res.end('Internal Server Error');
-          }
-
-          return;
-        }
-
-        if (child) {
-          child(req, res);
-        }
-      };
-
-      //
-      // Set the prototype of the `next` function to the instance
-      // of the `proxy` so that in can be used interchangably from
-      // a `connect` style callback and a true `HttpProxy` object.
-      //
-      // e.g. `function (req, res, next)` vs. `function (req, res, proxy)`
-      //
-      next.__proto__ = proxy;
-      layer(req, res, next);
-    };
-  });
-
-  return handle;
-};
-
-//
-// ### function _getAgent (host, port, secure)
-// #### @options {Object} Options to use when creating the agent.
-//
-//    {
-//      host: 'localhost',
-//      port: 9000,
-//      https: true,
-//      maxSockets: 100
-//    }
-//
-// Createsan agent from the `http` or `https` module
-// and sets the `maxSockets` property appropriately.
-//
-exports._getAgent = function _getAgent (options) {
-  if (!options || !options.host) {
-    throw new Error('`options.host` is required to create an Agent.');
-  }
-
-  if (!options.port) {
-    options.port = options.https ? 443 : 80;
-  }
-
-  var Agent = options.https ? https.Agent : http.Agent,
-      agent;
-
-  // require('http-proxy').setMaxSockets() should override http's default
-  // configuration value (which is pretty low).
-  options.maxSockets = options.maxSockets || maxSockets;
-  agent = new Agent(options);
-
-  return agent;
-}
-
-//
-// ### function _getProtocol (options)
-// #### @options {Object} Options for the proxy target.
-// Returns the appropriate node.js core protocol module (i.e. `http` or `https`)
-// based on the `options` supplied.
-//
-exports._getProtocol = function _getProtocol (options) {
-  return options.https ? https : http;
-};
-
-
-//
-// ### function _getBase (options)
-// #### @options {Object} Options for the proxy target.
-// Returns the relevate base object to create on outgoing proxy request.
-// If `options.https` are supplied, this function respond with an object
-// containing the relevant `ca`, `key`, and `cert` properties.
-//
-exports._getBase = function _getBase (options) {
-  var result = function () {};
-
-  if (options.https && typeof options.https === 'object') {
-    ['ca', 'cert', 'key'].forEach(function (key) {
-      if (options.https[key]) {
-        result.prototype[key] = options.https[key];
-      }
-    });
-  }
-
-  return result;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/lib/node-http-proxy/http-proxy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/lib/node-http-proxy/http-proxy.js b/web/demos/package/node_modules/http-proxy/lib/node-http-proxy/http-proxy.js
deleted file mode 100644
index 92541ba..0000000
--- a/web/demos/package/node_modules/http-proxy/lib/node-http-proxy/http-proxy.js
+++ /dev/null
@@ -1,983 +0,0 @@
-/*
-  node-http-proxy.js: http proxy for node.js
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Marak Squires, Fedor Indutny
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var events = require('events'),
-    http = require('http'),
-    util = require('util'),
-    url = require('url'),
-    httpProxy = require('../node-http-proxy');
-
-//
-// @private {RegExp} extractPort
-// Reusable regular expression for getting the
-// port from a host string.
-//
-var extractPort = /:(\d+)$/;
-
-//
-// ### function HttpProxy (options)
-// #### @options {Object} Options for this instance.
-// Constructor function for new instances of HttpProxy responsible
-// for managing the life-cycle of streaming reverse proxyied HTTP requests.
-//
-// Example options:
-//
-//      {
-//        target: {
-//          host: 'localhost',
-//          port: 9000
-//        },
-//        forward: {
-//          host: 'localhost',
-//          port: 9001
-//        }
-//      }
-//
-var HttpProxy = exports.HttpProxy = function (options) {
-  if (!options || !options.target) {
-    throw new Error('Both `options` and `options.target` are required.');
-  }
-
-  events.EventEmitter.call(this);
-
-  var self  = this;
-
-  //
-  // Setup basic proxying options:
-  //
-  // * forward {Object} Options for a forward-proxy (if-any)
-  // * target {Object} Options for the **sole** proxy target of this instance
-  //
-  this.forward  = options.forward;
-  this.target   = options.target;
-  this.timeout = options.timeout;
-
-  //
-  // Setup the necessary instances instance variables for
-  // the `target` and `forward` `host:port` combinations
-  // used by this instance.
-  //
-  // * agent {http[s].Agent} Agent to be used by this instance.
-  // * protocol {http|https} Core node.js module to make requests with.
-  // * base {Object} Base object to create when proxying containing any https settings.
-  //
-  function setupProxy (key) {
-    self[key].agent    = httpProxy._getAgent(self[key]);
-    self[key].protocol = httpProxy._getProtocol(self[key]);
-    self[key].base     = httpProxy._getBase(self[key]);
-  }
-
-  setupProxy('target');
-  if (this.forward) {
-    setupProxy('forward');
-  }
-
-  //
-  // Setup opt-in features
-  //
-  this.enable          = options.enable || {};
-  this.enable.xforward = typeof this.enable.xforward === 'boolean'
-    ? this.enable.xforward
-    : true;
-
-  // if event listener is set then  use it else unlimited.
-  this.eventListenerCount = typeof options.eventListenerCount === 'number'? options.eventListenerCount : 0 ; 
-
-  //
-  // Setup additional options for WebSocket proxying. When forcing
-  // the WebSocket handshake to change the `sec-websocket-location`
-  // and `sec-websocket-origin` headers `options.source` **MUST**
-  // be provided or the operation will fail with an `origin mismatch`
-  // by definition.
-  //
-  this.source       = options.source       || { host: 'localhost', port: 80 };
-  this.source.https = this.source.https    || options.https;
-  this.changeOrigin = options.changeOrigin || false;
-};
-
-// Inherit from events.EventEmitter
-util.inherits(HttpProxy, events.EventEmitter);
-
-//
-// ### function proxyRequest (req, res, buffer)
-// #### @req {ServerRequest} Incoming HTTP Request to proxy.
-// #### @res {ServerResponse} Outgoing HTTP Request to write proxied data to.
-// #### @buffer {Object} Result from `httpProxy.buffer(req)`
-//
-HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
-  var self = this,
-      errState = false,
-      outgoing = new(this.target.base),
-      reverseProxy,
-      location;
-
-  // If this is a DELETE request then set the "content-length"
-  // header (if it is not already set)
-  if (req.method === 'DELETE') {
-    req.headers['content-length'] = req.headers['content-length'] || '0';
-  }
-
-  //
-  // Add common proxy headers to the request so that they can
-  // be availible to the proxy target server. If the proxy is
-  // part of proxy chain it will append the address:
-  //
-  // * `x-forwarded-for`: IP Address of the original request
-  // * `x-forwarded-proto`: Protocol of the original request
-  // * `x-forwarded-port`: Port of the original request.
-  //
-  if (this.enable.xforward && req.connection && req.socket) {
-    if (req.headers['x-forwarded-for']) {
-      var addressToAppend = "," + req.connection.remoteAddress || req.socket.remoteAddress;
-      req.headers['x-forwarded-for'] += addressToAppend;
-    }
-    else {
-      req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.socket.remoteAddress;
-    }
-
-    if (req.headers['x-forwarded-port']) {
-      var portToAppend = "," + getPortFromHostHeader(req);
-      req.headers['x-forwarded-port'] += portToAppend;
-    }
-    else {
-      req.headers['x-forwarded-port'] = getPortFromHostHeader(req);
-    }
-
-    if (req.headers['x-forwarded-proto']) {
-      var protoToAppend = "," + getProto(req);
-      req.headers['x-forwarded-proto'] += protoToAppend;
-    }
-    else {
-      req.headers['x-forwarded-proto'] = getProto(req);
-    }
-  }
-
-  if (this.timeout) {
-    req.socket.setTimeout(this.timeout);
-  }
-
-  //
-  // Emit the `start` event indicating that we have begun the proxy operation.
-  //
-  this.emit('start', req, res, this.target);
-
-  //
-  // If forwarding is enabled for this instance, foward proxy the
-  // specified request to the address provided in `this.forward`
-  //
-  if (this.forward) {
-    this.emit('forward', req, res, this.forward);
-    this._forwardRequest(req);
-  }
-
-  //
-  // #### function proxyError (err)
-  // #### @err {Error} Error contacting the proxy target
-  // Short-circuits `res` in the event of any error when
-  // contacting the proxy target at `host` / `port`.
-  //
-  function proxyError(err) {
-    errState = true;
-
-    //
-    // Emit an `error` event, allowing the application to use custom
-    // error handling. The error handler should end the response.
-    //
-    if (self.emit('proxyError', err, req, res)) {
-      return;
-    }
-
-    res.writeHead(500, { 'Content-Type': 'text/plain' });
-
-    if (req.method !== 'HEAD') {
-      //
-      // This NODE_ENV=production behavior is mimics Express and
-      // Connect.
-      //
-      if (process.env.NODE_ENV === 'production') {
-        res.write('Internal Server Error');
-      }
-      else {
-        res.write('An error has occurred: ' + JSON.stringify(err));
-      }
-    }
-
-    try { res.end() }
-    catch (ex) { console.error("res.end error: %s", ex.message) }
-  }
-
-  //
-  // Setup outgoing proxy with relevant properties.
-  //
-  outgoing.host       = this.target.host;
-  outgoing.hostname   = this.target.hostname;
-  outgoing.port       = this.target.port;
-  outgoing.socketPath = this.target.socketPath;
-  outgoing.agent      = this.target.agent;
-  outgoing.method     = req.method;
-  outgoing.path       = url.parse(req.url).path;
-  outgoing.headers    = req.headers;
-
-  //
-  // If the changeOrigin option is specified, change the
-  // origin of the host header to the target URL! Please
-  // don't revert this without documenting it!
-  //
-  if (this.changeOrigin) {
-    outgoing.headers.host = this.target.host;
-    // Only add port information to the header if not default port
-    // for this protocol.
-    // See https://github.com/nodejitsu/node-http-proxy/issues/458
-    if (this.target.port !== 443 && this.target.https ||
-        this.target.port !== 80 && !this.target.https) {
-      outgoing.headers.host += ':' + this.target.port;
-    }
-  }
-
-  //
-  // Open new HTTP request to internal resource with will act
-  // as a reverse proxy pass
-  //
-  reverseProxy = this.target.protocol.request(outgoing, function (response) {
-    //
-    // Process the `reverseProxy` `response` when it's received.
-    //
-    if (req.httpVersion === '1.0') {
-      if (req.headers.connection) {
-        response.headers.connection = req.headers.connection
-      } else {
-        response.headers.connection = 'close'
-      }
-    } else if (!response.headers.connection) {
-      if (req.headers.connection) { response.headers.connection = req.headers.connection }
-      else {
-        response.headers.connection = 'keep-alive'
-      }
-    }
-
-    // Remove `Transfer-Encoding` header if client's protocol is HTTP/1.0
-    // or if this is a DELETE request with no content-length header.
-    // See: https://github.com/nodejitsu/node-http-proxy/pull/373
-    if (req.httpVersion === '1.0' || (req.method === 'DELETE'
-      && !req.headers['content-length'])) {
-      delete response.headers['transfer-encoding'];
-    }
-
-    if ((response.statusCode === 301 || response.statusCode === 302)
-      && typeof response.headers.location !== 'undefined') {
-      location = url.parse(response.headers.location);
-      if (location.host === req.headers.host) {
-        if (self.source.https && !self.target.https) {
-          response.headers.location = response.headers.location.replace(/^http\:/, 'https:');
-        }
-        if (self.target.https && !self.source.https) {
-          response.headers.location = response.headers.location.replace(/^https\:/, 'http:');
-        }
-      }
-    }
-
-    //
-    // When the `reverseProxy` `response` ends, end the
-    // corresponding outgoing `res` unless we have entered
-    // an error state. In which case, assume `res.end()` has
-    // already been called and the 'error' event listener
-    // removed.
-    //
-    var ended = false;
-    response.on('close', function () {
-      if (!ended) { response.emit('end') }
-    });
-
-    //
-    // After reading a chunked response, the underlying socket
-    // will hit EOF and emit a 'end' event, which will abort
-    // the request. If the socket was paused at that time,
-    // pending data gets discarded, truncating the response.
-    // This code makes sure that we flush pending data.
-    //
-    response.connection.on('end', function () {
-      if (response.readable && response.resume) {
-        response.resume();
-      }
-    });
-
-    response.on('end', function () {
-      ended = true;
-      if (!errState) {
-        try { res.end() }
-        catch (ex) { console.error("res.end error: %s", ex.message) }
-
-        // Emit the `end` event now that we have completed proxying
-        self.emit('end', req, res, response);
-      }
-    });
-
-    // Allow observer to modify headers or abort response
-    try { self.emit('proxyResponse', req, res, response) }
-    catch (ex) {
-      errState = true;
-      return;
-    }
-
-    // Set the headers of the client response
-    if (res.sentHeaders !== true) {
-      Object.keys(response.headers).forEach(function (key) {
-        res.setHeader(key, response.headers[key]);
-      });
-      res.writeHead(response.statusCode);
-    }
-
-    function ondata(chunk) {
-      if (res.writable) {
-        // Only pause if the underlying buffers are full,
-        // *and* the connection is not in 'closing' state.
-        // Otherwise, the pause will cause pending data to
-        // be discarded and silently lost.
-        if (false === res.write(chunk) && response.pause
-            && response.connection.readable) {
-          response.pause();
-        }
-      }
-    }
-
-    response.on('data', ondata);
-
-    function ondrain() {
-      if (response.readable && response.resume) {
-        response.resume();
-      }
-    }
-
-    res.on('drain', ondrain);
-  });
-
-  // allow unlimited listeners ... 
-  reverseProxy.setMaxListeners(this.eventListenerCount);
-
-  //
-  // Handle 'error' events from the `reverseProxy`. Setup timeout override if needed
-  //
-  reverseProxy.once('error', proxyError);
-
-  // Set a timeout on the socket if `this.timeout` is specified.
-  reverseProxy.once('socket', function (socket) {
-    if (self.timeout) {
-      socket.setTimeout(self.timeout);
-    }
-  });
-
-  //
-  // Handle 'error' events from the `req` (e.g. `Parse Error`).
-  //
-  req.on('error', proxyError);
-
-  //
-  // If `req` is aborted, we abort our `reverseProxy` request as well.
-  //
-  req.on('aborted', function () {
-    reverseProxy.abort();
-  });
-
-  //
-  // For each data `chunk` received from the incoming
-  // `req` write it to the `reverseProxy` request.
-  //
-  req.on('data', function (chunk) {
-    if (!errState) {
-      var flushed = reverseProxy.write(chunk);
-      if (!flushed) {
-        req.pause();
-        reverseProxy.once('drain', function () {
-          try { req.resume() }
-          catch (er) { console.error("req.resume error: %s", er.message) }
-        });
-
-        //
-        // Force the `drain` event in 100ms if it hasn't
-        // happened on its own.
-        //
-        setTimeout(function () {
-          reverseProxy.emit('drain');
-        }, 100);
-      }
-    }
-  });
-
-  //
-  // When the incoming `req` ends, end the corresponding `reverseProxy`
-  // request unless we have entered an error state.
-  //
-  req.on('end', function () {
-    if (!errState) {
-      reverseProxy.end();
-    }
-  });
-
-  //Aborts reverseProxy if client aborts the connection.
-  req.on('close', function () {
-    if (!errState) {
-      reverseProxy.abort();
-    }
-  });
-
-  //
-  // If we have been passed buffered data, resume it.
-  //
-  if (buffer) {
-    return !errState
-      ? buffer.resume()
-      : buffer.destroy();
-  }
-};
-
-//
-// ### function proxyWebSocketRequest (req, socket, head, buffer)
-// #### @req {ServerRequest} Websocket request to proxy.
-// #### @socket {net.Socket} Socket for the underlying HTTP request
-// #### @head {string} Headers for the Websocket request.
-// #### @buffer {Object} Result from `httpProxy.buffer(req)`
-// Performs a WebSocket proxy operation to the location specified by
-// `this.target`.
-//
-HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, upgradeHead, buffer) {
-  var self      = this,
-      outgoing  = new(this.target.base),
-      listeners = {},
-      errState  = false,
-      CRLF      = '\r\n',
-      //copy upgradeHead to avoid retention of large slab buffers used in node core
-      head = new Buffer(upgradeHead.length);
-      upgradeHead.copy(head);
-
-  //
-  // WebSocket requests must have the `GET` method and
-  // the `upgrade:websocket` header
-  //
-  if (req.method !== 'GET' || req.headers.upgrade.toLowerCase() !== 'websocket') {
-    //
-    // This request is not WebSocket request
-    //
-    return socket.destroy();
-  }
-
-  //
-  // Add common proxy headers to the request so that they can
-  // be availible to the proxy target server. If the proxy is
-  // part of proxy chain it will append the address:
-  //
-  // * `x-forwarded-for`: IP Address of the original request
-  // * `x-forwarded-proto`: Protocol of the original request
-  // * `x-forwarded-port`: Port of the original request.
-  //
-  if (this.enable.xforward && req.connection) {
-    if (req.headers['x-forwarded-for']) {
-      var addressToAppend = "," + req.connection.remoteAddress || socket.remoteAddress;
-      req.headers['x-forwarded-for'] += addressToAppend;
-    }
-    else {
-      req.headers['x-forwarded-for'] = req.connection.remoteAddress || socket.remoteAddress;
-    }
-
-    if (req.headers['x-forwarded-port']) {
-      var portToAppend = "," + getPortFromHostHeader(req);
-      req.headers['x-forwarded-port'] += portToAppend;
-    }
-    else {
-      req.headers['x-forwarded-port'] = getPortFromHostHeader(req);
-    }
-
-    if (req.headers['x-forwarded-proto']) {
-      var protoToAppend = "," + (req.connection.pair ? 'wss' : 'ws');
-      req.headers['x-forwarded-proto'] += protoToAppend;
-    }
-    else {
-      req.headers['x-forwarded-proto'] = req.connection.pair ? 'wss' : 'ws';
-    }
-  }
-
-  self.emit('websocket:start', req, socket, head, this.target);
-
-  //
-  // Helper function for setting appropriate socket values:
-  // 1. Turn of all bufferings
-  // 2. For server set KeepAlive
-  //
-  function _socket(socket, keepAlive) {
-    socket.setTimeout(0);
-    socket.setNoDelay(true);
-
-    if (keepAlive) {
-      if (socket.setKeepAlive) {
-        socket.setKeepAlive(true, 0);
-      }
-      else if (socket.pair.cleartext.socket.setKeepAlive) {
-        socket.pair.cleartext.socket.setKeepAlive(true, 0);
-      }
-    }
-  }
-
-  //
-  // Setup the incoming client socket.
-  //
-  _socket(socket, true);
-
-  //
-  // On `upgrade` from the Agent socket, listen to
-  // the appropriate events.
-  //
-  function onUpgrade (reverseProxy, proxySocket) {
-    if (!reverseProxy) {
-      proxySocket.end();
-      socket.end();
-      return;
-    }
-
-    //
-    // Any incoming data on this WebSocket to the proxy target
-    // will be written to the `reverseProxy` socket.
-    //
-    proxySocket.on('data', listeners.onIncoming = function (data) {
-      if (reverseProxy.incoming.socket.writable) {
-        try {
-          self.emit('websocket:outgoing', req, socket, head, data);
-          var flushed = reverseProxy.incoming.socket.write(data);
-          if (!flushed) {
-            proxySocket.pause();
-            reverseProxy.incoming.socket.once('drain', function () {
-              try { proxySocket.resume() }
-              catch (er) { console.error("proxySocket.resume error: %s", er.message) }
-            });
-
-            //
-            // Force the `drain` event in 100ms if it hasn't
-            // happened on its own.
-            //
-            setTimeout(function () {
-              reverseProxy.incoming.socket.emit('drain');
-            }, 100);
-          }
-        }
-        catch (ex) {
-          detach();
-        }
-      }
-    });
-
-    //
-    // Any outgoing data on this Websocket from the proxy target
-    // will be written to the `proxySocket` socket.
-    //
-    reverseProxy.incoming.socket.on('data', listeners.onOutgoing = function (data) {
-      try {
-        self.emit('websocket:incoming', reverseProxy, reverseProxy.incoming, head, data);
-        var flushed = proxySocket.write(data);
-        if (!flushed) {
-          reverseProxy.incoming.socket.pause();
-          proxySocket.once('drain', function () {
-            try { reverseProxy.incoming.socket.resume() }
-            catch (er) { console.error("reverseProxy.incoming.socket.resume error: %s", er.message) }
-          });
-
-          //
-          // Force the `drain` event in 100ms if it hasn't
-          // happened on its own.
-          //
-          setTimeout(function () {
-            proxySocket.emit('drain');
-          }, 100);
-        }
-      }
-      catch (ex) {
-        detach();
-      }
-    });
-
-    //
-    // Helper function to detach all event listeners
-    // from `reverseProxy` and `proxySocket`.
-    //
-    function detach() {
-      proxySocket.destroySoon();
-      proxySocket.removeListener('end', listeners.onIncomingClose);
-      proxySocket.removeListener('data', listeners.onIncoming);
-      reverseProxy.incoming.socket.destroySoon();
-      reverseProxy.incoming.socket.removeListener('end', listeners.onOutgoingClose);
-      reverseProxy.incoming.socket.removeListener('data', listeners.onOutgoing);
-    }
-
-   //
-    // If the incoming `proxySocket` socket closes, then
-    // detach all event listeners.
-    //
-    listeners.onIncomingClose = function () {
-      reverseProxy.incoming.socket.destroy();
-      detach();
-
-      // Emit the `end` event now that we have completed proxying
-      self.emit('websocket:end', req, socket, head);
-    }
-
-    //
-    // If the `reverseProxy` socket closes, then detach all
-    // event listeners.
-    //
-    listeners.onOutgoingClose = function () {
-      proxySocket.destroy();
-      detach();
-    }
-
-    proxySocket.on('end', listeners.onIncomingClose);
-    proxySocket.on('close', listeners.onIncomingClose);
-    reverseProxy.incoming.socket.on('end', listeners.onOutgoingClose);
-    reverseProxy.incoming.socket.on('close', listeners.onOutgoingClose);
-  }
-
-  function getPort (port) {
-    port = port || 80;
-    return port - 80 === 0 ? '' : ':' + port;
-  }
-
-  //
-  // Get the protocol, and host for this request and create an instance
-  // of `http.Agent` or `https.Agent` from the pool managed by `node-http-proxy`.
-  //
-  var agent        = this.target.agent,
-      protocolName = this.target.https ? 'https' : 'http',
-      portUri      = getPort(this.source.port),
-      remoteHost   = this.target.host + portUri;
-
-  //
-  // Change headers (if requested).
-  //
-  if (this.changeOrigin) {
-    req.headers.host   = remoteHost;
-    req.headers.origin = protocolName + '://' + remoteHost;
-  }
-
-  //
-  // Make the outgoing WebSocket request
-  //
-  outgoing.host    = this.target.host;
-  outgoing.port    = this.target.port;
-  outgoing.agent   = agent;
-  outgoing.method  = 'GET';
-  outgoing.path    = req.url;
-  outgoing.headers = req.headers;
-  outgoing.agent   = agent;
-
-  var reverseProxy = this.target.protocol.request(outgoing);
-
-  //
-  // On any errors from the `reverseProxy` emit the
-  // `webSocketProxyError` and close the appropriate
-  // connections.
-  //
-  function proxyError (err) {
-    reverseProxy.destroy();
-
-    process.nextTick(function () {
-      //
-      // Destroy the incoming socket in the next tick, in case the error handler
-      // wants to write to it.
-      //
-      socket.destroy();
-    });
-
-    self.emit('webSocketProxyError', err, req, socket, head);
-  }
-
-  //
-  // Here we set the incoming `req`, `socket` and `head` data to the outgoing
-  // request so that we can reuse this data later on in the closure scope
-  // available to the `upgrade` event. This bookkeeping is not tracked anywhere
-  // in nodejs core and is **very** specific to proxying WebSockets.
-  //
-  reverseProxy.incoming = {
-    request: req,
-    socket: socket,
-    head: head
-  };
-
-  //
-  // Here we set the handshake `headers` and `statusCode` data to the outgoing
-  // request so that we can reuse this data later.
-  //
-  reverseProxy.handshake = {
-    headers: {},
-    statusCode: null,
-  }
-
-  //
-  // If the agent for this particular `host` and `port` combination
-  // is not already listening for the `upgrade` event, then do so once.
-  // This will force us not to disconnect.
-  //
-  // In addition, it's important to note the closure scope here. Since
-  // there is no mapping of the socket to the request bound to it.
-  //
-  reverseProxy.on('upgrade', function (res, remoteSocket, head) {
-    //
-    // Prepare handshake response 'headers' and 'statusCode'.
-    //
-    reverseProxy.handshake = {
-      headers: res.headers,
-      statusCode: res.statusCode,
-    }
-
-    //
-    // Prepare the socket for the reverseProxy request and begin to
-    // stream data between the two sockets. Here it is important to
-    // note that `remoteSocket._httpMessage === reverseProxy`.
-    //
-    _socket(remoteSocket, true);
-    onUpgrade(remoteSocket._httpMessage, remoteSocket);
-  });
-
-  //
-  // If the reverseProxy connection has an underlying socket,
-  // then execute the WebSocket handshake.
-  //
-  reverseProxy.once('socket', function (revSocket) {
-    revSocket.on('data', function handshake (data) {
-      // Set empty headers
-      var headers = '';
-
-      //
-      // If the handshake statusCode 101, concat headers.
-      //
-      if (reverseProxy.handshake.statusCode && reverseProxy.handshake.statusCode == 101) {
-        headers = [
-          'HTTP/1.1 101 Switching Protocols',
-          'Upgrade: websocket',
-          'Connection: Upgrade',
-          'Sec-WebSocket-Accept: ' + reverseProxy.handshake.headers['sec-websocket-accept']
-        ];
-
-        headers = headers.concat('', '').join('\r\n');
-      }
-
-      //
-      // Ok, kind of harmfull part of code. Socket.IO sends a hash
-      // at the end of handshake if protocol === 76, but we need
-      // to replace 'host' and 'origin' in response so we split
-      // data to printable data and to non-printable. (Non-printable
-      // will come after double-CRLF).
-      //
-      var sdata = data.toString();
-
-      // Get the Printable data
-      sdata = sdata.substr(0, sdata.search(CRLF + CRLF));
-
-      // Get the Non-Printable data
-      data = data.slice(Buffer.byteLength(sdata), data.length);
-
-      if (self.source.https && !self.target.https) {
-        //
-        // If the proxy server is running HTTPS but the client is running
-        // HTTP then replace `ws` with `wss` in the data sent back to the client.
-        //
-        sdata = sdata.replace('ws:', 'wss:');
-      }
-
-      try {
-        //
-        // Write the printable and non-printable data to the socket
-        // from the original incoming request.
-        //
-        self.emit('websocket:handshake', req, socket, head, sdata, data);
-        // add headers to the socket
-        socket.write(headers + sdata);
-        var flushed = socket.write(data);
-        if (!flushed) {
-          revSocket.pause();
-          socket.once('drain', function () {
-            try { revSocket.resume() }
-            catch (er) { console.error("reverseProxy.socket.resume error: %s", er.message) }
-          });
-
-          //
-          // Force the `drain` event in 100ms if it hasn't
-          // happened on its own.
-          //
-          setTimeout(function () {
-            socket.emit('drain');
-          }, 100);
-        }
-      }
-      catch (ex) {
-        //
-        // Remove data listener on socket error because the
-        // 'handshake' has failed.
-        //
-        revSocket.removeListener('data', handshake);
-        return proxyError(ex);
-      }
-
-      //
-      // Remove data listener now that the 'handshake' is complete
-      //
-      revSocket.removeListener('data', handshake);
-    });
-  });
-
-  //
-  // Handle 'error' events from the `reverseProxy`.
-  //
-  reverseProxy.on('error', proxyError);
-
-  //
-  // Handle 'error' events from the `req` (e.g. `Parse Error`).
-  //
-  req.on('error', proxyError);
-
-  try {
-    //
-    // Attempt to write the upgrade-head to the reverseProxy
-    // request. This is small, and there's only ever one of
-    // it; no need for pause/resume.
-    //
-    // XXX This is very wrong and should be fixed in node's core
-    //
-    reverseProxy.write(head);
-    if (head && head.length === 0) {
-      reverseProxy._send('');
-    }
-  }
-  catch (ex) {
-    return proxyError(ex);
-  }
-
-  //
-  // If we have been passed buffered data, resume it.
-  //
-  if (buffer) {
-    return !errState
-      ? buffer.resume()
-      : buffer.destroy();
-  }
-};
-
-//
-// ### function close()
-// Closes all sockets associated with the Agents
-// belonging to this instance.
-//
-HttpProxy.prototype.close = function () {
-  [this.forward, this.target].forEach(function (proxy) {
-    if (proxy && proxy.agent) {
-      for (var host in proxy.agent.sockets) {
-        proxy.agent.sockets[host].forEach(function (socket) {
-          socket.end();
-        });
-      }
-    }
-  });
-};
-
-//
-// ### @private function _forwardRequest (req)
-// #### @req {ServerRequest} Incoming HTTP Request to proxy.
-// Forwards the specified `req` to the location specified
-// by `this.forward` ignoring errors and the subsequent response.
-//
-HttpProxy.prototype._forwardRequest = function (req) {
-  var self = this,
-      outgoing = new(this.forward.base),
-      forwardProxy;
-
-  //
-  // Setup outgoing proxy with relevant properties.
-  //
-  outgoing.host    = this.forward.host;
-  outgoing.port    = this.forward.port,
-  outgoing.agent   = this.forward.agent;
-  outgoing.method  = req.method;
-  outgoing.path    = req.url;
-  outgoing.headers = req.headers;
-
-  //
-  // Open new HTTP request to internal resource with will
-  // act as a reverse proxy pass.
-  //
-  forwardProxy = this.forward.protocol.request(outgoing, function (response) {
-    //
-    // Ignore the response from the forward proxy since this is a 'fire-and-forget' proxy.
-    // Remark (indexzero): We will eventually emit a 'forward' event here for performance tuning.
-    //
-  });
-
-  //
-  // Add a listener for the connection timeout event.
-  //
-  // Remark: Ignoring this error in the event
-  //         forward target doesn't exist.
-  //
-  forwardProxy.once('error', function (err) { });
-
-  //
-  // Chunk the client request body as chunks from
-  // the proxied request come in
-  //
-  req.on('data', function (chunk) {
-    var flushed = forwardProxy.write(chunk);
-    if (!flushed) {
-      req.pause();
-      forwardProxy.once('drain', function () {
-        try { req.resume() }
-        catch (er) { console.error("req.resume error: %s", er.message) }
-      });
-
-      //
-      // Force the `drain` event in 100ms if it hasn't
-      // happened on its own.
-      //
-      setTimeout(function () {
-        forwardProxy.emit('drain');
-      }, 100);
-    }
-  });
-
-  //
-  // At the end of the client request, we are going to
-  // stop the proxied request
-  //
-  req.on('end', function () {
-    forwardProxy.end();
-  });
-};
-
-function getPortFromHostHeader(req) {
-  var match;
-  if ((match = extractPort.exec(req.headers.host))) {
-    return parseInt(match[1]);
-  }
-
-  return getProto(req) === 'https' ? 443 : 80;
-}
-
-function getProto(req) {
-  return req.isSpdy ? 'https' : (req.connection.pair ? 'https' : 'http');
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/lib/node-http-proxy/proxy-table.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/lib/node-http-proxy/proxy-table.js b/web/demos/package/node_modules/http-proxy/lib/node-http-proxy/proxy-table.js
deleted file mode 100644
index 320396f..0000000
--- a/web/demos/package/node_modules/http-proxy/lib/node-http-proxy/proxy-table.js
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
-  node-http-proxy.js: Lookup table for proxy targets in node.js
-
-  Copyright (c) 2010 Charlie Robbins
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    events = require('events'),
-    fs = require('fs'),
-    url = require('url');
-
-//
-// ### function ProxyTable (router, silent)
-// #### @router {Object} Object containing the host based routes
-// #### @silent {Boolean} Value indicating whether we should suppress logs
-// #### @hostnameOnly {Boolean} Value indicating if we should route based on __hostname string only__
-// #### @pathnameOnly {Boolean} Value indicating if we should route based on only the pathname.  __This causes hostnames to be ignored.__.  Using this along with hostnameOnly wont work at all.
-// Constructor function for the ProxyTable responsible for getting
-// locations of proxy targets based on ServerRequest headers; specifically
-// the HTTP host header.
-//
-var ProxyTable = exports.ProxyTable = function (options) {
-  events.EventEmitter.call(this);
-
-  this.silent       = options.silent || options.silent !== true;
-  this.target       = options.target || {};
-  this.pathnameOnly = options.pathnameOnly === true;
-  this.hostnameOnly = options.hostnameOnly === true;
-
-  if (typeof options.router === 'object') {
-    //
-    // If we are passed an object literal setup
-    // the routes with RegExps from the router
-    //
-    this.setRoutes(options.router);
-  }
-  else if (typeof options.router === 'string') {
-    //
-    // If we are passed a string then assume it is a
-    // file path, parse that file and watch it for changes
-    //
-    var self = this;
-    this.routeFile = options.router;
-    this.setRoutes(JSON.parse(fs.readFileSync(options.router)).router);
-
-    fs.watchFile(this.routeFile, function () {
-      fs.readFile(self.routeFile, function (err, data) {
-        if (err) {
-          self.emit('error', err);
-        }
-
-        self.setRoutes(JSON.parse(data).router);
-        self.emit('routes', self.hostnameOnly === false ? self.routes : self.router);
-      });
-    });
-  }
-  else {
-    throw new Error('Cannot parse router with unknown type: ' + typeof router);
-  }
-};
-
-//
-// Inherit from `events.EventEmitter`
-//
-util.inherits(ProxyTable, events.EventEmitter);
-
-//
-// ### function addRoute (route, target)
-// #### @route {String} String containing route coming in
-// #### @target {String} String containing the target
-// Adds a host-based route to this instance.
-//
-ProxyTable.prototype.addRoute = function (route, target) {
-  if (!this.router) {
-    throw new Error('Cannot update ProxyTable routes without router.');
-  }
-
-  this.router[route] = target;
-  this.setRoutes(this.router);
-};
-
-//
-// ### function removeRoute (route)
-// #### @route {String} String containing route to remove
-// Removes a host-based route from this instance.
-//
-ProxyTable.prototype.removeRoute = function (route) {
-  if (!this.router) {
-    throw new Error('Cannot update ProxyTable routes without router.');
-  }
-
-  delete this.router[route];
-  this.setRoutes(this.router);
-};
-
-//
-// ### function setRoutes (router)
-// #### @router {Object} Object containing the host based routes
-// Sets the host-based routes to be used by this instance.
-//
-ProxyTable.prototype.setRoutes = function (router) {
-  if (!router) {
-    throw new Error('Cannot update ProxyTable routes without router.');
-  }
-
-  var self = this;
-  this.router = router;
-
-  if (this.hostnameOnly === false) {
-    this.routes = [];
-
-    Object.keys(router).forEach(function (path) {
-      if (!/http[s]?/.test(router[path])) {
-        router[path] = (self.target.https ? 'https://' : 'http://')
-          + router[path];
-      }
-
-      var target = url.parse(router[path]),
-          defaultPort = self.target.https ? 443 : 80;
-
-      //
-      // Setup a robust lookup table for the route:
-      //
-      //    {
-      //      source: {
-      //        regexp: /^foo.com/i,
-      //        sref: 'foo.com',
-      //        url: {
-      //          protocol: 'http:',
-      //          slashes: true,
-      //          host: 'foo.com',
-      //          hostname: 'foo.com',
-      //          href: 'http://foo.com/',
-      //          pathname: '/',
-      //          path: '/'
-      //        }
-      //    },
-      //    {
-      //      target: {
-      //        sref: '127.0.0.1:8000/',
-      //        url: {
-      //          protocol: 'http:',
-      //          slashes: true,
-      //          host: '127.0.0.1:8000',
-      //          hostname: '127.0.0.1',
-      //          href: 'http://127.0.0.1:8000/',
-      //          pathname: '/',
-      //          path: '/'
-      //        }
-      //    },
-      //
-      self.routes.push({
-        source: {
-          regexp: new RegExp('^' + path, 'i'),
-          sref: path,
-          url: url.parse('http://' + path)
-        },
-        target: {
-          sref: target.hostname + ':' + (target.port || defaultPort) + target.path,
-          url: target
-        }
-      });
-    });
-  }
-};
-
-//
-// ### function getProxyLocation (req)
-// #### @req {ServerRequest} The incoming server request to get proxy information about.
-// Returns the proxy location based on the HTTP Headers in the  ServerRequest `req`
-// available to this instance.
-//
-ProxyTable.prototype.getProxyLocation = function (req) {
-  if (!req || !req.headers || !req.headers.host) {
-    return null;
-  }
-
-  var targetHost = req.headers.host.split(':')[0];
-  if (this.hostnameOnly === true) {
-    var target = targetHost;
-    if (this.router.hasOwnProperty(target)) {
-      var location = this.router[target].split(':'),
-          host = location[0],
-          port = location.length === 1 ? 80 : location[1];
-
-      return {
-        port: port,
-        host: host
-      };
-    }
-  }
-  else if (this.pathnameOnly === true) {
-    var target = req.url;
-    for (var i in this.routes) {
-      var route = this.routes[i];
-      //
-      // If we are matching pathname only, we remove the matched pattern.
-      //
-      // IE /wiki/heartbeat
-      // is redirected to
-      // /heartbeat
-      //
-      // for the route "/wiki" : "127.0.0.1:8020"
-      //
-      if (target.match(route.source.regexp)) {
-        req.url = url.format(target.replace(route.source.regexp, ''));
-        return {
-          protocol: route.target.url.protocol.replace(':', ''),
-          host: route.target.url.hostname,
-          port: route.target.url.port
-            || (this.target.https ? 443 : 80)
-        };
-      }
-    }
-
-  }
-  else {
-    var target = targetHost + req.url;
-    for (var i in this.routes) {
-      var route = this.routes[i];
-      if (target.match(route.source.regexp)) {
-        //
-        // Attempt to perform any path replacement for differences
-        // between the source path and the target path. This replaces the
-        // path's part of the URL to the target's part of the URL.
-        //
-        // 1. Parse the request URL
-        // 2. Replace any portions of the source path with the target path
-        // 3. Set the request URL to the formatted URL with replacements.
-        //
-        var parsed = url.parse(req.url);
-
-        parsed.pathname = parsed.pathname.replace(
-          route.source.url.pathname,
-          route.target.url.pathname
-        );
-
-        req.url = url.format(parsed);
-
-        return {
-          protocol: route.target.url.protocol.replace(':', ''),
-          host: route.target.url.hostname,
-          port: route.target.url.port
-            || (this.target.https ? 443 : 80)
-        };
-      }
-    }
-  }
-
-  return null;
-};
-
-//
-// ### close function ()
-// Cleans up the event listeneners maintained
-// by this instance.
-//
-ProxyTable.prototype.close = function () {
-  if (typeof this.routeFile === 'string') {
-    fs.unwatchFile(this.routeFile);
-  }
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/lib/node-http-proxy/routing-proxy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/lib/node-http-proxy/routing-proxy.js b/web/demos/package/node_modules/http-proxy/lib/node-http-proxy/routing-proxy.js
deleted file mode 100644
index b294fb1..0000000
--- a/web/demos/package/node_modules/http-proxy/lib/node-http-proxy/routing-proxy.js
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * routing-proxy.js: A routing proxy consuming a RoutingTable and multiple HttpProxy instances
- *
- * (C) 2011 Nodejitsu Inc.
- * MIT LICENCE
- *
- */
-
-var events = require('events'),
-    utile = require('utile'),
-    HttpProxy = require('./http-proxy').HttpProxy,
-    ProxyTable = require('./proxy-table').ProxyTable;
-
-//
-// ### function RoutingProxy (options)
-// #### @options {Object} Options for this instance
-// Constructor function for the RoutingProxy object, a higher level
-// reverse proxy Object which can proxy to multiple hosts and also interface
-// easily with a RoutingTable instance.
-//
-var RoutingProxy = exports.RoutingProxy = function (options) {
-  events.EventEmitter.call(this);
-
-  var self = this;
-  options = options || {};
-
-  if (options.router) {
-    this.proxyTable = new ProxyTable(options);
-    this.proxyTable.on('routes', function (routes) {
-      self.emit('routes', routes);
-    });
-  }
-
-  //
-  // Create a set of `HttpProxy` objects to be used later on calls
-  // to `.proxyRequest()` and `.proxyWebSocketRequest()`.
-  //
-  this.proxies = {};
-
-  //
-  // Setup default target options (such as `https`).
-  //
-  this.target = {};
-  this.target.https = options.target && options.target.https;
-  this.target.maxSockets = options.target && options.target.maxSockets;
-
-  //
-  // Setup other default options to be used for instances of
-  // `HttpProxy` created by this `RoutingProxy` instance.
-  //
-  this.source  = options.source    || { host: 'localhost', port: 8000 };
-  this.https   = this.source.https || options.https;
-  this.enable  = options.enable;
-  this.forward = options.forward;
-  this.changeOrigin = options.changeOrigin || false;
-
-  //
-  // Listen for 'newListener' events so that we can bind 'proxyError'
-  // listeners to each HttpProxy's 'proxyError' event.
-  //
-  this.on('newListener', function (evt) {
-    if (evt === 'proxyError' || evt === 'webSocketProxyError') {
-      Object.keys(self.proxies).forEach(function (key) {
-        self.proxies[key].on(evt, self.emit.bind(self, evt));
-      });
-    }
-  });
-};
-
-
-//
-// Inherit from `events.EventEmitter`.
-//
-utile.inherits(RoutingProxy, events.EventEmitter);
-
-//
-// ### function add (options)
-// #### @options {Object} Options for the `HttpProxy` to add.
-// Adds a new instance of `HttpProxy` to this `RoutingProxy` instance
-// for the specified `options.host` and `options.port`.
-//
-RoutingProxy.prototype.add = function (options) {
-  var self = this,
-      key = this._getKey(options);
-
-  //
-  // TODO: Consume properties in `options` related to the `ProxyTable`.
-  //
-  options.target            = options.target       || {};
-  options.target.host       = options.target.host  || options.host;
-  options.target.port       = options.target.port  || options.port;
-  options.target.socketPath = options.target.socketPath || options.socketPath;
-  options.target.https      = this.target && this.target.https ||
-                              options.target && options.target.https;
-  options.target.maxSockets = this.target && this.target.maxSockets;
-
-  //
-  // Setup options to pass-thru to the new `HttpProxy` instance
-  // for the specified `options.host` and `options.port` pair.
-  //
-  ['https', 'enable', 'forward', 'changeOrigin'].forEach(function (key) {
-    if (options[key] !== false && self[key]) {
-      options[key] = self[key];
-    }
-  });
-
-  this.proxies[key] = new HttpProxy(options);
-
-  if (this.listeners('proxyError').length > 0) {
-    this.proxies[key].on('proxyError', this.emit.bind(this, 'proxyError'));
-  }
-
-  if (this.listeners('webSocketProxyError').length > 0) {
-    this.proxies[key].on('webSocketProxyError', this.emit.bind(this, 'webSocketProxyError'));
-  }
-
-  [
-    'start',
-    'forward',
-    'end',
-    'proxyResponse',
-    'websocket:start',
-    'websocket:end',
-    'websocket:incoming',
-    'websocket:outgoing'
-  ].forEach(function (event) {
-    this.proxies[key].on(event, this.emit.bind(this, event));
-  }, this);
-};
-
-//
-// ### function remove (options)
-// #### @options {Object} Options mapping to the `HttpProxy` to remove.
-// Removes an instance of `HttpProxy` from this `RoutingProxy` instance
-// for the specified `options.host` and `options.port` (if they exist).
-//
-RoutingProxy.prototype.remove = function (options) {
-  var key = this._getKey(options),
-      proxy = this.proxies[key];
-
-  delete this.proxies[key];
-  return proxy;
-};
-
-//
-// ### function close()
-// Cleans up any state left behind (sockets, timeouts, etc)
-// associated with this instance.
-//
-RoutingProxy.prototype.close = function () {
-  var self = this;
-
-  if (this.proxyTable) {
-    //
-    // Close the `RoutingTable` associated with
-    // this instance (if any).
-    //
-    this.proxyTable.close();
-  }
-
-  //
-  // Close all sockets for all `HttpProxy` object(s)
-  // associated with this instance.
-  //
-  Object.keys(this.proxies).forEach(function (key) {
-    self.proxies[key].close();
-  });
-};
-
-//
-// ### function proxyRequest (req, res, [port, host, paused])
-// #### @req {ServerRequest} Incoming HTTP Request to proxy.
-// #### @res {ServerResponse} Outgoing HTTP Request to write proxied data to.
-// #### @options {Object} Options for the outgoing proxy request.
-//
-//     options.port {number} Port to use on the proxy target host.
-//     options.host {string} Host of the proxy target.
-//     options.buffer {Object} Result from `httpProxy.buffer(req)`
-//     options.https {Object|boolean} Settings for https.
-//
-RoutingProxy.prototype.proxyRequest = function (req, res, options) {
-  options = options || {};
-
-  var location;
-
-  //
-  // Check the proxy table for this instance to see if we need
-  // to get the proxy location for the request supplied. We will
-  // always ignore the proxyTable if an explicit `port` and `host`
-  // arguments are supplied to `proxyRequest`.
-  //
-  if (this.proxyTable && !options.host) {
-    location = this.proxyTable.getProxyLocation(req);
-
-    //
-    // If no location is returned from the ProxyTable instance
-    // then respond with `404` since we do not have a valid proxy target.
-    //
-    if (!location) {
-      try {
-        if (!this.emit('notFound', req, res)) {
-          res.writeHead(404);
-          res.end();
-        }
-      }
-      catch (er) {
-        console.error("res.writeHead/res.end error: %s", er.message);
-      }
-
-      return;
-    }
-
-    //
-    // When using the ProxyTable in conjunction with an HttpProxy instance
-    // only the following arguments are valid:
-    //
-    // * `proxy.proxyRequest(req, res, { host: 'localhost' })`: This will be skipped
-    // * `proxy.proxyRequest(req, res, { buffer: buffer })`: Buffer will get updated appropriately
-    // * `proxy.proxyRequest(req, res)`: Options will be assigned appropriately.
-    //
-    options.port = location.port;
-    options.host = location.host;
-  }
-
-  var key = this._getKey(options),
-      proxy;
-
-  if ((this.target && this.target.https)
-    || (location && location.protocol === 'https')) {
-    options.target = options.target || {};
-    options.target.https = true;
-  }
-
-  if (!this.proxies[key]) {
-    this.add(utile.clone(options));
-  }
-
-  proxy = this.proxies[key];
-  proxy.proxyRequest(req, res, options.buffer);
-};
-
-//
-// ### function proxyWebSocketRequest (req, socket, head, options)
-// #### @req {ServerRequest} Websocket request to proxy.
-// #### @socket {net.Socket} Socket for the underlying HTTP request
-// #### @head {string} Headers for the Websocket request.
-// #### @options {Object} Options to use when proxying this request.
-//
-//     options.port {number} Port to use on the proxy target host.
-//     options.host {string} Host of the proxy target.
-//     options.buffer {Object} Result from `httpProxy.buffer(req)`
-//     options.https {Object|boolean} Settings for https.
-//
-RoutingProxy.prototype.proxyWebSocketRequest = function (req, socket, head, options) {
-  options = options || {};
-
-  var location,
-      proxy,
-      key;
-
-  if (this.proxyTable && !options.host) {
-    location = this.proxyTable.getProxyLocation(req);
-
-    if (!location) {
-      return socket.destroy();
-    }
-
-    options.port = location.port;
-    options.host = location.host;
-  }
-
-  key = this._getKey(options);
-
-  if (!this.proxies[key]) {
-    this.add(utile.clone(options));
-  }
-
-  proxy = this.proxies[key];
-  proxy.proxyWebSocketRequest(req, socket, head, options.buffer);
-};
-
-//
-// ### function addHost (host, target)
-// #### @host {String} Host to add to proxyTable
-// #### @target {String} Target to add to proxyTable
-// Adds a host to proxyTable
-//
-RoutingProxy.prototype.addHost = function (host, target) {
-  if (this.proxyTable) {
-    this.proxyTable.addRoute(host, target);
-  }
-};
-
-//
-// ### function removeHost (host)
-// #### @host {String} Host to remove from proxyTable
-// Removes a host to proxyTable
-//
-RoutingProxy.prototype.removeHost = function (host) {
-  if (this.proxyTable) {
-    this.proxyTable.removeRoute(host);
-  }
-};
-
-//
-// ### @private function _getKey (options)
-// #### @options {Object} Options to extract the key from
-// Ensures that the appropriate options are present in the `options`
-// provided and responds with a string key representing the `host`, `port`
-// combination contained within.
-//
-RoutingProxy.prototype._getKey = function (options) {
-  if (!options || ((!options.host || !options.port)
-    && (!options.target || !options.target.host || !options.target.port))) {
-    throw new Error('options.host and options.port or options.target are required.');
-  }
-
-  return [
-    options.host || options.target.host,
-    options.port || options.target.port
-  ].join(':');
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/colors/MIT-LICENSE.txt
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/colors/MIT-LICENSE.txt b/web/demos/package/node_modules/http-proxy/node_modules/colors/MIT-LICENSE.txt
deleted file mode 100644
index 7dca107..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/colors/MIT-LICENSE.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2010 
-
-Marak Squires
-Alexis Sellier (cloudhead)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/colors/ReadMe.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/colors/ReadMe.md b/web/demos/package/node_modules/http-proxy/node_modules/colors/ReadMe.md
deleted file mode 100644
index 0eda52d..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/colors/ReadMe.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# colors.js - get color and style in your node.js console ( and browser ) like what
-
-<img src="http://i.imgur.com/goJdO.png" border = "0"/>
-
-
-## Installation
-
-    npm install colors
-
-## colors and styles!
-
-- bold
-- italic
-- underline
-- inverse
-- yellow
-- cyan
-- white
-- magenta
-- green
-- red
-- grey
-- blue
-- rainbow
-- zebra
-- random
-
-## Usage
-
-``` js
-var colors = require('./colors');
-
-console.log('hello'.green); // outputs green text
-console.log('i like cake and pies'.underline.red) // outputs red underlined text
-console.log('inverse the color'.inverse); // inverses the color
-console.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)
-```
-
-# Creating Custom themes
-
-```js
-
-var colors = require('colors');
-
-colors.setTheme({
-  silly: 'rainbow',
-  input: 'grey',
-  verbose: 'cyan',
-  prompt: 'grey',
-  info: 'green',
-  data: 'grey',
-  help: 'cyan',
-  warn: 'yellow',
-  debug: 'blue',
-  error: 'red'
-});
-
-// outputs red text
-console.log("this is an error".error);
-
-// outputs yellow text
-console.log("this is a warning".warn);
-```
-
-
-### Contributors 
-
-Marak (Marak Squires)
-Alexis Sellier (cloudhead)
-mmalecki (Maciej Małecki)
-nicoreed (Nico Reed)
-morganrallen (Morgan Allen)
-JustinCampbell (Justin Campbell)
-ded (Dustin Diaz)
-
-
-####  , Marak Squires , Justin Campbell, Dustin Diaz (@ded)


[06/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/bson.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/bson.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/bson.js
deleted file mode 100644
index 7df6896..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/bson.js
+++ /dev/null
@@ -1,1543 +0,0 @@
-var Long = require('./long').Long
-  , Double = require('./double').Double
-  , Timestamp = require('./timestamp').Timestamp
-  , ObjectID = require('./objectid').ObjectID
-  , Symbol = require('./symbol').Symbol
-  , Code = require('./code').Code
-  , MinKey = require('./min_key').MinKey
-  , MaxKey = require('./max_key').MaxKey
-  , DBRef = require('./db_ref').DBRef
-  , Binary = require('./binary').Binary
-  , BinaryParser = require('./binary_parser').BinaryParser
-  , writeIEEE754 = require('./float_parser').writeIEEE754
-  , readIEEE754 = require('./float_parser').readIEEE754
-
-// To ensure that 0.4 of node works correctly
-var isDate = function isDate(d) {
-  return typeof d === 'object' && Object.prototype.toString.call(d) === '[object Date]';
-}
-
-/**
- * Create a new BSON instance
- *
- * @class Represents the BSON Parser
- * @return {BSON} instance of BSON Parser.
- */
-function BSON () {};
-
-/**
- * @ignore
- * @api private
- */
-// BSON MAX VALUES
-BSON.BSON_INT32_MAX = 0x7FFFFFFF;
-BSON.BSON_INT32_MIN = -0x80000000;
-
-BSON.BSON_INT64_MAX = Math.pow(2, 63) - 1;
-BSON.BSON_INT64_MIN = -Math.pow(2, 63);
-
-// JS MAX PRECISE VALUES
-BSON.JS_INT_MAX = 0x20000000000000;  // Any integer up to 2^53 can be precisely represented by a double.
-BSON.JS_INT_MIN = -0x20000000000000;  // Any integer down to -2^53 can be precisely represented by a double.
-
-// Internal long versions
-var JS_INT_MAX_LONG = Long.fromNumber(0x20000000000000);  // Any integer up to 2^53 can be precisely represented by a double.
-var JS_INT_MIN_LONG = Long.fromNumber(-0x20000000000000);  // Any integer down to -2^53 can be precisely represented by a double.
-
-/**
- * Number BSON Type
- *
- * @classconstant BSON_DATA_NUMBER
- **/
-BSON.BSON_DATA_NUMBER = 1;
-/**
- * String BSON Type
- *
- * @classconstant BSON_DATA_STRING
- **/
-BSON.BSON_DATA_STRING = 2;
-/**
- * Object BSON Type
- *
- * @classconstant BSON_DATA_OBJECT
- **/
-BSON.BSON_DATA_OBJECT = 3;
-/**
- * Array BSON Type
- *
- * @classconstant BSON_DATA_ARRAY
- **/
-BSON.BSON_DATA_ARRAY = 4;
-/**
- * Binary BSON Type
- *
- * @classconstant BSON_DATA_BINARY
- **/
-BSON.BSON_DATA_BINARY = 5;
-/**
- * ObjectID BSON Type
- *
- * @classconstant BSON_DATA_OID
- **/
-BSON.BSON_DATA_OID = 7;
-/**
- * Boolean BSON Type
- *
- * @classconstant BSON_DATA_BOOLEAN
- **/
-BSON.BSON_DATA_BOOLEAN = 8;
-/**
- * Date BSON Type
- *
- * @classconstant BSON_DATA_DATE
- **/
-BSON.BSON_DATA_DATE = 9;
-/**
- * null BSON Type
- *
- * @classconstant BSON_DATA_NULL
- **/
-BSON.BSON_DATA_NULL = 10;
-/**
- * RegExp BSON Type
- *
- * @classconstant BSON_DATA_REGEXP
- **/
-BSON.BSON_DATA_REGEXP = 11;
-/**
- * Code BSON Type
- *
- * @classconstant BSON_DATA_CODE
- **/
-BSON.BSON_DATA_CODE = 13;
-/**
- * Symbol BSON Type
- *
- * @classconstant BSON_DATA_SYMBOL
- **/
-BSON.BSON_DATA_SYMBOL = 14;
-/**
- * Code with Scope BSON Type
- *
- * @classconstant BSON_DATA_CODE_W_SCOPE
- **/
-BSON.BSON_DATA_CODE_W_SCOPE = 15;
-/**
- * 32 bit Integer BSON Type
- *
- * @classconstant BSON_DATA_INT
- **/
-BSON.BSON_DATA_INT = 16;
-/**
- * Timestamp BSON Type
- *
- * @classconstant BSON_DATA_TIMESTAMP
- **/
-BSON.BSON_DATA_TIMESTAMP = 17;
-/**
- * Long BSON Type
- *
- * @classconstant BSON_DATA_LONG
- **/
-BSON.BSON_DATA_LONG = 18;
-/**
- * MinKey BSON Type
- *
- * @classconstant BSON_DATA_MIN_KEY
- **/
-BSON.BSON_DATA_MIN_KEY = 0xff;
-/**
- * MaxKey BSON Type
- *
- * @classconstant BSON_DATA_MAX_KEY
- **/
-BSON.BSON_DATA_MAX_KEY = 0x7f;
-
-/**
- * Binary Default Type
- *
- * @classconstant BSON_BINARY_SUBTYPE_DEFAULT
- **/
-BSON.BSON_BINARY_SUBTYPE_DEFAULT = 0;
-/**
- * Binary Function Type
- *
- * @classconstant BSON_BINARY_SUBTYPE_FUNCTION
- **/
-BSON.BSON_BINARY_SUBTYPE_FUNCTION = 1;
-/**
- * Binary Byte Array Type
- *
- * @classconstant BSON_BINARY_SUBTYPE_BYTE_ARRAY
- **/
-BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2;
-/**
- * Binary UUID Type
- *
- * @classconstant BSON_BINARY_SUBTYPE_UUID
- **/
-BSON.BSON_BINARY_SUBTYPE_UUID = 3;
-/**
- * Binary MD5 Type
- *
- * @classconstant BSON_BINARY_SUBTYPE_MD5
- **/
-BSON.BSON_BINARY_SUBTYPE_MD5 = 4;
-/**
- * Binary User Defined Type
- *
- * @classconstant BSON_BINARY_SUBTYPE_USER_DEFINED
- **/
-BSON.BSON_BINARY_SUBTYPE_USER_DEFINED = 128;
-
-/**
- * Calculate the bson size for a passed in Javascript object.
- *
- * @param {Object} object the Javascript object to calculate the BSON byte size for.
- * @param {Boolean} [serializeFunctions] serialize all functions in the object **(default:false)**.
- * @return {Number} returns the number of bytes the BSON object will take up.
- * @api public
- */
-BSON.calculateObjectSize = function calculateObjectSize(object, serializeFunctions) {
-  var totalLength = (4 + 1);
-
-  if(Array.isArray(object)) {
-    for(var i = 0; i < object.length; i++) {
-      totalLength += calculateElement(i.toString(), object[i], serializeFunctions)
-    }
-  } else {
-		// If we have toBSON defined, override the current object
-		if(object.toBSON) {
-			object = object.toBSON();
-		}
-
-		// Calculate size
-    for(var key in object) {
-      totalLength += calculateElement(key, object[key], serializeFunctions)
-    }
-  }
-
-  return totalLength;
-}
-
-/**
- * @ignore
- * @api private
- */
-function calculateElement(name, value, serializeFunctions) {
-  var isBuffer = typeof Buffer !== 'undefined';
-
-  switch(typeof value) {
-    case 'string':
-      return 1 + (!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1 + 4 + (!isBuffer ? numberOfBytes(value) : Buffer.byteLength(value, 'utf8')) + 1;
-    case 'number':
-      if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) {
-        if(value >= BSON.BSON_INT32_MIN && value <= BSON.BSON_INT32_MAX) { // 32 bit
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (4 + 1);
-        } else {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1);
-        }
-      } else {  // 64 bit
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1);
-      }
-    case 'undefined':
-      return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1);
-    case 'boolean':
-      return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1 + 1);
-    case 'object':
-      if(value == null || value instanceof MinKey || value instanceof MaxKey || value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1);
-      } else if(value instanceof ObjectID || value['_bsontype'] == 'ObjectID') {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (12 + 1);
-      } else if(value instanceof Date || isDate(value)) {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1);
-      } else if(typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1 + 4 + 1) + value.length;
-      } else if(value instanceof Long || value instanceof Double || value instanceof Timestamp
-          || value['_bsontype'] == 'Long' || value['_bsontype'] == 'Double' || value['_bsontype'] == 'Timestamp') {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1);
-      } else if(value instanceof Code || value['_bsontype'] == 'Code') {
-        // Calculate size depending on the availability of a scope
-        if(value.scope != null && Object.keys(value.scope).length > 0) {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + 4 + (!isBuffer ? numberOfBytes(value.code.toString()) : Buffer.byteLength(value.code.toString(), 'utf8')) + 1 + BSON.calculateObjectSize(value.scope, serializeFunctions);
-        } else {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + (!isBuffer ? numberOfBytes(value.code.toString()) : Buffer.byteLength(value.code.toString(), 'utf8')) + 1;
-        }
-      } else if(value instanceof Binary || value['_bsontype'] == 'Binary') {
-        // Check what kind of subtype we have
-        if(value.sub_type == Binary.SUBTYPE_BYTE_ARRAY) {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (value.position + 1 + 4 + 1 + 4);
-        } else {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (value.position + 1 + 4 + 1);
-        }
-      } else if(value instanceof Symbol || value['_bsontype'] == 'Symbol') {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + ((!isBuffer ? numberOfBytes(value.value) : Buffer.byteLength(value.value, 'utf8')) + 4 + 1 + 1);
-      } else if(value instanceof DBRef || value['_bsontype'] == 'DBRef') {
-        // Set up correct object for serialization
-        var ordered_values = {
-            '$ref': value.namespace
-          , '$id' : value.oid
-        };
-
-        // Add db reference if it exists
-        if(null != value.db) {
-          ordered_values['$db'] = value.db;
-        }
-
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + BSON.calculateObjectSize(ordered_values, serializeFunctions);
-      } else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + (!isBuffer ? numberOfBytes(value.source) : Buffer.byteLength(value.source, 'utf8')) + 1
-            + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1
-      } else {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + BSON.calculateObjectSize(value, serializeFunctions) + 1;
-      }
-    case 'function':
-      // WTF for 0.4.X where typeof /someregexp/ === 'function'
-      if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]' || String.call(value) == '[object RegExp]') {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + (!isBuffer ? numberOfBytes(value.source) : Buffer.byteLength(value.source, 'utf8')) + 1
-          + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1
-      } else {
-        if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + 4 + (!isBuffer ? numberOfBytes(value.toString()) : Buffer.byteLength(value.toString(), 'utf8')) + 1 + BSON.calculateObjectSize(value.scope, serializeFunctions);
-        } else if(serializeFunctions) {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + (!isBuffer ? numberOfBytes(value.toString()) : Buffer.byteLength(value.toString(), 'utf8')) + 1;
-        }
-      }
-  }
-
-  return 0;
-}
-
-/**
- * Serialize a Javascript object using a predefined Buffer and index into the buffer, useful when pre-allocating the space for serialization.
- *
- * @param {Object} object the Javascript object to serialize.
- * @param {Boolean} checkKeys the serializer will check if keys are valid.
- * @param {Buffer} buffer the Buffer you pre-allocated to store the serialized BSON object.
- * @param {Number} index the index in the buffer where we wish to start serializing into.
- * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**.
- * @return {Number} returns the new write index in the Buffer.
- * @api public
- */
-BSON.serializeWithBufferAndIndex = function serializeWithBufferAndIndex(object, checkKeys, buffer, index, serializeFunctions) {
-  // Default setting false
-  serializeFunctions = serializeFunctions == null ? false : serializeFunctions;
-  // Write end information (length of the object)
-  var size = buffer.length;
-  // Write the size of the object
-  buffer[index++] = size & 0xff;
-  buffer[index++] = (size >> 8) & 0xff;
-  buffer[index++] = (size >> 16) & 0xff;
-  buffer[index++] = (size >> 24) & 0xff;
-  return serializeObject(object, checkKeys, buffer, index, serializeFunctions) - 1;
-}
-
-/**
- * @ignore
- * @api private
- */
-var serializeObject = function(object, checkKeys, buffer, index, serializeFunctions) {
-  // Process the object
-  if(Array.isArray(object)) {
-    for(var i = 0; i < object.length; i++) {
-      index = packElement(i.toString(), object[i], checkKeys, buffer, index, serializeFunctions);
-    }
-  } else {
-		// If we have toBSON defined, override the current object
-		if(object.toBSON) {
-			object = object.toBSON();
-		}
-
-		// Serialize the object
-    for(var key in object) {
-      // Check the key and throw error if it's illegal
-      if (key != '$db' && key != '$ref' && key != '$id') {
-        // dollars and dots ok
-        BSON.checkKey(key, !checkKeys);
-      }
-
-      // Pack the element
-      index = packElement(key, object[key], checkKeys, buffer, index, serializeFunctions);
-    }
-  }
-
-  // Write zero
-  buffer[index++] = 0;
-  return index;
-}
-
-var stringToBytes = function(str) {
-  var ch, st, re = [];
-  for (var i = 0; i < str.length; i++ ) {
-    ch = str.charCodeAt(i);  // get char
-    st = [];                 // set up "stack"
-    do {
-      st.push( ch & 0xFF );  // push byte to stack
-      ch = ch >> 8;          // shift value down by 1 byte
-    }
-    while ( ch );
-    // add stack contents to result
-    // done because chars have "wrong" endianness
-    re = re.concat( st.reverse() );
-  }
-  // return an array of bytes
-  return re;
-}
-
-var numberOfBytes = function(str) {
-  var ch, st, re = 0;
-  for (var i = 0; i < str.length; i++ ) {
-    ch = str.charCodeAt(i);  // get char
-    st = [];                 // set up "stack"
-    do {
-      st.push( ch & 0xFF );  // push byte to stack
-      ch = ch >> 8;          // shift value down by 1 byte
-    }
-    while ( ch );
-    // add stack contents to result
-    // done because chars have "wrong" endianness
-    re = re + st.length;
-  }
-  // return an array of bytes
-  return re;
-}
-
-/**
- * @ignore
- * @api private
- */
-var writeToTypedArray = function(buffer, string, index) {
-  var bytes = stringToBytes(string);
-  for(var i = 0; i < bytes.length; i++) {
-    buffer[index + i] = bytes[i];
-  }
-  return bytes.length;
-}
-
-/**
- * @ignore
- * @api private
- */
-var supportsBuffer = typeof Buffer != 'undefined';
-
-/**
- * @ignore
- * @api private
- */
-var packElement = function(name, value, checkKeys, buffer, index, serializeFunctions) {
-  var startIndex = index;
-
-  switch(typeof value) {
-    case 'string':
-      // Encode String type
-      buffer[index++] = BSON.BSON_DATA_STRING;
-      // Number of written bytes
-      var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-      // Encode the name
-      index = index + numberOfWrittenBytes + 1;
-      buffer[index - 1] = 0;
-
-      // Calculate size
-      var size = supportsBuffer ? Buffer.byteLength(value) + 1 : numberOfBytes(value) + 1;
-      // Write the size of the string to buffer
-      buffer[index + 3] = (size >> 24) & 0xff;
-      buffer[index + 2] = (size >> 16) & 0xff;
-      buffer[index + 1] = (size >> 8) & 0xff;
-      buffer[index] = size & 0xff;
-      // Ajust the index
-      index = index + 4;
-      // Write the string
-      supportsBuffer ? buffer.write(value, index, 'utf8') : writeToTypedArray(buffer, value, index);
-      // Update index
-      index = index + size - 1;
-      // Write zero
-      buffer[index++] = 0;
-      // Return index
-      return index;
-    case 'number':
-      // We have an integer value
-      if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) {
-        // If the value fits in 32 bits encode as int, if it fits in a double
-        // encode it as a double, otherwise long
-        if(value >= BSON.BSON_INT32_MIN && value <= BSON.BSON_INT32_MAX) {
-          // Set int type 32 bits or less
-          buffer[index++] = BSON.BSON_DATA_INT;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          // Write the int value
-          buffer[index++] = value & 0xff;
-          buffer[index++] = (value >> 8) & 0xff;
-          buffer[index++] = (value >> 16) & 0xff;
-          buffer[index++] = (value >> 24) & 0xff;
-        } else if(value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) {
-          // Encode as double
-          buffer[index++] = BSON.BSON_DATA_NUMBER;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          // Write float
-          writeIEEE754(buffer, value, index, 'little', 52, 8);
-          // Ajust index
-          index = index + 8;
-        } else {
-          // Set long type
-          buffer[index++] = BSON.BSON_DATA_LONG;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          var longVal = Long.fromNumber(value);
-          var lowBits = longVal.getLowBits();
-          var highBits = longVal.getHighBits();
-          // Encode low bits
-          buffer[index++] = lowBits & 0xff;
-          buffer[index++] = (lowBits >> 8) & 0xff;
-          buffer[index++] = (lowBits >> 16) & 0xff;
-          buffer[index++] = (lowBits >> 24) & 0xff;
-          // Encode high bits
-          buffer[index++] = highBits & 0xff;
-          buffer[index++] = (highBits >> 8) & 0xff;
-          buffer[index++] = (highBits >> 16) & 0xff;
-          buffer[index++] = (highBits >> 24) & 0xff;
-        }
-      } else {
-        // Encode as double
-        buffer[index++] = BSON.BSON_DATA_NUMBER;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Write float
-        writeIEEE754(buffer, value, index, 'little', 52, 8);
-        // Ajust index
-        index = index + 8;
-      }
-
-      return index;
-    case 'undefined':
-      // Set long type
-      buffer[index++] = BSON.BSON_DATA_NULL;
-      // Number of written bytes
-      var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-      // Encode the name
-      index = index + numberOfWrittenBytes + 1;
-      buffer[index - 1] = 0;
-      return index;
-    case 'boolean':
-      // Write the type
-      buffer[index++] = BSON.BSON_DATA_BOOLEAN;
-      // Number of written bytes
-      var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-      // Encode the name
-      index = index + numberOfWrittenBytes + 1;
-      buffer[index - 1] = 0;
-      // Encode the boolean value
-      buffer[index++] = value ? 1 : 0;
-      return index;
-    case 'object':
-      if(value === null || value instanceof MinKey || value instanceof MaxKey
-          || value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') {
-        // Write the type of either min or max key
-        if(value === null) {
-          buffer[index++] = BSON.BSON_DATA_NULL;
-        } else if(value instanceof MinKey) {
-          buffer[index++] = BSON.BSON_DATA_MIN_KEY;
-        } else {
-          buffer[index++] = BSON.BSON_DATA_MAX_KEY;
-        }
-
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        return index;
-      } else if(value instanceof ObjectID || value['_bsontype'] == 'ObjectID') {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_OID;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-
-        // Write objectid
-        supportsBuffer ? buffer.write(value.id, index, 'binary') : writeToTypedArray(buffer, value.id, index);
-        // Ajust index
-        index = index + 12;
-        return index;
-      } else if(value instanceof Date || isDate(value)) {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_DATE;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-
-        // Write the date
-        var dateInMilis = Long.fromNumber(value.getTime());
-        var lowBits = dateInMilis.getLowBits();
-        var highBits = dateInMilis.getHighBits();
-        // Encode low bits
-        buffer[index++] = lowBits & 0xff;
-        buffer[index++] = (lowBits >> 8) & 0xff;
-        buffer[index++] = (lowBits >> 16) & 0xff;
-        buffer[index++] = (lowBits >> 24) & 0xff;
-        // Encode high bits
-        buffer[index++] = highBits & 0xff;
-        buffer[index++] = (highBits >> 8) & 0xff;
-        buffer[index++] = (highBits >> 16) & 0xff;
-        buffer[index++] = (highBits >> 24) & 0xff;
-        return index;
-      } else if(typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_BINARY;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Get size of the buffer (current write point)
-        var size = value.length;
-        // Write the size of the string to buffer
-        buffer[index++] = size & 0xff;
-        buffer[index++] = (size >> 8) & 0xff;
-        buffer[index++] = (size >> 16) & 0xff;
-        buffer[index++] = (size >> 24) & 0xff;
-        // Write the default subtype
-        buffer[index++] = BSON.BSON_BINARY_SUBTYPE_DEFAULT;
-        // Copy the content form the binary field to the buffer
-        value.copy(buffer, index, 0, size);
-        // Adjust the index
-        index = index + size;
-        return index;
-      } else if(value instanceof Long || value instanceof Timestamp || value['_bsontype'] == 'Long' || value['_bsontype'] == 'Timestamp') {
-        // Write the type
-        buffer[index++] = value instanceof Long ? BSON.BSON_DATA_LONG : BSON.BSON_DATA_TIMESTAMP;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Write the date
-        var lowBits = value.getLowBits();
-        var highBits = value.getHighBits();
-        // Encode low bits
-        buffer[index++] = lowBits & 0xff;
-        buffer[index++] = (lowBits >> 8) & 0xff;
-        buffer[index++] = (lowBits >> 16) & 0xff;
-        buffer[index++] = (lowBits >> 24) & 0xff;
-        // Encode high bits
-        buffer[index++] = highBits & 0xff;
-        buffer[index++] = (highBits >> 8) & 0xff;
-        buffer[index++] = (highBits >> 16) & 0xff;
-        buffer[index++] = (highBits >> 24) & 0xff;
-        return index;
-      } else if(value instanceof Double || value['_bsontype'] == 'Double') {
-        // Encode as double
-        buffer[index++] = BSON.BSON_DATA_NUMBER;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Write float
-        writeIEEE754(buffer, value, index, 'little', 52, 8);
-        // Ajust index
-        index = index + 8;
-        return index;
-      } else if(value instanceof Code || value['_bsontype'] == 'Code') {
-        if(value.scope != null && Object.keys(value.scope).length > 0) {
-          // Write the type
-          buffer[index++] = BSON.BSON_DATA_CODE_W_SCOPE;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          // Calculate the scope size
-          var scopeSize = BSON.calculateObjectSize(value.scope, serializeFunctions);
-          // Function string
-          var functionString = value.code.toString();
-          // Function Size
-          var codeSize = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1;
-
-          // Calculate full size of the object
-          var totalSize = 4 + codeSize + scopeSize + 4;
-
-          // Write the total size of the object
-          buffer[index++] = totalSize & 0xff;
-          buffer[index++] = (totalSize >> 8) & 0xff;
-          buffer[index++] = (totalSize >> 16) & 0xff;
-          buffer[index++] = (totalSize >> 24) & 0xff;
-
-          // Write the size of the string to buffer
-          buffer[index++] = codeSize & 0xff;
-          buffer[index++] = (codeSize >> 8) & 0xff;
-          buffer[index++] = (codeSize >> 16) & 0xff;
-          buffer[index++] = (codeSize >> 24) & 0xff;
-
-          // Write the string
-          supportsBuffer ? buffer.write(functionString, index, 'utf8') : writeToTypedArray(buffer, functionString, index);
-          // Update index
-          index = index + codeSize - 1;
-          // Write zero
-          buffer[index++] = 0;
-          // Serialize the scope object
-          var scopeObjectBuffer = supportsBuffer ? new Buffer(scopeSize) : new Uint8Array(new ArrayBuffer(scopeSize));
-          // Execute the serialization into a seperate buffer
-          serializeObject(value.scope, checkKeys, scopeObjectBuffer, 0, serializeFunctions);
-
-          // Adjusted scope Size (removing the header)
-          var scopeDocSize = scopeSize;
-          // Write scope object size
-          buffer[index++] = scopeDocSize & 0xff;
-          buffer[index++] = (scopeDocSize >> 8) & 0xff;
-          buffer[index++] = (scopeDocSize >> 16) & 0xff;
-          buffer[index++] = (scopeDocSize >> 24) & 0xff;
-
-          // Write the scopeObject into the buffer
-          supportsBuffer ? scopeObjectBuffer.copy(buffer, index, 0, scopeSize) : buffer.set(scopeObjectBuffer, index);
-          // Adjust index, removing the empty size of the doc (5 bytes 0000000005)
-          index = index + scopeDocSize - 5;
-          // Write trailing zero
-          buffer[index++] = 0;
-          return index
-        } else {
-          buffer[index++] = BSON.BSON_DATA_CODE;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          // Function string
-          var functionString = value.code.toString();
-          // Function Size
-          var size = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1;
-          // Write the size of the string to buffer
-          buffer[index++] = size & 0xff;
-          buffer[index++] = (size >> 8) & 0xff;
-          buffer[index++] = (size >> 16) & 0xff;
-          buffer[index++] = (size >> 24) & 0xff;
-          // Write the string
-          supportsBuffer ? buffer.write(functionString, index, 'utf8') : writeToTypedArray(buffer, functionString, index);
-          // Update index
-          index = index + size - 1;
-          // Write zero
-          buffer[index++] = 0;
-          return index;
-        }
-      } else if(value instanceof Binary || value['_bsontype'] == 'Binary') {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_BINARY;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Extract the buffer
-        var data = value.value(true);
-        // Calculate size
-        var size = value.position;
-        // Write the size of the string to buffer
-        buffer[index++] = size & 0xff;
-        buffer[index++] = (size >> 8) & 0xff;
-        buffer[index++] = (size >> 16) & 0xff;
-        buffer[index++] = (size >> 24) & 0xff;
-        // Write the subtype to the buffer
-        buffer[index++] = value.sub_type;
-
-        // If we have binary type 2 the 4 first bytes are the size
-        if(value.sub_type == Binary.SUBTYPE_BYTE_ARRAY) {
-          buffer[index++] = size & 0xff;
-          buffer[index++] = (size >> 8) & 0xff;
-          buffer[index++] = (size >> 16) & 0xff;
-          buffer[index++] = (size >> 24) & 0xff;
-        }
-
-        // Write the data to the object
-        supportsBuffer ? data.copy(buffer, index, 0, value.position) : buffer.set(data, index);
-        // Ajust index
-        index = index + value.position;
-        return index;
-      } else if(value instanceof Symbol || value['_bsontype'] == 'Symbol') {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_SYMBOL;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Calculate size
-        var size = supportsBuffer ? Buffer.byteLength(value.value) + 1 : numberOfBytes(value.value) + 1;
-        // Write the size of the string to buffer
-        buffer[index++] = size & 0xff;
-        buffer[index++] = (size >> 8) & 0xff;
-        buffer[index++] = (size >> 16) & 0xff;
-        buffer[index++] = (size >> 24) & 0xff;
-        // Write the string
-        buffer.write(value.value, index, 'utf8');
-        // Update index
-        index = index + size - 1;
-        // Write zero
-        buffer[index++] = 0x00;
-        return index;
-      } else if(value instanceof DBRef || value['_bsontype'] == 'DBRef') {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_OBJECT;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Set up correct object for serialization
-        var ordered_values = {
-            '$ref': value.namespace
-          , '$id' : value.oid
-        };
-
-        // Add db reference if it exists
-        if(null != value.db) {
-          ordered_values['$db'] = value.db;
-        }
-
-        // Message size
-        var size = BSON.calculateObjectSize(ordered_values, serializeFunctions);
-        // Serialize the object
-        var endIndex = BSON.serializeWithBufferAndIndex(ordered_values, checkKeys, buffer, index, serializeFunctions);
-        // Write the size of the string to buffer
-        buffer[index++] = size & 0xff;
-        buffer[index++] = (size >> 8) & 0xff;
-        buffer[index++] = (size >> 16) & 0xff;
-        buffer[index++] = (size >> 24) & 0xff;
-        // Write zero for object
-        buffer[endIndex++] = 0x00;
-        // Return the end index
-        return endIndex;
-      } else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_REGEXP;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-
-        // Write the regular expression string
-        supportsBuffer ? buffer.write(value.source, index, 'utf8') : writeToTypedArray(buffer, value.source, index);
-        // Adjust the index
-        index = index + (supportsBuffer ? Buffer.byteLength(value.source) : numberOfBytes(value.source));
-        // Write zero
-        buffer[index++] = 0x00;
-        // Write the parameters
-        if(value.global) buffer[index++] = 0x73; // s
-        if(value.ignoreCase) buffer[index++] = 0x69; // i
-        if(value.multiline) buffer[index++] = 0x6d; // m
-        // Add ending zero
-        buffer[index++] = 0x00;
-        return index;
-      } else {
-        // Write the type
-        buffer[index++] = Array.isArray(value) ? BSON.BSON_DATA_ARRAY : BSON.BSON_DATA_OBJECT;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Adjust the index
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-	      var endIndex = serializeObject(value, checkKeys, buffer, index + 4, serializeFunctions);
-        // Write size
-        var size = endIndex - index;
-        // Write the size of the string to buffer
-        buffer[index++] = size & 0xff;
-        buffer[index++] = (size >> 8) & 0xff;
-        buffer[index++] = (size >> 16) & 0xff;
-        buffer[index++] = (size >> 24) & 0xff;
-        return endIndex;
-      }
-    case 'function':
-      // WTF for 0.4.X where typeof /someregexp/ === 'function'
-      if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]' || String.call(value) == '[object RegExp]') {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_REGEXP;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-
-        // Write the regular expression string
-        buffer.write(value.source, index, 'utf8');
-        // Adjust the index
-        index = index + (supportsBuffer ? Buffer.byteLength(value.source) : numberOfBytes(value.source));
-        // Write zero
-        buffer[index++] = 0x00;
-        // Write the parameters
-        if(value.global) buffer[index++] = 0x73; // s
-        if(value.ignoreCase) buffer[index++] = 0x69; // i
-        if(value.multiline) buffer[index++] = 0x6d; // m
-        // Add ending zero
-        buffer[index++] = 0x00;
-        return index;
-      } else {
-        if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) {
-          // Write the type
-          buffer[index++] = BSON.BSON_DATA_CODE_W_SCOPE;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          // Calculate the scope size
-          var scopeSize = BSON.calculateObjectSize(value.scope, serializeFunctions);
-          // Function string
-          var functionString = value.toString();
-          // Function Size
-          var codeSize = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1;
-
-          // Calculate full size of the object
-          var totalSize = 4 + codeSize + scopeSize;
-
-          // Write the total size of the object
-          buffer[index++] = totalSize & 0xff;
-          buffer[index++] = (totalSize >> 8) & 0xff;
-          buffer[index++] = (totalSize >> 16) & 0xff;
-          buffer[index++] = (totalSize >> 24) & 0xff;
-
-          // Write the size of the string to buffer
-          buffer[index++] = codeSize & 0xff;
-          buffer[index++] = (codeSize >> 8) & 0xff;
-          buffer[index++] = (codeSize >> 16) & 0xff;
-          buffer[index++] = (codeSize >> 24) & 0xff;
-
-          // Write the string
-          supportsBuffer ? buffer.write(functionString, index, 'utf8') : writeToTypedArray(buffer, functionString, index);
-          // Update index
-          index = index + codeSize - 1;
-          // Write zero
-          buffer[index++] = 0;
-          // Serialize the scope object
-          var scopeObjectBuffer = new Buffer(scopeSize);
-          // Execute the serialization into a seperate buffer
-          serializeObject(value.scope, checkKeys, scopeObjectBuffer, 0, serializeFunctions);
-
-          // Adjusted scope Size (removing the header)
-          var scopeDocSize = scopeSize - 4;
-          // Write scope object size
-          buffer[index++] = scopeDocSize & 0xff;
-          buffer[index++] = (scopeDocSize >> 8) & 0xff;
-          buffer[index++] = (scopeDocSize >> 16) & 0xff;
-          buffer[index++] = (scopeDocSize >> 24) & 0xff;
-
-          // Write the scopeObject into the buffer
-          scopeObjectBuffer.copy(buffer, index, 0, scopeSize);
-
-          // Adjust index, removing the empty size of the doc (5 bytes 0000000005)
-          index = index + scopeDocSize - 5;
-          // Write trailing zero
-          buffer[index++] = 0;
-          return index
-        } else if(serializeFunctions) {
-          buffer[index++] = BSON.BSON_DATA_CODE;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          // Function string
-          var functionString = value.toString();
-          // Function Size
-          var size = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1;
-          // Write the size of the string to buffer
-          buffer[index++] = size & 0xff;
-          buffer[index++] = (size >> 8) & 0xff;
-          buffer[index++] = (size >> 16) & 0xff;
-          buffer[index++] = (size >> 24) & 0xff;
-          // Write the string
-          supportsBuffer ? buffer.write(functionString, index, 'utf8') : writeToTypedArray(buffer, functionString, index);
-          // Update index
-          index = index + size - 1;
-          // Write zero
-          buffer[index++] = 0;
-          return index;
-        }
-      }
-  }
-
-  // If no value to serialize
-  return index;
-}
-
-/**
- * Serialize a Javascript object.
- *
- * @param {Object} object the Javascript object to serialize.
- * @param {Boolean} checkKeys the serializer will check if keys are valid.
- * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**.
- * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**.
- * @return {Buffer} returns the Buffer object containing the serialized object.
- * @api public
- */
-BSON.serialize = function(object, checkKeys, asBuffer, serializeFunctions) {
-  // Throw error if we are trying serialize an illegal type
-  if(object == null || typeof object != 'object' || Array.isArray(object)) 
-    throw new Error("Only javascript objects supported");
-  
-  // Emoty target buffer
-  var buffer = null;
-  // Calculate the size of the object
-  var size = BSON.calculateObjectSize(object, serializeFunctions);
-  // Fetch the best available type for storing the binary data
-  if(buffer = typeof Buffer != 'undefined') {
-    buffer = new Buffer(size);
-    asBuffer = true;
-  } else if(typeof Uint8Array != 'undefined') {
-    buffer = new Uint8Array(new ArrayBuffer(size));
-  } else {
-    buffer = new Array(size);
-  }
-
-  // If asBuffer is false use typed arrays
-  BSON.serializeWithBufferAndIndex(object, checkKeys, buffer, 0, serializeFunctions);
-  return buffer;
-}
-
-/**
- * Contains the function cache if we have that enable to allow for avoiding the eval step on each deserialization, comparison is by md5
- *
- * @ignore
- * @api private
- */
-var functionCache = BSON.functionCache = {};
-
-/**
- * Crc state variables shared by function
- *
- * @ignore
- * @api private
- */
-var table = [0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 
 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0
 xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0x
 B3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D];
-
-/**
- * CRC32 hash method, Fast and enough versitility for our usage
- *
- * @ignore
- * @api private
- */
-var crc32 =  function(string, start, end) {
-  var crc = 0
-  var x = 0;
-  var y = 0;
-  crc = crc ^ (-1);
-
-  for(var i = start, iTop = end; i < iTop;i++) {
-  	y = (crc ^ string[i]) & 0xFF;
-    x = table[y];
-  	crc = (crc >>> 8) ^ x;
-  }
-
-  return crc ^ (-1);
-}
-
-/**
- * Deserialize stream data as BSON documents.
- *
- * Options
- *  - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized.
- *  - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse.
- *  - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function.
- *  - **promoteLongs** {Boolean, default:true}, when deserializing a Long will fit it into a Number if it's smaller than 53 bits
- *
- * @param {Buffer} data the buffer containing the serialized set of BSON documents.
- * @param {Number} startIndex the start index in the data Buffer where the deserialization is to start.
- * @param {Number} numberOfDocuments number of documents to deserialize.
- * @param {Array} documents an array where to store the deserialized documents.
- * @param {Number} docStartIndex the index in the documents array from where to start inserting documents.
- * @param {Object} [options] additional options used for the deserialization.
- * @return {Number} returns the next index in the buffer after deserialization **x** numbers of documents.
- * @api public
- */
-BSON.deserializeStream = function(data, startIndex, numberOfDocuments, documents, docStartIndex, options) {
-  // if(numberOfDocuments !== documents.length) throw new Error("Number of expected results back is less than the number of documents");
-  options = options != null ? options : {};
-  var index = startIndex;
-  // Loop over all documents
-  for(var i = 0; i < numberOfDocuments; i++) {
-    // Find size of the document
-    var size = data[index] | data[index + 1] << 8 | data[index + 2] << 16 | data[index + 3] << 24;
-    // Update options with index
-    options['index'] = index;
-    // Parse the document at this point
-    documents[docStartIndex + i] = BSON.deserialize(data, options);
-    // Adjust index by the document size
-    index = index + size;
-  }
-
-  // Return object containing end index of parsing and list of documents
-  return index;
-}
-
-/**
- * Ensure eval is isolated.
- *
- * @ignore
- * @api private
- */
-var isolateEvalWithHash = function(functionCache, hash, functionString, object) {
-  // Contains the value we are going to set
-  var value = null;
-
-  // Check for cache hit, eval if missing and return cached function
-  if(functionCache[hash] == null) {
-    eval("value = " + functionString);
-    functionCache[hash] = value;
-  }
-  // Set the object
-  return functionCache[hash].bind(object);
-}
-
-/**
- * Ensure eval is isolated.
- *
- * @ignore
- * @api private
- */
-var isolateEval = function(functionString) {
-  // Contains the value we are going to set
-  var value = null;
-  // Eval the function
-  eval("value = " + functionString);
-  return value;
-}
-
-/**
- * Convert Uint8Array to String
- *
- * @ignore
- * @api private
- */
-var convertUint8ArrayToUtf8String = function(byteArray, startIndex, endIndex) {
-  return BinaryParser.decode_utf8(convertArraytoUtf8BinaryString(byteArray, startIndex, endIndex));
-}
-
-var convertArraytoUtf8BinaryString = function(byteArray, startIndex, endIndex) {
-  var result = "";
-  for(var i = startIndex; i < endIndex; i++) {
-    result = result + String.fromCharCode(byteArray[i]);
-  }
-
-  return result;
-};
-
-/**
- * Deserialize data as BSON.
- *
- * Options
- *  - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized.
- *  - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse.
- *  - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function.
- *  - **promoteLongs** {Boolean, default:true}, when deserializing a Long will fit it into a Number if it's smaller than 53 bits
- *
- * @param {Buffer} buffer the buffer containing the serialized set of BSON documents.
- * @param {Object} [options] additional options used for the deserialization.
- * @param {Boolean} [isArray] ignore used for recursive parsing.
- * @return {Object} returns the deserialized Javascript Object.
- * @api public
- */
-BSON.deserialize = function(buffer, options, isArray) {
-  // Options
-  options = options == null ? {} : options;
-  var evalFunctions = options['evalFunctions'] == null ? false : options['evalFunctions'];
-  var cacheFunctions = options['cacheFunctions'] == null ? false : options['cacheFunctions'];
-  var cacheFunctionsCrc32 = options['cacheFunctionsCrc32'] == null ? false : options['cacheFunctionsCrc32'];
-  var promoteLongs = options['promoteLongs'] == null ? true : options['promoteLongs'];
-
-  // Validate that we have at least 4 bytes of buffer
-  if(buffer.length < 5) throw new Error("corrupt bson message < 5 bytes long");
-
-  // Set up index
-  var index = typeof options['index'] == 'number' ? options['index'] : 0;
-  // Reads in a C style string
-  var readCStyleString = function() {
-    // Get the start search index
-    var i = index;
-    // Locate the end of the c string
-    while(buffer[i] !== 0x00 && i < buffer.length) { 
-      i++ 
-    }
-    // If are at the end of the buffer there is a problem with the document
-    if(i >= buffer.length) throw new Error("Bad BSON Document: illegal CString")
-    // Grab utf8 encoded string
-    var string = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, i) : convertUint8ArrayToUtf8String(buffer, index, i);
-    // Update index position
-    index = i + 1;
-    // Return string
-    return string;
-  }
-
-  // Create holding object
-  var object = isArray ? [] : {};
-
-  // Read the document size
-  var size = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-
-  // Ensure buffer is valid size
-  if(size < 5 || size > buffer.length) throw new Error("corrupt bson message");
-
-  // While we have more left data left keep parsing
-  while(true) {
-    // Read the type
-    var elementType = buffer[index++];
-    // If we get a zero it's the last byte, exit
-    if(elementType == 0) break;
-    // Read the name of the field
-    var name = readCStyleString();
-    // Switch on the type
-    switch(elementType) {
-      case BSON.BSON_DATA_OID:
-        var string = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('binary', index, index + 12) : convertArraytoUtf8BinaryString(buffer, index, index + 12);
-        // Decode the oid
-        object[name] = new ObjectID(string);
-        // Update index
-        index = index + 12;
-        break;
-      case BSON.BSON_DATA_STRING:
-        // Read the content of the field
-        var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Add string to object
-        object[name] = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1);
-        // Update parse index position
-        index = index + stringSize;
-        break;
-      case BSON.BSON_DATA_INT:
-        // Decode the 32bit value
-        object[name] = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        break;
-      case BSON.BSON_DATA_NUMBER:
-        // Decode the double value
-        object[name] = readIEEE754(buffer, index, 'little', 52, 8);
-        // Update the index
-        index = index + 8;
-        break;
-      case BSON.BSON_DATA_DATE:
-        // Unpack the low and high bits
-        var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Set date object
-        object[name] = new Date(new Long(lowBits, highBits).toNumber());
-        break;
-      case BSON.BSON_DATA_BOOLEAN:
-        // Parse the boolean value
-        object[name] = buffer[index++] == 1;
-        break;
-      case BSON.BSON_DATA_NULL:
-        // Parse the boolean value
-        object[name] = null;
-        break;
-      case BSON.BSON_DATA_BINARY:
-        // Decode the size of the binary blob
-        var binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Decode the subtype
-        var subType = buffer[index++];
-        // Decode as raw Buffer object if options specifies it
-        if(buffer['slice'] != null) {
-          // If we have subtype 2 skip the 4 bytes for the size
-          if(subType == Binary.SUBTYPE_BYTE_ARRAY) {
-            binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-          }
-          // Slice the data
-          object[name] = new Binary(buffer.slice(index, index + binarySize), subType);
-        } else {
-          var _buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(binarySize)) : new Array(binarySize);
-          // If we have subtype 2 skip the 4 bytes for the size
-          if(subType == Binary.SUBTYPE_BYTE_ARRAY) {
-            binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-          }
-          // Copy the data
-          for(var i = 0; i < binarySize; i++) {
-            _buffer[i] = buffer[index + i];
-          }
-          // Create the binary object
-          object[name] = new Binary(_buffer, subType);
-        }
-        // Update the index
-        index = index + binarySize;
-        break;
-      case BSON.BSON_DATA_ARRAY:
-        options['index'] = index;
-        // Decode the size of the array document
-        var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24;
-        // Set the array to the object
-        object[name] = BSON.deserialize(buffer, options, true);
-        // Adjust the index
-        index = index + objectSize;
-        break;
-      case BSON.BSON_DATA_OBJECT:
-        options['index'] = index;
-        // Decode the size of the object document
-        var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24;
-        // Set the array to the object
-        object[name] = BSON.deserialize(buffer, options, false);
-        // Adjust the index
-        index = index + objectSize;
-        break;
-      case BSON.BSON_DATA_REGEXP:
-        // Create the regexp
-        var source = readCStyleString();
-        var regExpOptions = readCStyleString();
-        // For each option add the corresponding one for javascript
-        var optionsArray = new Array(regExpOptions.length);
-
-        // Parse options
-        for(var i = 0; i < regExpOptions.length; i++) {
-          switch(regExpOptions[i]) {
-            case 'm':
-              optionsArray[i] = 'm';
-              break;
-            case 's':
-              optionsArray[i] = 'g';
-              break;
-            case 'i':
-              optionsArray[i] = 'i';
-              break;
-          }
-        }
-
-        object[name] = new RegExp(source, optionsArray.join(''));
-        break;
-      case BSON.BSON_DATA_LONG:
-        // Unpack the low and high bits
-        var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Create long object
-        var long = new Long(lowBits, highBits); 
-        // Promote the long if possible
-        if(promoteLongs) {
-          object[name] = long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG) ? long.toNumber() : long;
-        } else {
-          object[name] = long;
-        }
-        break;
-      case BSON.BSON_DATA_SYMBOL:
-        // Read the content of the field
-        var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Add string to object
-        object[name] = new Symbol(buffer.toString('utf8', index, index + stringSize - 1));
-        // Update parse index position
-        index = index + stringSize;
-        break;
-      case BSON.BSON_DATA_TIMESTAMP:
-        // Unpack the low and high bits
-        var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Set the object
-        object[name] = new Timestamp(lowBits, highBits);
-        break;
-      case BSON.BSON_DATA_MIN_KEY:
-        // Parse the object
-        object[name] = new MinKey();
-        break;
-      case BSON.BSON_DATA_MAX_KEY:
-        // Parse the object
-        object[name] = new MaxKey();
-        break;
-      case BSON.BSON_DATA_CODE:
-        // Read the content of the field
-        var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Function string
-        var functionString = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1);
-
-        // If we are evaluating the functions
-        if(evalFunctions) {
-          // Contains the value we are going to set
-          var value = null;
-          // If we have cache enabled let's look for the md5 of the function in the cache
-          if(cacheFunctions) {
-            var hash = cacheFunctionsCrc32 ? crc32(functionString) : functionString;
-            // Got to do this to avoid V8 deoptimizing the call due to finding eval
-            object[name] = isolateEvalWithHash(functionCache, hash, functionString, object);
-          } else {
-            // Set directly
-            object[name] = isolateEval(functionString);
-          }
-        } else {
-          object[name]  = new Code(functionString, {});
-        }
-
-        // Update parse index position
-        index = index + stringSize;
-        break;
-      case BSON.BSON_DATA_CODE_W_SCOPE:
-        // Read the content of the field
-        var totalSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Javascript function
-        var functionString = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1);
-        // Update parse index position
-        index = index + stringSize;
-        // Parse the element
-        options['index'] = index;
-        // Decode the size of the object document
-        var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24;
-        // Decode the scope object
-        var scopeObject = BSON.deserialize(buffer, options, false);
-        // Adjust the index
-        index = index + objectSize;
-
-        // If we are evaluating the functions
-        if(evalFunctions) {
-          // Contains the value we are going to set
-          var value = null;
-          // If we have cache enabled let's look for the md5 of the function in the cache
-          if(cacheFunctions) {
-            var hash = cacheFunctionsCrc32 ? crc32(functionString) : functionString;
-            // Got to do this to avoid V8 deoptimizing the call due to finding eval
-            object[name] = isolateEvalWithHash(functionCache, hash, functionString, object);
-          } else {
-            // Set directly
-            object[name] = isolateEval(functionString);
-          }
-
-          // Set the scope on the object
-          object[name].scope = scopeObject;
-        } else {
-          object[name]  = new Code(functionString, scopeObject);
-        }
-
-        // Add string to object
-        break;
-    }
-  }
-
-  // Check if we have a db ref object
-  if(object['$id'] != null) object = new DBRef(object['$ref'], object['$id'], object['$db']);
-
-  // Return the final objects
-  return object;
-}
-
-/**
- * Check if key name is valid.
- *
- * @ignore
- * @api private
- */
-BSON.checkKey = function checkKey (key, dollarsAndDotsOk) {
-  if (!key.length) return;
-  // Check if we have a legal key for the object
-  if (!!~key.indexOf("\x00")) {
-    // The BSON spec doesn't allow keys with null bytes because keys are
-    // null-terminated.
-    throw Error("key " + key + " must not contain null bytes");
-  }
-  if (!dollarsAndDotsOk) {
-    if('$' == key[0]) {
-      throw Error("key " + key + " must not start with '$'");
-    } else if (!!~key.indexOf('.')) {
-      throw Error("key " + key + " must not contain '.'");
-    }
-  }
-};
-
-/**
- * Deserialize data as BSON.
- *
- * Options
- *  - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized.
- *  - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse.
- *  - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function.
- *
- * @param {Buffer} buffer the buffer containing the serialized set of BSON documents.
- * @param {Object} [options] additional options used for the deserialization.
- * @param {Boolean} [isArray] ignore used for recursive parsing.
- * @return {Object} returns the deserialized Javascript Object.
- * @api public
- */
-BSON.prototype.deserialize = function(data, options) {
-  return BSON.deserialize(data, options);
-}
-
-/**
- * Deserialize stream data as BSON documents.
- *
- * Options
- *  - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized.
- *  - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse.
- *  - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function.
- *
- * @param {Buffer} data the buffer containing the serialized set of BSON documents.
- * @param {Number} startIndex the start index in the data Buffer where the deserialization is to start.
- * @param {Number} numberOfDocuments number of documents to deserialize.
- * @param {Array} documents an array where to store the deserialized documents.
- * @param {Number} docStartIndex the index in the documents array from where to start inserting documents.
- * @param {Object} [options] additional options used for the deserialization.
- * @return {Number} returns the next index in the buffer after deserialization **x** numbers of documents.
- * @api public
- */
-BSON.prototype.deserializeStream = function(data, startIndex, numberOfDocuments, documents, docStartIndex, options) {
-  return BSON.deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options);
-}
-
-/**
- * Serialize a Javascript object.
- *
- * @param {Object} object the Javascript object to serialize.
- * @param {Boolean} checkKeys the serializer will check if keys are valid.
- * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**.
- * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**.
- * @return {Buffer} returns the Buffer object containing the serialized object.
- * @api public
- */
-BSON.prototype.serialize = function(object, checkKeys, asBuffer, serializeFunctions) {
-  return BSON.serialize(object, checkKeys, asBuffer, serializeFunctions);
-}
-
-/**
- * Calculate the bson size for a passed in Javascript object.
- *
- * @param {Object} object the Javascript object to calculate the BSON byte size for.
- * @param {Boolean} [serializeFunctions] serialize all functions in the object **(default:false)**.
- * @return {Number} returns the number of bytes the BSON object will take up.
- * @api public
- */
-BSON.prototype.calculateObjectSize = function(object, serializeFunctions) {
-  return BSON.calculateObjectSize(object, serializeFunctions);
-}
-
-/**
- * Serialize a Javascript object using a predefined Buffer and index into the buffer, useful when pre-allocating the space for serialization.
- *
- * @param {Object} object the Javascript object to serialize.
- * @param {Boolean} checkKeys the serializer will check if keys are valid.
- * @param {Buffer} buffer the Buffer you pre-allocated to store the serialized BSON object.
- * @param {Number} index the index in the buffer where we wish to start serializing into.
- * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**.
- * @return {Number} returns the new write index in the Buffer.
- * @api public
- */
-BSON.prototype.serializeWithBufferAndIndex = function(object, checkKeys, buffer, startIndex, serializeFunctions) {
-  return BSON.serializeWithBufferAndIndex(object, checkKeys, buffer, startIndex, serializeFunctions);
-}
-
-/**
- * @ignore
- * @api private
- */
-exports.Code = Code;
-exports.Symbol = Symbol;
-exports.BSON = BSON;
-exports.DBRef = DBRef;
-exports.Binary = Binary;
-exports.ObjectID = ObjectID;
-exports.Long = Long;
-exports.Timestamp = Timestamp;
-exports.Double = Double;
-exports.MinKey = MinKey;
-exports.MaxKey = MaxKey;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/code.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/code.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/code.js
deleted file mode 100644
index 69b56a3..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/code.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * A class representation of the BSON Code type.
- *
- * @class Represents the BSON Code type.
- * @param {String|Function} code a string or function.
- * @param {Object} [scope] an optional scope for the function.
- * @return {Code}
- */
-function Code(code, scope) {
-  if(!(this instanceof Code)) return new Code(code, scope);
-  
-  this._bsontype = 'Code';
-  this.code = code;
-  this.scope = scope == null ? {} : scope;
-};
-
-/**
- * @ignore
- * @api private
- */
-Code.prototype.toJSON = function() {
-  return {scope:this.scope, code:this.code};
-}
-
-exports.Code = Code;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/db_ref.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/db_ref.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/db_ref.js
deleted file mode 100644
index 56b6510..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/db_ref.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * A class representation of the BSON DBRef type.
- *
- * @class Represents the BSON DBRef type.
- * @param {String} namespace the collection name.
- * @param {ObjectID} oid the reference ObjectID.
- * @param {String} [db] optional db name, if omitted the reference is local to the current db.
- * @return {DBRef}
- */
-function DBRef(namespace, oid, db) {
-  if(!(this instanceof DBRef)) return new DBRef(namespace, oid, db);
-  
-  this._bsontype = 'DBRef';
-  this.namespace = namespace;
-  this.oid = oid;
-  this.db = db;
-};
-
-/**
- * @ignore
- * @api private
- */
-DBRef.prototype.toJSON = function() {
-  return {
-    '$ref':this.namespace,
-    '$id':this.oid,
-    '$db':this.db == null ? '' : this.db
-  };
-}
-
-exports.DBRef = DBRef;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/double.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/double.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/double.js
deleted file mode 100644
index ae51463..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/double.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * A class representation of the BSON Double type.
- *
- * @class Represents the BSON Double type.
- * @param {Number} value the number we want to represent as a double.
- * @return {Double}
- */
-function Double(value) {
-  if(!(this instanceof Double)) return new Double(value);
-  
-  this._bsontype = 'Double';
-  this.value = value;
-}
-
-/**
- * Access the number value.
- *
- * @return {Number} returns the wrapped double number.
- * @api public
- */
-Double.prototype.valueOf = function() {
-  return this.value;
-};
-
-/**
- * @ignore
- * @api private
- */
-Double.prototype.toJSON = function() {
-  return this.value;
-}
-
-exports.Double = Double;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/float_parser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/float_parser.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/float_parser.js
deleted file mode 100644
index 6fca392..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/float_parser.js
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright (c) 2008, Fair Oaks Labs, Inc.
-// All rights reserved.
-// 
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-// 
-//  * Redistributions of source code must retain the above copyright notice,
-//    this list of conditions and the following disclaimer.
-// 
-//  * Redistributions in binary form must reproduce the above copyright notice,
-//    this list of conditions and the following disclaimer in the documentation
-//    and/or other materials provided with the distribution.
-// 
-//  * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors
-//    may be used to endorse or promote products derived from this software
-//    without specific prior written permission.
-// 
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-//
-// Modifications to writeIEEE754 to support negative zeroes made by Brian White
-
-var readIEEE754 = function(buffer, offset, endian, mLen, nBytes) {
-  var e, m,
-      bBE = (endian === 'big'),
-      eLen = nBytes * 8 - mLen - 1,
-      eMax = (1 << eLen) - 1,
-      eBias = eMax >> 1,
-      nBits = -7,
-      i = bBE ? 0 : (nBytes - 1),
-      d = bBE ? 1 : -1,
-      s = buffer[offset + i];
-
-  i += d;
-
-  e = s & ((1 << (-nBits)) - 1);
-  s >>= (-nBits);
-  nBits += eLen;
-  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);
-
-  m = e & ((1 << (-nBits)) - 1);
-  e >>= (-nBits);
-  nBits += mLen;
-  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);
-
-  if (e === 0) {
-    e = 1 - eBias;
-  } else if (e === eMax) {
-    return m ? NaN : ((s ? -1 : 1) * Infinity);
-  } else {
-    m = m + Math.pow(2, mLen);
-    e = e - eBias;
-  }
-  return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
-};
-
-var writeIEEE754 = function(buffer, value, offset, endian, mLen, nBytes) {
-  var e, m, c,
-      bBE = (endian === 'big'),
-      eLen = nBytes * 8 - mLen - 1,
-      eMax = (1 << eLen) - 1,
-      eBias = eMax >> 1,
-      rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),
-      i = bBE ? (nBytes-1) : 0,
-      d = bBE ? -1 : 1,
-      s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;
-
-  value = Math.abs(value);
-
-  if (isNaN(value) || value === Infinity) {
-    m = isNaN(value) ? 1 : 0;
-    e = eMax;
-  } else {
-    e = Math.floor(Math.log(value) / Math.LN2);
-    if (value * (c = Math.pow(2, -e)) < 1) {
-      e--;
-      c *= 2;
-    }
-    if (e+eBias >= 1) {
-      value += rt / c;
-    } else {
-      value += rt * Math.pow(2, 1 - eBias);
-    }
-    if (value * c >= 2) {
-      e++;
-      c /= 2;
-    }
-
-    if (e + eBias >= eMax) {
-      m = 0;
-      e = eMax;
-    } else if (e + eBias >= 1) {
-      m = (value * c - 1) * Math.pow(2, mLen);
-      e = e + eBias;
-    } else {
-      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
-      e = 0;
-    }
-  }
-
-  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);
-
-  e = (e << mLen) | m;
-  eLen += mLen;
-  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);
-
-  buffer[offset + i - d] |= s * 128;
-};
-
-exports.readIEEE754 = readIEEE754;
-exports.writeIEEE754 = writeIEEE754;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/index.js b/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/index.js
deleted file mode 100644
index 950fcad..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/lib/bson/index.js
+++ /dev/null
@@ -1,74 +0,0 @@
-try {
-  exports.BSONPure = require('./bson');
-  exports.BSONNative = require('../../ext');
-} catch(err) {
-  // do nothing
-}
-
-[ './binary_parser'
-  , './binary'
-  , './code'
-  , './db_ref'
-  , './double'
-  , './max_key'
-  , './min_key'
-  , './objectid'
-  , './symbol'
-  , './timestamp'
-  , './long'].forEach(function (path) {
-  	var module = require('./' + path);
-  	for (var i in module) {
-  		exports[i] = module[i];
-    }
-});
-
-// Exports all the classes for the NATIVE JS BSON Parser
-exports.native = function() {
-  var classes = {};
-  // Map all the classes
-  [ './binary_parser'
-    , './binary'
-    , './code'
-    , './db_ref'
-    , './double'
-    , './max_key'
-    , './min_key'
-    , './objectid'
-    , './symbol'
-    , './timestamp'
-    , './long'
-    , '../../ext'
-].forEach(function (path) {
-    	var module = require('./' + path);
-    	for (var i in module) {
-    		classes[i] = module[i];
-      }
-  });
-  // Return classes list
-  return classes;
-}
-
-// Exports all the classes for the PURE JS BSON Parser
-exports.pure = function() {
-  var classes = {};
-  // Map all the classes
-  [ './binary_parser'
-    , './binary'
-    , './code'
-    , './db_ref'
-    , './double'
-    , './max_key'
-    , './min_key'
-    , './objectid'
-    , './symbol'
-    , './timestamp'
-    , './long'
-    , '././bson'].forEach(function (path) {
-    	var module = require('./' + path);
-    	for (var i in module) {
-    		classes[i] = module[i];
-      }
-  });
-  // Return classes list
-  return classes;
-}


[57/98] [abbrv] incubator-apex-malhar git commit: Merge branch 'MLHR-1869' of github.com:tweise/incubator-apex-malhar into devel-3

Posted by da...@apache.org.
Merge branch 'MLHR-1869' of github.com:tweise/incubator-apex-malhar into devel-3


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/e7892f35
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/e7892f35
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/e7892f35

Branch: refs/heads/master
Commit: e7892f35c7001700bd645db5b6b4e66337ded26f
Parents: 893ac35 4a86ad0
Author: David Yan <da...@datatorrent.com>
Authored: Wed Oct 14 17:00:22 2015 -0700
Committer: David Yan <da...@datatorrent.com>
Committed: Wed Oct 14 17:00:22 2015 -0700

----------------------------------------------------------------------
 apps/logstream/pom.xml           | 10 ++++----
 apps/pom.xml                     |  8 +++----
 benchmark/pom.xml                | 45 ++++++++++-------------------------
 contrib/pom.xml                  | 12 +++++-----
 demos/distributedistinct/pom.xml |  6 ++---
 demos/echoserver/pom.xml         |  8 +++----
 demos/frauddetect/pom.xml        | 10 ++++----
 demos/machinedata/pom.xml        | 14 +++++------
 demos/mobile/pom.xml             | 10 ++++----
 demos/mrmonitor/pom.xml          | 10 ++++----
 demos/mroperator/pom.xml         | 10 ++++----
 demos/pi/pom.xml                 | 10 ++++----
 demos/pom.xml                    | 21 ++++++++--------
 demos/r/pom.xml                  | 14 +++++------
 demos/twitter/pom.xml            | 12 +++++-----
 demos/uniquecount/pom.xml        | 10 ++++----
 demos/wordcount/pom.xml          | 10 ++++----
 demos/yahoofinance/pom.xml       | 10 ++++----
 library/pom.xml                  | 12 +++++-----
 pom.xml                          | 43 +++++++++++----------------------
 samples/pom.xml                  | 10 ++++----
 21 files changed, 131 insertions(+), 164 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e7892f35/contrib/pom.xml
----------------------------------------------------------------------
diff --cc contrib/pom.xml
index 91ef5c7,d345b24..b999cca
--- a/contrib/pom.xml
+++ b/contrib/pom.xml
@@@ -601,22 -601,10 +601,22 @@@
        <optional>true</optional>
      </dependency>
      <dependency>
-       <groupId>com.datatorrent</groupId>
-       <artifactId>dt-common</artifactId>
-       <version>${dt.framework.version}</version>
+       <groupId>org.apache.apex</groupId>
+       <artifactId>apex-common</artifactId>
+       <version>${apex.core.version}</version>
        <type>jar</type>
      </dependency>
 +    <dependency>
 +      <!-- required by Xml parser and formatter -->
 +      <groupId>com.thoughtworks.xstream</groupId>
 +      <artifactId>xstream</artifactId>
 +      <version>1.4.8</version>
 +    </dependency>
 +    <dependency>
 +      <!-- required by Csv parser and formatter -->
 +      <groupId>net.sf.supercsv</groupId>
 +      <artifactId>super-csv-joda</artifactId>
 +      <version>2.3.1</version>
 +    </dependency>
    </dependencies>
  </project>


[64/98] [abbrv] incubator-apex-malhar git commit: - MLHR-1876 #resolve Cleanly terminated window bounded service thread and removed unnecessary interrupt of main operator thread. - Fixed emitting schemas on output port in a different thread. - Closed con

Posted by da...@apache.org.
- MLHR-1876 #resolve Cleanly terminated window bounded service thread and removed unnecessary interrupt of main operator thread.
- Fixed emitting schemas on output port in a different thread.
- Closed connections in WebSocketInput Operator on teardown
- Removed obsolete unit test


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/79e7eadf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/79e7eadf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/79e7eadf

Branch: refs/heads/master
Commit: 79e7eadf27879e4866ac399e31a41eb1a669eb0c
Parents: 0bb9599
Author: Timothy Farkas <ti...@datatorrent.com>
Authored: Wed Oct 21 21:33:53 2015 -0700
Committer: Timothy Farkas <ti...@datatorrent.com>
Committed: Thu Oct 22 15:19:32 2015 -0700

----------------------------------------------------------------------
 .../lib/appdata/query/WindowBoundedService.java | 41 ++++++++++++++++----
 .../snapshot/AbstractAppDataSnapshotServer.java | 21 +++++++---
 .../lib/io/WebSocketInputOperator.java          |  9 +++++
 .../appdata/query/WindowBoundedServiceTest.java | 27 -------------
 4 files changed, 59 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/79e7eadf/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java b/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java
index 6d229fd..4f653a3 100644
--- a/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java
+++ b/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java
@@ -22,7 +22,7 @@ import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Semaphore;
-
+import java.util.concurrent.TimeUnit;
 
 import com.google.common.base.Preconditions;
 
@@ -59,6 +59,7 @@ public class WindowBoundedService implements Component<OperatorContext>
   protected transient ExecutorService executorThread;
 
   private final transient Semaphore mutex = new Semaphore(0);
+  private volatile boolean terminated = false;
 
   public WindowBoundedService(Runnable runnable)
   {
@@ -78,8 +79,8 @@ public class WindowBoundedService implements Component<OperatorContext>
   @Override
   public void setup(OperatorContext context)
   {
-    executorThread = Executors.newSingleThreadScheduledExecutor(new NameableThreadFactory("Query Executor Thread"));
-    executorThread.submit(new AsynchExecutorThread(Thread.currentThread()));
+    executorThread = Executors.newSingleThreadExecutor(new NameableThreadFactory("Query Executor Thread"));
+    executorThread.submit(new AsynchExecutorThread());
   }
 
   public void beginWindow(long windowId)
@@ -99,17 +100,31 @@ public class WindowBoundedService implements Component<OperatorContext>
   @Override
   public void teardown()
   {
-    executorThread.shutdownNow();
+    LOG.info("Shutting down");
+    terminated = true;
+    mutex.release();
+
+    executorThread.shutdown();
+    
+    try {
+      executorThread.awaitTermination(10000L + executeIntervalMillis, TimeUnit.MILLISECONDS);
+    } catch (InterruptedException ex) {
+      //Do nothing
+    }
   }
 
   public class AsynchExecutorThread implements Callable<Void>
   {
-    private final Thread mainThread;
     private long lastExecuteTime = 0;
 
+    public AsynchExecutorThread()
+    {
+    }
+
+    @Deprecated
     public AsynchExecutorThread(Thread mainThread)
     {
-      this.mainThread = mainThread;
+      //Do nothing
     }
 
     @Override
@@ -121,7 +136,6 @@ public class WindowBoundedService implements Component<OperatorContext>
       } catch (Exception e) {
         LOG.error("Exception thrown while processing:", e);
         mutex.release();
-        mainThread.interrupt();
       }
 
       return null;
@@ -133,12 +147,25 @@ public class WindowBoundedService implements Component<OperatorContext>
       while (true) {
         long currentTime = System.currentTimeMillis();
         long diff = currentTime - lastExecuteTime;
+
         if (diff > executeIntervalMillis) {
           lastExecuteTime = currentTime;
           mutex.acquireUninterruptibly();
+
+          if (terminated) {
+            LOG.info("Terminated");
+            return;
+          }
+
           runnable.run();
           mutex.release();
         } else {
+
+          if (terminated) {
+            LOG.info("Terminated");
+            return;
+          }
+
           Thread.sleep(executeIntervalMillis - diff);
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/79e7eadf/library/src/main/java/com/datatorrent/lib/appdata/snapshot/AbstractAppDataSnapshotServer.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/appdata/snapshot/AbstractAppDataSnapshotServer.java b/library/src/main/java/com/datatorrent/lib/appdata/snapshot/AbstractAppDataSnapshotServer.java
index e10bf9e..a309746 100644
--- a/library/src/main/java/com/datatorrent/lib/appdata/snapshot/AbstractAppDataSnapshotServer.java
+++ b/library/src/main/java/com/datatorrent/lib/appdata/snapshot/AbstractAppDataSnapshotServer.java
@@ -21,6 +21,7 @@ package com.datatorrent.lib.appdata.snapshot;
 import java.io.IOException;
 
 import java.util.List;
+import java.util.concurrent.ConcurrentLinkedQueue;
 
 import javax.validation.constraints.NotNull;
 
@@ -92,9 +93,10 @@ public abstract class AbstractAppDataSnapshotServer<INPUT_EVENT> implements Oper
    */
   private List<GPOMutable> currentData = Lists.newArrayList();
   private EmbeddableQueryInfoProvider<String> embeddableQueryInfoProvider;
+  private final transient ConcurrentLinkedQueue<SchemaResult> schemaQueue = new ConcurrentLinkedQueue<>();
 
   @AppData.ResultPort
-  public final transient DefaultOutputPort<String> queryResult = new DefaultOutputPort<String>();
+  public final transient DefaultOutputPort<String> queryResult = new DefaultOutputPort<>();
 
   @AppData.QueryPort
   @InputPortFieldAnnotation(optional=true)
@@ -118,9 +120,8 @@ public abstract class AbstractAppDataSnapshotServer<INPUT_EVENT> implements Oper
         SchemaResult schemaResult = schemaRegistry.getSchemaResult((SchemaQuery)query);
 
         if (schemaResult != null) {
-          String schemaResultJSON = resultSerializerFactory.serialize(schemaResult);
-          LOG.debug("emitting {}", schemaResultJSON);
-          queryResult.emit(schemaResultJSON);
+          LOG.debug("queueing {}", schemaResult);
+          schemaQueue.add(schemaResult);
         }
       } else if (query instanceof DataQuerySnapshot) {
         queryProcessor.enqueue((DataQuerySnapshot)query, null, null);
@@ -208,7 +209,7 @@ public abstract class AbstractAppDataSnapshotServer<INPUT_EVENT> implements Oper
     }
 
     {
-      Result result = null;
+      Result result;
 
       while((result = queryProcessor.process()) != null) {
         String resultJSON = resultSerializerFactory.serialize(result);
@@ -217,6 +218,16 @@ public abstract class AbstractAppDataSnapshotServer<INPUT_EVENT> implements Oper
       }
     }
 
+    {
+      SchemaResult schemaResult;
+
+      while ((schemaResult = schemaQueue.poll()) != null) {
+        String schemaResultJSON = resultSerializerFactory.serialize(schemaResult);
+        LOG.debug("emitting {}", schemaResultJSON);
+        queryResult.emit(schemaResultJSON);
+      }
+    }
+
     queryProcessor.endWindow();
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/79e7eadf/library/src/main/java/com/datatorrent/lib/io/WebSocketInputOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/io/WebSocketInputOperator.java b/library/src/main/java/com/datatorrent/lib/io/WebSocketInputOperator.java
index a51dc6f..3d7bc7a 100644
--- a/library/src/main/java/com/datatorrent/lib/io/WebSocketInputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/io/WebSocketInputOperator.java
@@ -137,6 +137,15 @@ public class WebSocketInputOperator<T> extends SimpleSinglePortInputOperator<T>
     catch (Exception ex) {
       LOG.error("Error joining monitor", ex);
     }
+
+    if (connection != null) {
+      connection.close();
+    }
+
+    if (client != null) {
+      client.close();
+    }
+
     super.teardown();
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/79e7eadf/library/src/test/java/com/datatorrent/lib/appdata/query/WindowBoundedServiceTest.java
----------------------------------------------------------------------
diff --git a/library/src/test/java/com/datatorrent/lib/appdata/query/WindowBoundedServiceTest.java b/library/src/test/java/com/datatorrent/lib/appdata/query/WindowBoundedServiceTest.java
index 9da82e9..3fb3780 100644
--- a/library/src/test/java/com/datatorrent/lib/appdata/query/WindowBoundedServiceTest.java
+++ b/library/src/test/java/com/datatorrent/lib/appdata/query/WindowBoundedServiceTest.java
@@ -64,33 +64,6 @@ public class WindowBoundedServiceTest
     Assert.assertTrue(counterRunnable.getCounter() > 0);
   }
 
-  @Test
-  public void exceptionTest() throws Exception
-  {
-    WindowBoundedService wbs = new WindowBoundedService(1,
-                                                        new ExceptionRunnable());
-
-    wbs.setup(null);
-    wbs.beginWindow(0);
-
-    boolean caughtException = false;
-
-    try {
-      Thread.sleep(500);
-    } catch (InterruptedException e) {
-      caughtException = true;
-    }
-
-    try {
-      wbs.endWindow();
-    } catch(Exception e) {
-      caughtException = true;
-    }
-
-    wbs.teardown();
-    Assert.assertEquals(true, caughtException);
-  }
-
   public static class CounterRunnable implements Runnable
   {
     private int counter = 0;


[63/98] [abbrv] incubator-apex-malhar git commit: Rename header, update NOTICE, fix license check.

Posted by da...@apache.org.
Rename header, update NOTICE, fix license check.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/0bb95994
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/0bb95994
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/0bb95994

Branch: refs/heads/master
Commit: 0bb9599417f3e4226de43f4009dc3a808877fa67
Parents: 9587b03
Author: Thomas Weise <th...@datatorrent.com>
Authored: Thu Oct 22 10:33:51 2015 -0700
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Thu Oct 22 10:33:51 2015 -0700

----------------------------------------------------------------------
 NOTICE      |  3 +++
 header.txt  | 16 ++++++++++++++++
 license.txt | 16 ----------------
 pom.xml     |  8 ++++----
 4 files changed, 23 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0bb95994/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index d834235..eef5e86 100644
--- a/NOTICE
+++ b/NOTICE
@@ -4,3 +4,6 @@ Copyright (c) 2015 The Apache Software Foundation
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
 
+The initial developer of the original code is
+DataTorrent, Inc. (http://www.datatorrent.com)
+Copyright (c) 2012 - 2015. All Rights Reserved.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0bb95994/header.txt
----------------------------------------------------------------------
diff --git a/header.txt b/header.txt
new file mode 100644
index 0000000..60b675e
--- /dev/null
+++ b/header.txt
@@ -0,0 +1,16 @@
+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.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0bb95994/license.txt
----------------------------------------------------------------------
diff --git a/license.txt b/license.txt
deleted file mode 100644
index 60b675e..0000000
--- a/license.txt
+++ /dev/null
@@ -1,16 +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.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0bb95994/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1afdf3c..207304e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -59,9 +59,9 @@
         <artifactId>license-maven-plugin</artifactId>
         <configuration>
           <excludes combine.children="append">
-            <exclude>src/test/resources/**/sample_logs/**</exclude>
+            <exclude>**/src/test/resources/**/sample_logs/**</exclude>
             <exclude>src/test/resources/*.csv</exclude>
-            <exclude>src/main/resources/com/datatorrent/apps/logstream/**</exclude>
+            <exclude>**/src/main/resources/com/datatorrent/apps/logstream/**</exclude>
             <exclude>src/main/c/zmq_push/Makefile</exclude>
             <exclude>src/test/resources/com/datatorrent/contrib/romesyndication/*.rss</exclude>
           </excludes>
@@ -75,9 +75,9 @@
         <artifactId>apache-rat-plugin</artifactId>
         <configuration>
           <excludes combine.children="append">
-            <exclude>src/test/resources/**/sample_logs/**</exclude>
+            <exclude>**/src/test/resources/**/sample_logs/**</exclude>
             <exclude>src/test/resources/*.csv</exclude>
-            <exclude>src/main/resources/com/datatorrent/apps/logstream/**</exclude>
+            <exclude>**/src/main/resources/com/datatorrent/apps/logstream/**</exclude>
             <exclude>src/main/c/zmq_push/Makefile</exclude>
             <exclude>src/test/resources/com/datatorrent/contrib/romesyndication/*.rss</exclude>
             <exclude>src/main/resources/**/*.txt</exclude>


[82/98] [abbrv] incubator-apex-malhar git commit: Cleanup of web resources

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/demos/machinedata/src/main/html/malhar.css
----------------------------------------------------------------------
diff --git a/demos/machinedata/src/main/html/malhar.css b/demos/machinedata/src/main/html/malhar.css
new file mode 100644
index 0000000..175e219
--- /dev/null
+++ b/demos/machinedata/src/main/html/malhar.css
@@ -0,0 +1,4688 @@
+/**
+ * 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.
+ */
+.clearfix {
+  *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.clearfix:after {
+  clear: both;
+}
+.hide-text {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.input-block-level {
+  display: block;
+  width: 100%;
+  min-height: 30px;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+  display: block;
+}
+audio,
+canvas,
+video {
+  display: inline-block;
+  *display: inline;
+  *zoom: 1;
+}
+audio:not([controls]) {
+  display: none;
+}
+html {
+  font-size: 100%;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+a:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+a:hover,
+a:active {
+  outline: 0;
+}
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -0.5em;
+}
+sub {
+  bottom: -0.25em;
+}
+img {
+  /* Responsive images (ensure images don't scale beyond their parents) */
+
+  max-width: 100%;
+  /* Part 1: Set a maxium relative to the parent */
+
+  width: auto\9;
+  /* IE7-8 need help adjusting responsive images */
+
+  height: auto;
+  /* Part 2: Scale the height according to the width, otherwise you get stretching */
+
+  vertical-align: middle;
+  border: 0;
+  -ms-interpolation-mode: bicubic;
+}
+#map_canvas img,
+.google-maps img {
+  max-width: none;
+}
+button,
+input,
+select,
+textarea {
+  margin: 0;
+  font-size: 100%;
+  vertical-align: middle;
+}
+button,
+input {
+  *overflow: visible;
+  line-height: normal;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer;
+}
+label,
+select,
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"],
+input[type="radio"],
+input[type="checkbox"] {
+  cursor: pointer;
+}
+input[type="search"] {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button {
+  -webkit-appearance: none;
+}
+textarea {
+  overflow: auto;
+  vertical-align: top;
+}
+@media print {
+  * {
+    text-shadow: none !important;
+    color: #000 !important;
+    background: transparent !important;
+    box-shadow: none !important;
+  }
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+  .ir a:after,
+  a[href^="javascript:"]:after,
+  a[href^="#"]:after {
+    content: "";
+  }
+  pre,
+  blockquote {
+    border: 1px solid #999;
+    page-break-inside: avoid;
+  }
+  thead {
+    display: table-header-group;
+  }
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+  img {
+    max-width: 100% !important;
+  }
+  @page  {
+    margin: 0.5cm;
+  }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+}
+body {
+  margin: 0;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  line-height: 20px;
+  color: #333333;
+  background-color: #ffffff;
+}
+a {
+  color: #0088cc;
+  text-decoration: none;
+}
+a:hover,
+a:focus {
+  color: #005580;
+  text-decoration: underline;
+}
+.img-rounded {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.img-polaroid {
+  padding: 4px;
+  background-color: #fff;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+.img-circle {
+  -webkit-border-radius: 500px;
+  -moz-border-radius: 500px;
+  border-radius: 500px;
+}
+/*@import "bootstrap/grid.less";*/
+/*@import "bootstrap/layouts.less";*/
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 19.5px;
+  font-weight: 200;
+  line-height: 30px;
+}
+small {
+  font-size: 85%;
+}
+strong {
+  font-weight: bold;
+}
+em {
+  font-style: italic;
+}
+cite {
+  font-style: normal;
+}
+.muted {
+  color: #999999;
+}
+a.muted:hover,
+a.muted:focus {
+  color: #808080;
+}
+.text-warning {
+  color: #c09853;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+  color: #a47e3c;
+}
+.text-error {
+  color: #b94a48;
+}
+a.text-error:hover,
+a.text-error:focus {
+  color: #953b39;
+}
+.text-info {
+  color: #3a87ad;
+}
+a.text-info:hover,
+a.text-info:focus {
+  color: #2d6987;
+}
+.text-success {
+  color: #468847;
+}
+a.text-success:hover,
+a.text-success:focus {
+  color: #356635;
+}
+.text-left {
+  text-align: left;
+}
+.text-right {
+  text-align: right;
+}
+.text-center {
+  text-align: center;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  margin: 10px 0;
+  font-family: inherit;
+  font-weight: bold;
+  line-height: 20px;
+  color: inherit;
+  text-rendering: optimizelegibility;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+  font-weight: normal;
+  line-height: 1;
+  color: #999999;
+}
+h1,
+h2,
+h3 {
+  line-height: 40px;
+}
+h1 {
+  font-size: 35.75px;
+}
+h2 {
+  font-size: 29.25px;
+}
+h3 {
+  font-size: 22.75px;
+}
+h4 {
+  font-size: 16.25px;
+}
+h5 {
+  font-size: 13px;
+}
+h6 {
+  font-size: 11.049999999999999px;
+}
+h1 small {
+  font-size: 22.75px;
+}
+h2 small {
+  font-size: 16.25px;
+}
+h3 small {
+  font-size: 13px;
+}
+h4 small {
+  font-size: 13px;
+}
+.page-header {
+  padding-bottom: 9px;
+  margin: 20px 0 30px;
+  border-bottom: 1px solid #eeeeee;
+}
+ul,
+ol {
+  padding: 0;
+  margin: 0 0 10px 25px;
+}
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+  margin-bottom: 0;
+}
+li {
+  line-height: 20px;
+}
+ul.unstyled,
+ol.unstyled {
+  margin-left: 0;
+  list-style: none;
+}
+ul.inline,
+ol.inline {
+  margin-left: 0;
+  list-style: none;
+}
+ul.inline > li,
+ol.inline > li {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  padding-left: 5px;
+  padding-right: 5px;
+}
+dl {
+  margin-bottom: 20px;
+}
+dt,
+dd {
+  line-height: 20px;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 10px;
+}
+.dl-horizontal {
+  *zoom: 1;
+}
+.dl-horizontal:before,
+.dl-horizontal:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.dl-horizontal:after {
+  clear: both;
+}
+.dl-horizontal dt {
+  float: left;
+  width: 160px;
+  clear: left;
+  text-align: right;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.dl-horizontal dd {
+  margin-left: 180px;
+}
+hr {
+  margin: 20px 0;
+  border: 0;
+  border-top: 1px solid #eeeeee;
+  border-bottom: 1px solid #ffffff;
+}
+abbr[title],
+abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted #999999;
+}
+abbr.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+blockquote {
+  padding: 0 0 0 15px;
+  margin: 0 0 20px;
+  border-left: 5px solid #eeeeee;
+}
+blockquote p {
+  margin-bottom: 0;
+  font-size: 16.25px;
+  font-weight: 300;
+  line-height: 1.25;
+}
+blockquote small {
+  display: block;
+  line-height: 20px;
+  color: #999999;
+}
+blockquote small:before {
+  content: '\2014 \00A0';
+}
+blockquote.pull-right {
+  float: right;
+  padding-right: 15px;
+  padding-left: 0;
+  border-right: 5px solid #eeeeee;
+  border-left: 0;
+}
+blockquote.pull-right p,
+blockquote.pull-right small {
+  text-align: right;
+}
+blockquote.pull-right small:before {
+  content: '';
+}
+blockquote.pull-right small:after {
+  content: '\00A0 \2014';
+}
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+  content: "";
+}
+address {
+  display: block;
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 20px;
+}
+code,
+pre {
+  padding: 0 3px 2px;
+  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+  font-size: 11px;
+  color: #333333;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+code {
+  padding: 2px 4px;
+  color: #d14;
+  background-color: #f7f7f9;
+  border: 1px solid #e1e1e8;
+  white-space: nowrap;
+}
+pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 12px;
+  line-height: 20px;
+  word-break: break-all;
+  word-wrap: break-word;
+  white-space: pre;
+  white-space: pre-wrap;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+pre.prettyprint {
+  margin-bottom: 20px;
+}
+pre code {
+  padding: 0;
+  color: inherit;
+  white-space: pre;
+  white-space: pre-wrap;
+  background-color: transparent;
+  border: 0;
+}
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+form {
+  margin: 0 0 20px;
+}
+fieldset {
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 20px;
+  font-size: 19.5px;
+  line-height: 40px;
+  color: #333333;
+  border: 0;
+  border-bottom: 1px solid #e5e5e5;
+}
+legend small {
+  font-size: 15px;
+  color: #999999;
+}
+label,
+input,
+button,
+select,
+textarea {
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 20px;
+}
+input,
+button,
+select,
+textarea {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+label {
+  display: block;
+  margin-bottom: 5px;
+}
+select,
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+  display: inline-block;
+  height: 20px;
+  padding: 4px 6px;
+  margin-bottom: 10px;
+  font-size: 13px;
+  line-height: 20px;
+  color: #555555;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  vertical-align: middle;
+}
+input,
+textarea,
+.uneditable-input {
+  width: 206px;
+}
+textarea {
+  height: auto;
+}
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+  background-color: #ffffff;
+  border: 1px solid #cccccc;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -webkit-transition: border linear .2s, box-shadow linear .2s;
+  -moz-transition: border linear .2s, box-shadow linear .2s;
+  -o-transition: border linear .2s, box-shadow linear .2s;
+  transition: border linear .2s, box-shadow linear .2s;
+}
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="datetime"]:focus,
+input[type="datetime-local"]:focus,
+input[type="date"]:focus,
+input[type="month"]:focus,
+input[type="time"]:focus,
+input[type="week"]:focus,
+input[type="number"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="color"]:focus,
+.uneditable-input:focus {
+  border-color: rgba(82, 168, 236, 0.8);
+  outline: 0;
+  outline: thin dotted \9;
+  /* IE6-9 */
+
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+  -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+}
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  *margin-top: 0;
+  /* IE7 */
+
+  margin-top: 1px \9;
+  /* IE8-9 */
+
+  line-height: normal;
+}
+input[type="file"],
+input[type="image"],
+input[type="submit"],
+input[type="reset"],
+input[type="button"],
+input[type="radio"],
+input[type="checkbox"] {
+  width: auto;
+}
+select,
+input[type="file"] {
+  height: 30px;
+  /* In IE7, the height of the select element cannot be changed by height, only font-size */
+
+  *margin-top: 4px;
+  /* For IE7, add top margin to align select with labels */
+
+  line-height: 30px;
+}
+select {
+  width: 220px;
+  border: 1px solid #cccccc;
+  background-color: #ffffff;
+}
+select[multiple],
+select[size] {
+  height: auto;
+}
+select:focus,
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.uneditable-input,
+.uneditable-textarea {
+  color: #999999;
+  background-color: #fcfcfc;
+  border-color: #cccccc;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  cursor: not-allowed;
+}
+.uneditable-input {
+  overflow: hidden;
+  white-space: nowrap;
+}
+.uneditable-textarea {
+  width: auto;
+  height: auto;
+}
+input:-moz-placeholder,
+textarea:-moz-placeholder {
+  color: #999999;
+}
+input:-ms-input-placeholder,
+textarea:-ms-input-placeholder {
+  color: #999999;
+}
+input::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder {
+  color: #999999;
+}
+.radio,
+.checkbox {
+  min-height: 20px;
+  padding-left: 20px;
+}
+.radio input[type="radio"],
+.checkbox input[type="checkbox"] {
+  float: left;
+  margin-left: -20px;
+}
+.controls > .radio:first-child,
+.controls > .checkbox:first-child {
+  padding-top: 5px;
+}
+.radio.inline,
+.checkbox.inline {
+  display: inline-block;
+  padding-top: 5px;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.radio.inline + .radio.inline,
+.checkbox.inline + .checkbox.inline {
+  margin-left: 10px;
+}
+.input-mini {
+  width: 60px;
+}
+.input-small {
+  width: 90px;
+}
+.input-medium {
+  width: 150px;
+}
+.input-large {
+  width: 210px;
+}
+.input-xlarge {
+  width: 270px;
+}
+.input-xxlarge {
+  width: 530px;
+}
+input[class*="span"],
+select[class*="span"],
+textarea[class*="span"],
+.uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"] {
+  float: none;
+  margin-left: 0;
+}
+.input-append input[class*="span"],
+.input-append .uneditable-input[class*="span"],
+.input-prepend input[class*="span"],
+.input-prepend .uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"],
+.row-fluid .input-prepend [class*="span"],
+.row-fluid .input-append [class*="span"] {
+  display: inline-block;
+}
+input,
+textarea,
+.uneditable-input {
+  margin-left: 0;
+}
+.controls-row [class*="span"] + [class*="span"] {
+  margin-left: 20px;
+}
+input.span12,
+textarea.span12,
+.uneditable-input.span12 {
+  width: 926px;
+}
+input.span11,
+textarea.span11,
+.uneditable-input.span11 {
+  width: 846px;
+}
+input.span10,
+textarea.span10,
+.uneditable-input.span10 {
+  width: 766px;
+}
+input.span9,
+textarea.span9,
+.uneditable-input.span9 {
+  width: 686px;
+}
+input.span8,
+textarea.span8,
+.uneditable-input.span8 {
+  width: 606px;
+}
+input.span7,
+textarea.span7,
+.uneditable-input.span7 {
+  width: 526px;
+}
+input.span6,
+textarea.span6,
+.uneditable-input.span6 {
+  width: 446px;
+}
+input.span5,
+textarea.span5,
+.uneditable-input.span5 {
+  width: 366px;
+}
+input.span4,
+textarea.span4,
+.uneditable-input.span4 {
+  width: 286px;
+}
+input.span3,
+textarea.span3,
+.uneditable-input.span3 {
+  width: 206px;
+}
+input.span2,
+textarea.span2,
+.uneditable-input.span2 {
+  width: 126px;
+}
+input.span1,
+textarea.span1,
+.uneditable-input.span1 {
+  width: 46px;
+}
+.controls-row {
+  *zoom: 1;
+}
+.controls-row:before,
+.controls-row:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.controls-row:after {
+  clear: both;
+}
+.controls-row [class*="span"],
+.row-fluid .controls-row [class*="span"] {
+  float: left;
+}
+.controls-row .checkbox[class*="span"],
+.controls-row .radio[class*="span"] {
+  padding-top: 5px;
+}
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+  cursor: not-allowed;
+  background-color: #eeeeee;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"][readonly],
+input[type="checkbox"][readonly] {
+  background-color: transparent;
+}
+.control-group.warning .control-label,
+.control-group.warning .help-block,
+.control-group.warning .help-inline {
+  color: #c09853;
+}
+.control-group.warning .checkbox,
+.control-group.warning .radio,
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+  color: #c09853;
+}
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+  border-color: #c09853;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.warning input:focus,
+.control-group.warning select:focus,
+.control-group.warning textarea:focus {
+  border-color: #a47e3c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+}
+.control-group.warning .input-prepend .add-on,
+.control-group.warning .input-append .add-on {
+  color: #c09853;
+  background-color: #fcf8e3;
+  border-color: #c09853;
+}
+.control-group.error .control-label,
+.control-group.error .help-block,
+.control-group.error .help-inline {
+  color: #b94a48;
+}
+.control-group.error .checkbox,
+.control-group.error .radio,
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+  color: #b94a48;
+}
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+  border-color: #b94a48;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.error input:focus,
+.control-group.error select:focus,
+.control-group.error textarea:focus {
+  border-color: #953b39;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+}
+.control-group.error .input-prepend .add-on,
+.control-group.error .input-append .add-on {
+  color: #b94a48;
+  background-color: #f2dede;
+  border-color: #b94a48;
+}
+.control-group.success .control-label,
+.control-group.success .help-block,
+.control-group.success .help-inline {
+  color: #468847;
+}
+.control-group.success .checkbox,
+.control-group.success .radio,
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+  color: #468847;
+}
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+  border-color: #468847;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.success input:focus,
+.control-group.success select:focus,
+.control-group.success textarea:focus {
+  border-color: #356635;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+}
+.control-group.success .input-prepend .add-on,
+.control-group.success .input-append .add-on {
+  color: #468847;
+  background-color: #dff0d8;
+  border-color: #468847;
+}
+.control-group.info .control-label,
+.control-group.info .help-block,
+.control-group.info .help-inline {
+  color: #3a87ad;
+}
+.control-group.info .checkbox,
+.control-group.info .radio,
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+  color: #3a87ad;
+}
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+  border-color: #3a87ad;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.info input:focus,
+.control-group.info select:focus,
+.control-group.info textarea:focus {
+  border-color: #2d6987;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+}
+.control-group.info .input-prepend .add-on,
+.control-group.info .input-append .add-on {
+  color: #3a87ad;
+  background-color: #d9edf7;
+  border-color: #3a87ad;
+}
+input:focus:invalid,
+textarea:focus:invalid,
+select:focus:invalid {
+  color: #b94a48;
+  border-color: #ee5f5b;
+}
+input:focus:invalid:focus,
+textarea:focus:invalid:focus,
+select:focus:invalid:focus {
+  border-color: #e9322d;
+  -webkit-box-shadow: 0 0 6px #f8b9b7;
+  -moz-box-shadow: 0 0 6px #f8b9b7;
+  box-shadow: 0 0 6px #f8b9b7;
+}
+.form-actions {
+  padding: 19px 20px 20px;
+  margin-top: 20px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #e5e5e5;
+  *zoom: 1;
+}
+.form-actions:before,
+.form-actions:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.form-actions:after {
+  clear: both;
+}
+.help-block,
+.help-inline {
+  color: #595959;
+}
+.help-block {
+  display: block;
+  margin-bottom: 10px;
+}
+.help-inline {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  vertical-align: middle;
+  padding-left: 5px;
+}
+.input-append,
+.input-prepend {
+  display: inline-block;
+  margin-bottom: 10px;
+  vertical-align: middle;
+  font-size: 0;
+  white-space: nowrap;
+}
+.input-append input,
+.input-prepend input,
+.input-append select,
+.input-prepend select,
+.input-append .uneditable-input,
+.input-prepend .uneditable-input,
+.input-append .dropdown-menu,
+.input-prepend .dropdown-menu,
+.input-append .popover,
+.input-prepend .popover {
+  font-size: 13px;
+}
+.input-append input,
+.input-prepend input,
+.input-append select,
+.input-prepend select,
+.input-append .uneditable-input,
+.input-prepend .uneditable-input {
+  position: relative;
+  margin-bottom: 0;
+  *margin-left: 0;
+  vertical-align: top;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-append input:focus,
+.input-prepend input:focus,
+.input-append select:focus,
+.input-prepend select:focus,
+.input-append .uneditable-input:focus,
+.input-prepend .uneditable-input:focus {
+  z-index: 2;
+}
+.input-append .add-on,
+.input-prepend .add-on {
+  display: inline-block;
+  width: auto;
+  height: 20px;
+  min-width: 16px;
+  padding: 4px 5px;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 20px;
+  text-align: center;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #eeeeee;
+  border: 1px solid #ccc;
+}
+.input-append .add-on,
+.input-prepend .add-on,
+.input-append .btn,
+.input-prepend .btn,
+.input-append .btn-group > .dropdown-toggle,
+.input-prepend .btn-group > .dropdown-toggle {
+  vertical-align: top;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.input-append .active,
+.input-prepend .active {
+  background-color: #a9dba9;
+  border-color: #46a546;
+}
+.input-prepend .add-on,
+.input-prepend .btn {
+  margin-right: -1px;
+}
+.input-prepend .add-on:first-child,
+.input-prepend .btn:first-child {
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.input-append input,
+.input-append select,
+.input-append .uneditable-input {
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.input-append input + .btn-group .btn:last-child,
+.input-append select + .btn-group .btn:last-child,
+.input-append .uneditable-input + .btn-group .btn:last-child {
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-append .add-on,
+.input-append .btn,
+.input-append .btn-group {
+  margin-left: -1px;
+}
+.input-append .add-on:last-child,
+.input-append .btn:last-child,
+.input-append .btn-group:last-child > .dropdown-toggle {
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-prepend.input-append input,
+.input-prepend.input-append select,
+.input-prepend.input-append .uneditable-input {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.input-prepend.input-append input + .btn-group .btn,
+.input-prepend.input-append select + .btn-group .btn,
+.input-prepend.input-append .uneditable-input + .btn-group .btn {
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-prepend.input-append .add-on:first-child,
+.input-prepend.input-append .btn:first-child {
+  margin-right: -1px;
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.input-prepend.input-append .add-on:last-child,
+.input-prepend.input-append .btn:last-child {
+  margin-left: -1px;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-prepend.input-append .btn-group:first-child {
+  margin-left: 0;
+}
+input.search-query {
+  padding-right: 14px;
+  padding-right: 4px \9;
+  padding-left: 14px;
+  padding-left: 4px \9;
+  /* IE7-8 doesn't have border-radius, so don't indent the padding */
+
+  margin-bottom: 0;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  border-radius: 15px;
+}
+/* Allow for input prepend/append in search forms */
+.form-search .input-append .search-query,
+.form-search .input-prepend .search-query {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.form-search .input-append .search-query {
+  -webkit-border-radius: 14px 0 0 14px;
+  -moz-border-radius: 14px 0 0 14px;
+  border-radius: 14px 0 0 14px;
+}
+.form-search .input-append .btn {
+  -webkit-border-radius: 0 14px 14px 0;
+  -moz-border-radius: 0 14px 14px 0;
+  border-radius: 0 14px 14px 0;
+}
+.form-search .input-prepend .search-query {
+  -webkit-border-radius: 0 14px 14px 0;
+  -moz-border-radius: 0 14px 14px 0;
+  border-radius: 0 14px 14px 0;
+}
+.form-search .input-prepend .btn {
+  -webkit-border-radius: 14px 0 0 14px;
+  -moz-border-radius: 14px 0 0 14px;
+  border-radius: 14px 0 0 14px;
+}
+.form-search input,
+.form-inline input,
+.form-horizontal input,
+.form-search textarea,
+.form-inline textarea,
+.form-horizontal textarea,
+.form-search select,
+.form-inline select,
+.form-horizontal select,
+.form-search .help-inline,
+.form-inline .help-inline,
+.form-horizontal .help-inline,
+.form-search .uneditable-input,
+.form-inline .uneditable-input,
+.form-horizontal .uneditable-input,
+.form-search .input-prepend,
+.form-inline .input-prepend,
+.form-horizontal .input-prepend,
+.form-search .input-append,
+.form-inline .input-append,
+.form-horizontal .input-append {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.form-search .hide,
+.form-inline .hide,
+.form-horizontal .hide {
+  display: none;
+}
+.form-search label,
+.form-inline label,
+.form-search .btn-group,
+.form-inline .btn-group {
+  display: inline-block;
+}
+.form-search .input-append,
+.form-inline .input-append,
+.form-search .input-prepend,
+.form-inline .input-prepend {
+  margin-bottom: 0;
+}
+.form-search .radio,
+.form-search .checkbox,
+.form-inline .radio,
+.form-inline .checkbox {
+  padding-left: 0;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.form-search .radio input[type="radio"],
+.form-search .checkbox input[type="checkbox"],
+.form-inline .radio input[type="radio"],
+.form-inline .checkbox input[type="checkbox"] {
+  float: left;
+  margin-right: 3px;
+  margin-left: 0;
+}
+.control-group {
+  margin-bottom: 10px;
+}
+legend + .control-group {
+  margin-top: 20px;
+  -webkit-margin-top-collapse: separate;
+}
+.form-horizontal .control-group {
+  margin-bottom: 20px;
+  *zoom: 1;
+}
+.form-horizontal .control-group:before,
+.form-horizontal .control-group:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.form-horizontal .control-group:after {
+  clear: both;
+}
+.form-horizontal .control-label {
+  float: left;
+  width: 160px;
+  padding-top: 5px;
+  text-align: right;
+}
+.form-horizontal .controls {
+  *display: inline-block;
+  *padding-left: 20px;
+  margin-left: 180px;
+  *margin-left: 0;
+}
+.form-horizontal .controls:first-child {
+  *padding-left: 180px;
+}
+.form-horizontal .help-block {
+  margin-bottom: 0;
+}
+.form-horizontal input + .help-block,
+.form-horizontal select + .help-block,
+.form-horizontal textarea + .help-block,
+.form-horizontal .uneditable-input + .help-block,
+.form-horizontal .input-prepend + .help-block,
+.form-horizontal .input-append + .help-block {
+  margin-top: 10px;
+}
+.form-horizontal .form-actions {
+  padding-left: 180px;
+}
+table {
+  max-width: 100%;
+  background-color: transparent;
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+.table {
+  width: 100%;
+  margin-bottom: 20px;
+}
+.table th,
+.table td {
+  padding: 8px;
+  line-height: 20px;
+  text-align: left;
+  vertical-align: top;
+  border-top: 1px solid #dddddd;
+}
+.table th {
+  font-weight: bold;
+}
+.table thead th {
+  vertical-align: bottom;
+}
+.table caption + thead tr:first-child th,
+.table caption + thead tr:first-child td,
+.table colgroup + thead tr:first-child th,
+.table colgroup + thead tr:first-child td,
+.table thead:first-child tr:first-child th,
+.table thead:first-child tr:first-child td {
+  border-top: 0;
+}
+.table tbody + tbody {
+  border-top: 2px solid #dddddd;
+}
+.table .table {
+  background-color: #ffffff;
+}
+.table-condensed th,
+.table-condensed td {
+  padding: 4px 5px;
+}
+.table-bordered {
+  border: 1px solid #dddddd;
+  border-collapse: separate;
+  *border-collapse: collapse;
+  border-left: 0;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.table-bordered th,
+.table-bordered td {
+  border-left: 1px solid #dddddd;
+}
+.table-bordered caption + thead tr:first-child th,
+.table-bordered caption + tbody tr:first-child th,
+.table-bordered caption + tbody tr:first-child td,
+.table-bordered colgroup + thead tr:first-child th,
+.table-bordered colgroup + tbody tr:first-child th,
+.table-bordered colgroup + tbody tr:first-child td,
+.table-bordered thead:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child td {
+  border-top: 0;
+}
+.table-bordered thead:first-child tr:first-child > th:first-child,
+.table-bordered tbody:first-child tr:first-child > td:first-child,
+.table-bordered tbody:first-child tr:first-child > th:first-child {
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+}
+.table-bordered thead:first-child tr:first-child > th:last-child,
+.table-bordered tbody:first-child tr:first-child > td:last-child,
+.table-bordered tbody:first-child tr:first-child > th:last-child {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+}
+.table-bordered thead:last-child tr:last-child > th:first-child,
+.table-bordered tbody:last-child tr:last-child > td:first-child,
+.table-bordered tbody:last-child tr:last-child > th:first-child,
+.table-bordered tfoot:last-child tr:last-child > td:first-child,
+.table-bordered tfoot:last-child tr:last-child > th:first-child {
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.table-bordered thead:last-child tr:last-child > th:last-child,
+.table-bordered tbody:last-child tr:last-child > td:last-child,
+.table-bordered tbody:last-child tr:last-child > th:last-child,
+.table-bordered tfoot:last-child tr:last-child > td:last-child,
+.table-bordered tfoot:last-child tr:last-child > th:last-child {
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+}
+.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
+  -webkit-border-bottom-left-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  border-bottom-left-radius: 0;
+}
+.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
+  -webkit-border-bottom-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  border-bottom-right-radius: 0;
+}
+.table-bordered caption + thead tr:first-child th:first-child,
+.table-bordered caption + tbody tr:first-child td:first-child,
+.table-bordered colgroup + thead tr:first-child th:first-child,
+.table-bordered colgroup + tbody tr:first-child td:first-child {
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+}
+.table-bordered caption + thead tr:first-child th:last-child,
+.table-bordered caption + tbody tr:first-child td:last-child,
+.table-bordered colgroup + thead tr:first-child th:last-child,
+.table-bordered colgroup + tbody tr:first-child td:last-child {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+}
+.table-striped tbody > tr:nth-child(odd) > td,
+.table-striped tbody > tr:nth-child(odd) > th {
+  background-color: #f9f9f9;
+}
+.table-hover tbody tr:hover > td,
+.table-hover tbody tr:hover > th {
+  background-color: #f5f5f5;
+}
+table td[class*="span"],
+table th[class*="span"],
+.row-fluid table td[class*="span"],
+.row-fluid table th[class*="span"] {
+  display: table-cell;
+  float: none;
+  margin-left: 0;
+}
+.table td.span1,
+.table th.span1 {
+  float: none;
+  width: 44px;
+  margin-left: 0;
+}
+.table td.span2,
+.table th.span2 {
+  float: none;
+  width: 124px;
+  margin-left: 0;
+}
+.table td.span3,
+.table th.span3 {
+  float: none;
+  width: 204px;
+  margin-left: 0;
+}
+.table td.span4,
+.table th.span4 {
+  float: none;
+  width: 284px;
+  margin-left: 0;
+}
+.table td.span5,
+.table th.span5 {
+  float: none;
+  width: 364px;
+  margin-left: 0;
+}
+.table td.span6,
+.table th.span6 {
+  float: none;
+  width: 444px;
+  margin-left: 0;
+}
+.table td.span7,
+.table th.span7 {
+  float: none;
+  width: 524px;
+  margin-left: 0;
+}
+.table td.span8,
+.table th.span8 {
+  float: none;
+  width: 604px;
+  margin-left: 0;
+}
+.table td.span9,
+.table th.span9 {
+  float: none;
+  width: 684px;
+  margin-left: 0;
+}
+.table td.span10,
+.table th.span10 {
+  float: none;
+  width: 764px;
+  margin-left: 0;
+}
+.table td.span11,
+.table th.span11 {
+  float: none;
+  width: 844px;
+  margin-left: 0;
+}
+.table td.span12,
+.table th.span12 {
+  float: none;
+  width: 924px;
+  margin-left: 0;
+}
+.table tbody tr.success > td {
+  background-color: #dff0d8;
+}
+.table tbody tr.error > td {
+  background-color: #f2dede;
+}
+.table tbody tr.warning > td {
+  background-color: #fcf8e3;
+}
+.table tbody tr.info > td {
+  background-color: #d9edf7;
+}
+.table-hover tbody tr.success:hover > td {
+  background-color: #d0e9c6;
+}
+.table-hover tbody tr.error:hover > td {
+  background-color: #ebcccc;
+}
+.table-hover tbody tr.warning:hover > td {
+  background-color: #faf2cc;
+}
+.table-hover tbody tr.info:hover > td {
+  background-color: #c4e3f3;
+}
+/*@import "bootstrap/sprites.less";*/
+.dropup,
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle {
+  *margin-bottom: -3px;
+}
+.dropdown-toggle:active,
+.open .dropdown-toggle {
+  outline: 0;
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  vertical-align: top;
+  border-top: 4px solid #000000;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+  content: "";
+}
+.dropdown .caret {
+  margin-top: 8px;
+  margin-left: 2px;
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  list-style: none;
+  background-color: #ffffff;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  *border-right-width: 2px;
+  *border-bottom-width: 2px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding;
+  background-clip: padding-box;
+}
+.dropdown-menu.pull-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu .divider {
+  *width: 100%;
+  height: 1px;
+  margin: 9px 1px;
+  *margin: -5px 0 5px;
+  overflow: hidden;
+  background-color: #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+}
+.dropdown-menu > li > a {
+  display: block;
+  padding: 3px 20px;
+  clear: both;
+  font-weight: normal;
+  line-height: 20px;
+  color: #333333;
+  white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus,
+.dropdown-submenu:hover > a,
+.dropdown-submenu:focus > a {
+  text-decoration: none;
+  color: #ffffff;
+  background-color: #0081c2;
+  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  color: #ffffff;
+  text-decoration: none;
+  outline: 0;
+  background-color: #0081c2;
+  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  color: #999999;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  text-decoration: none;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  cursor: default;
+}
+.open {
+  *z-index: 1000;
+}
+.open > .dropdown-menu {
+  display: block;
+}
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+  border-top: 0;
+  border-bottom: 4px solid #000000;
+  content: "";
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 1px;
+}
+.dropdown-submenu {
+  position: relative;
+}
+.dropdown-submenu > .dropdown-menu {
+  top: 0;
+  left: 100%;
+  margin-top: -6px;
+  margin-left: -1px;
+  -webkit-border-radius: 0 6px 6px 6px;
+  -moz-border-radius: 0 6px 6px 6px;
+  border-radius: 0 6px 6px 6px;
+}
+.dropdown-submenu:hover > .dropdown-menu {
+  display: block;
+}
+.dropup .dropdown-submenu > .dropdown-menu {
+  top: auto;
+  bottom: 0;
+  margin-top: 0;
+  margin-bottom: -2px;
+  -webkit-border-radius: 5px 5px 5px 0;
+  -moz-border-radius: 5px 5px 5px 0;
+  border-radius: 5px 5px 5px 0;
+}
+.dropdown-submenu > a:after {
+  display: block;
+  content: " ";
+  float: right;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #cccccc;
+  margin-top: 5px;
+  margin-right: -10px;
+}
+.dropdown-submenu:hover > a:after {
+  border-left-color: #ffffff;
+}
+.dropdown-submenu.pull-left {
+  float: none;
+}
+.dropdown-submenu.pull-left > .dropdown-menu {
+  left: -100%;
+  margin-left: 10px;
+  -webkit-border-radius: 6px 0 6px 6px;
+  -moz-border-radius: 6px 0 6px 6px;
+  border-radius: 6px 0 6px 6px;
+}
+.dropdown .dropdown-menu .nav-header {
+  padding-left: 20px;
+  padding-right: 20px;
+}
+.typeahead {
+  z-index: 1051;
+  margin-top: 2px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #e3e3e3;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, 0.15);
+}
+.well-large {
+  padding: 24px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.well-small {
+  padding: 9px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+/*@import "bootstrap/component-animations.less";*/
+/*@import "bootstrap/close.less";*/
+.btn {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  padding: 4px 12px;
+  margin-bottom: 0;
+  font-size: 13px;
+  line-height: 20px;
+  text-align: center;
+  vertical-align: middle;
+  cursor: pointer;
+  color: #333333;
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+  background-color: #f5f5f5;
+  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
+  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #e6e6e6;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  border: 1px solid #cccccc;
+  *border: 0;
+  border-bottom-color: #b3b3b3;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  *margin-left: .3em;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn:hover,
+.btn:focus,
+.btn:active,
+.btn.active,
+.btn.disabled,
+.btn[disabled] {
+  color: #333333;
+  background-color: #e6e6e6;
+  *background-color: #d9d9d9;
+}
+.btn:active,
+.btn.active {
+  background-color: #cccccc \9;
+}
+.btn:first-child {
+  *margin-left: 0;
+}
+.btn:hover,
+.btn:focus {
+  color: #333333;
+  text-decoration: none;
+  background-position: 0 -15px;
+  -webkit-transition: background-position 0.1s linear;
+  -moz-transition: background-position 0.1s linear;
+  -o-transition: background-position 0.1s linear;
+  transition: background-position 0.1s linear;
+}
+.btn:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn.active,
+.btn:active {
+  background-image: none;
+  outline: 0;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn.disabled,
+.btn[disabled] {
+  cursor: default;
+  background-image: none;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.btn-large {
+  padding: 11px 19px;
+  font-size: 16.25px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.btn-large [class^="icon-"],
+.btn-large [class*=" icon-"] {
+  margin-top: 4px;
+}
+.btn-small {
+  padding: 2px 10px;
+  font-size: 11.049999999999999px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.btn-small [class^="icon-"],
+.btn-small [class*=" icon-"] {
+  margin-top: 0;
+}
+.btn-mini [class^="icon-"],
+.btn-mini [class*=" icon-"] {
+  margin-top: -1px;
+}
+.btn-mini {
+  padding: 0 6px;
+  font-size: 9.75px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.btn-block {
+  display: block;
+  width: 100%;
+  padding-left: 0;
+  padding-right: 0;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+  width: 100%;
+}
+.btn-primary.active,
+.btn-warning.active,
+.btn-danger.active,
+.btn-success.active,
+.btn-info.active,
+.btn-inverse.active {
+  color: rgba(255, 255, 255, 0.75);
+}
+.btn-primary {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #006dcc;
+  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
+  border-color: #0044cc #0044cc #002a80;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #0044cc;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.btn-primary.disabled,
+.btn-primary[disabled] {
+  color: #ffffff;
+  background-color: #0044cc;
+  *background-color: #003bb3;
+}
+.btn-primary:active,
+.btn-primary.active {
+  background-color: #003399 \9;
+}
+.btn-warning {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #faa732;
+  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+  background-image: -o-linear-gradient(top, #fbb450, #f89406);
+  background-image: linear-gradient(to bottom, #fbb450, #f89406);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+  border-color: #f89406 #f89406 #ad6704;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #f89406;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning:active,
+.btn-warning.active,
+.btn-warning.disabled,
+.btn-warning[disabled] {
+  color: #ffffff;
+  background-color: #f89406;
+  *background-color: #df8505;
+}
+.btn-warning:active,
+.btn-warning.active {
+  background-color: #c67605 \9;
+}
+.btn-danger {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #da4f49;
+  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
+  border-color: #bd362f #bd362f #802420;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #bd362f;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.btn-danger.disabled,
+.btn-danger[disabled] {
+  color: #ffffff;
+  background-color: #bd362f;
+  *background-color: #a9302a;
+}
+.btn-danger:active,
+.btn-danger.active {
+  background-color: #942a25 \9;
+}
+.btn-success {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #5bb75b;
+  background-image: -moz-linear-gradient(top, #62c462, #51a351);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+  background-image: -o-linear-gradient(top, #62c462, #51a351);
+  background-image: linear-gradient(to bottom, #62c462, #51a351);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
+  border-color: #51a351 #51a351 #387038;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #51a351;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-success:hover,
+.btn-success:focus,
+.btn-success:active,
+.btn-success.active,
+.btn-success.disabled,
+.btn-success[disabled] {
+  color: #ffffff;
+  background-color: #51a351;
+  *background-color: #499249;
+}
+.btn-success:active,
+.btn-success.active {
+  background-color: #408140 \9;
+}
+.btn-info {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #49afcd;
+  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
+  border-color: #2f96b4 #2f96b4 #1f6377;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #2f96b4;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-info:hover,
+.btn-info:focus,
+.btn-info:active,
+.btn-info.active,
+.btn-info.disabled,
+.btn-info[disabled] {
+  color: #ffffff;
+  background-color: #2f96b4;
+  *background-color: #2a85a0;
+}
+.btn-info:active,
+.btn-info.active {
+  background-color: #24748c \9;
+}
+.btn-inverse {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #363636;
+  background-image: -moz-linear-gradient(top, #444444, #222222);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
+  background-image: -webkit-linear-gradient(top, #444444, #222222);
+  background-image: -o-linear-gradient(top, #444444, #222222);
+  background-image: linear-gradient(to bottom, #444444, #222222);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
+  border-color: #222222 #222222 #000000;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #222222;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-inverse:hover,
+.btn-inverse:focus,
+.btn-inverse:active,
+.btn-inverse.active,
+.btn-inverse.disabled,
+.btn-inverse[disabled] {
+  color: #ffffff;
+  background-color: #222222;
+  *background-color: #151515;
+}
+.btn-inverse:active,
+.btn-inverse.active {
+  background-color: #080808 \9;
+}
+button.btn,
+input[type="submit"].btn {
+  *padding-top: 3px;
+  *padding-bottom: 3px;
+}
+button.btn::-moz-focus-inner,
+input[type="submit"].btn::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button.btn.btn-large,
+input[type="submit"].btn.btn-large {
+  *padding-top: 7px;
+  *padding-bottom: 7px;
+}
+button.btn.btn-small,
+input[type="submit"].btn.btn-small {
+  *padding-top: 3px;
+  *padding-bottom: 3px;
+}
+button.btn.btn-mini,
+input[type="submit"].btn.btn-mini {
+  *padding-top: 1px;
+  *padding-bottom: 1px;
+}
+.btn-link,
+.btn-link:active,
+.btn-link[disabled] {
+  background-color: transparent;
+  background-image: none;
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.btn-link {
+  border-color: transparent;
+  cursor: pointer;
+  color: #0088cc;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-link:hover,
+.btn-link:focus {
+  color: #005580;
+  text-decoration: underline;
+  background-color: transparent;
+}
+.btn-link[disabled]:hover,
+.btn-link[disabled]:focus {
+  color: #333333;
+  text-decoration: none;
+}
+.btn-group {
+  position: relative;
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  font-size: 0;
+  vertical-align: middle;
+  white-space: nowrap;
+  *margin-left: .3em;
+}
+.btn-group:first-child {
+  *margin-left: 0;
+}
+.btn-group + .btn-group {
+  margin-left: 5px;
+}
+.btn-toolbar {
+  font-size: 0;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.btn-toolbar > .btn + .btn,
+.btn-toolbar > .btn-group + .btn,
+.btn-toolbar > .btn + .btn-group {
+  margin-left: 5px;
+}
+.btn-group > .btn {
+  position: relative;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-group > .btn + .btn {
+  margin-left: -1px;
+}
+.btn-group > .btn,
+.btn-group > .dropdown-menu,
+.btn-group > .popover {
+  font-size: 13px;
+}
+.btn-group > .btn-mini {
+  font-size: 9.75px;
+}
+.btn-group > .btn-small {
+  font-size: 11.049999999999999px;
+}
+.btn-group > .btn-large {
+  font-size: 16.25px;
+}
+.btn-group > .btn:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.btn-group > .btn:last-child,
+.btn-group > .dropdown-toggle {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+}
+.btn-group > .btn.large:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 6px;
+  -moz-border-radius-topleft: 6px;
+  border-top-left-radius: 6px;
+  -webkit-border-bottom-left-radius: 6px;
+  -moz-border-radius-bottomleft: 6px;
+  border-bottom-left-radius: 6px;
+}
+.btn-group > .btn.large:last-child,
+.btn-group > .large.dropdown-toggle {
+  -webkit-border-top-right-radius: 6px;
+  -moz-border-radius-topright: 6px;
+  border-top-right-radius: 6px;
+  -webkit-border-bottom-right-radius: 6px;
+  -moz-border-radius-bottomright: 6px;
+  border-bottom-right-radius: 6px;
+}
+.btn-group > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group > .btn:active,
+.btn-group > .btn.active {
+  z-index: 2;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+  padding-left: 8px;
+  padding-right: 8px;
+  -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  *padding-top: 5px;
+  *padding-bottom: 5px;
+}
+.btn-group > .btn-mini + .dropdown-toggle {
+  padding-left: 5px;
+  padding-right: 5px;
+  *padding-top: 2px;
+  *padding-bottom: 2px;
+}
+.btn-group > .btn-small + .dropdown-toggle {
+  *padding-top: 5px;
+  *padding-bottom: 4px;
+}
+.btn-group > .btn-large + .dropdown-toggle {
+  padding-left: 12px;
+  padding-right: 12px;
+  *padding-top: 7px;
+  *padding-bottom: 7px;
+}
+.btn-group.open .dropdown-toggle {
+  background-image: none;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn-group.open .btn.dropdown-toggle {
+  background-color: #e6e6e6;
+}
+.btn-group.open .btn-primary.dropdown-toggle {
+  background-color: #0044cc;
+}
+.btn-group.open .btn-warning.dropdown-toggle {
+  background-color: #f89406;
+}
+.btn-group.open .btn-danger.dropdown-toggle {
+  background-color: #bd362f;
+}
+.btn-group.open .btn-success.dropdown-toggle {
+  background-color: #51a351;
+}
+.btn-group.open .btn-info.dropdown-toggle {
+  background-color: #2f96b4;
+}
+.btn-group.open .btn-inverse.dropdown-toggle {
+  background-color: #222222;
+}
+.btn .caret {
+  margin-top: 8px;
+  margin-left: 0;
+}
+.btn-large .caret {
+  margin-top: 6px;
+}
+.btn-large .caret {
+  border-left-width: 5px;
+  border-right-width: 5px;
+  border-top-width: 5px;
+}
+.btn-mini .caret,
+.btn-small .caret {
+  margin-top: 8px;
+}
+.dropup .btn-large .caret {
+  border-bottom-width: 5px;
+}
+.btn-primary .caret,
+.btn-warning .caret,
+.btn-danger .caret,
+.btn-info .caret,
+.btn-success .caret,
+.btn-inverse .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.btn-group-vertical {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+}
+.btn-group-vertical > .btn {
+  display: block;
+  float: none;
+  max-width: 100%;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-group-vertical > .btn + .btn {
+  margin-left: 0;
+  margin-top: -1px;
+}
+.btn-group-vertical > .btn:first-child {
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.btn-group-vertical > .btn:last-child {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.btn-group-vertical > .btn-large:first-child {
+  -webkit-border-radius: 6px 6px 0 0;
+  -moz-border-radius: 6px 6px 0 0;
+  border-radius: 6px 6px 0 0;
+}
+.btn-group-vertical > .btn-large:last-child {
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+}
+.alert {
+  padding: 8px 35px 8px 14px;
+  margin-bottom: 20px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  background-color: #fcf8e3;
+  border: 1px solid #fbeed5;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.alert,
+.alert h4 {
+  color: #c09853;
+}
+.alert h4 {
+  margin: 0;
+}
+.alert .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  line-height: 20px;
+}
+.alert-success {
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+  color: #468847;
+}
+.alert-success h4 {
+  color: #468847;
+}
+.alert-danger,
+.alert-error {
+  background-color: #f2dede;
+  border-color: #eed3d7;
+  color: #b94a48;
+}
+.alert-danger h4,
+.alert-error h4 {
+  color: #b94a48;
+}
+.alert-info {
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+  color: #3a87ad;
+}
+.alert-info h4 {
+  color: #3a87ad;
+}
+.alert-block {
+  padding-top: 14px;
+  padding-bottom: 14px;
+}
+.alert-block > p,
+.alert-block > ul {
+  margin-bottom: 0;
+}
+.alert-block p + p {
+  margin-top: 5px;
+}
+.nav {
+  margin-left: 0;
+  margin-bottom: 20px;
+  list-style: none;
+}
+.nav > li > a {
+  display: block;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+  text-decoration: none;
+  background-color: #eeeeee;
+}
+.nav > li > a > img {
+  max-width: none;
+}
+.nav > .pull-right {
+  float: right;
+}
+.nav-header {
+  display: block;
+  padding: 3px 15px;
+  font-size: 11px;
+  font-weight: bold;
+  line-height: 20px;
+  color: #999999;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  text-transform: uppercase;
+}
+.nav li + .nav-header {
+  margin-top: 9px;
+}
+.nav-list {
+  padding-left: 15px;
+  padding-right: 15px;
+  margin-bottom: 0;
+}
+.nav-list > li > a,
+.nav-list .nav-header {
+  margin-left: -15px;
+  margin-right: -15px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+.nav-list > li > a {
+  padding: 3px 15px;
+}
+.nav-list > .active > a,
+.nav-list > .active > a:hover,
+.nav-list > .active > a:focus {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+  background-color: #0088cc;
+}
+.nav-list [class^="icon-"],
+.nav-list [class*=" icon-"] {
+  margin-right: 2px;
+}
+.nav-list .divider {
+  *width: 100%;
+  height: 1px;
+  margin: 9px 1px;
+  *margin: -5px 0 5px;
+  overflow: hidden;
+  background-color: #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+}
+.nav-tabs,
+.nav-pills {
+  *zoom: 1;
+}
+.nav-tabs:before,
+.nav-pills:before,
+.nav-tabs:after,
+.nav-pills:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.nav-tabs:after,
+.nav-pills:after {
+  clear: both;
+}
+.nav-tabs > li,
+.nav-pills > li {
+  float: left;
+}
+.nav-tabs > li > a,
+.nav-pills > li > a {
+  padding-right: 12px;
+  padding-left: 12px;
+  margin-right: 2px;
+  line-height: 14px;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  line-height: 20px;
+  border: 1px solid transparent;
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover,
+.nav-tabs > li > a:focus {
+  border-color: #eeeeee #eeeeee #dddddd;
+}
+.nav-tabs > .active > a,
+.nav-tabs > .active > a:hover,
+.nav-tabs > .active > a:focus {
+  color: #555555;
+  background-color: #ffffff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+  cursor: default;
+}
+.nav-pills > li > a {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  margin-top: 2px;
+  margin-bottom: 2px;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.nav-pills > .active > a,
+.nav-pills > .active > a:hover,
+.nav-pills > .active > a:focus {
+  color: #ffffff;
+  background-color: #0088cc;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li > a {
+  margin-right: 0;
+}
+.nav-tabs.nav-stacked {
+  border-bottom: 0;
+}
+.nav-tabs.nav-stacked > li > a {
+  border: 1px solid #ddd;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.nav-tabs.nav-stacked > li:first-child > a {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+}
+.nav-tabs.nav-stacked > li:last-child > a {
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.nav-tabs.nav-stacked > li > a:hover,
+.nav-tabs.nav-stacked > li > a:focus {
+  border-color: #ddd;
+  z-index: 2;
+}
+.nav-pills.nav-stacked > li > a {
+  margin-bottom: 3px;
+}
+.nav-pills.nav-stacked > li:last-child > a {
+  margin-bottom: 1px;
+}
+.nav-tabs .dropdown-menu {
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+}
+.nav-pills .dropdown-menu {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.nav .dropdown-toggle .caret {
+  border-top-color: #0088cc;
+  border-bottom-color: #0088cc;
+  margin-top: 6px;
+}
+.nav .dropdown-toggle:hover .caret,
+.nav .dropdown-toggle:focus .caret {
+  border-top-color: #005580;
+  border-bottom-color: #005580;
+}
+/* move down carets for tabs */
+.nav-tabs .dropdown-toggle .caret {
+  margin-top: 8px;
+}
+.nav .active .dropdown-toggle .caret {
+  border-top-color: #fff;
+  border-bottom-color: #fff;
+}
+.nav-tabs .active .dropdown-toggle .caret {
+  border-top-color: #555555;
+  border-bottom-color: #555555;
+}
+.nav > .dropdown.active > a:hover,
+.nav > .dropdown.active > a:focus {
+  cursor: pointer;
+}
+.nav-tabs .open .dropdown-toggle,
+.nav-pills .open .dropdown-toggle,
+.nav > li.dropdown.open.active > a:hover,
+.nav > li.dropdown.open.active > a:focus {
+  color: #ffffff;
+  background-color: #999999;
+  border-color: #999999;
+}
+.nav li.dropdown.open .caret,
+.nav li.dropdown.open.active .caret,
+.nav li.dropdown.open a:hover .caret,
+.nav li.dropdown.open a:focus .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.tabs-stacked .open > a:hover,
+.tabs-stacked .open > a:focus {
+  border-color: #999999;
+}
+.tabbable {
+  *zoom: 1;
+}
+.tabbable:before,
+.tabbable:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.tabbable:after {
+  clear: both;
+}
+.tab-content {
+  overflow: auto;
+}
+.tabs-below > .nav-tabs,
+.tabs-right > .nav-tabs,
+.tabs-left > .nav-tabs {
+  border-bottom: 0;
+}
+.tab-content > .tab-pane,
+.pill-content > .pill-pane {
+  display: none;
+}
+.tab-content > .active,
+.pill-content > .active {
+  display: block;
+}
+.tabs-below > .nav-tabs {
+  border-top: 1px solid #ddd;
+}
+.tabs-below > .nav-tabs > li {
+  margin-top: -1px;
+  margin-bottom: 0;
+}
+.tabs-below > .nav-tabs > li > a {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.tabs-below > .nav-tabs > li > a:hover,
+.tabs-below > .nav-tabs > li > a:focus {
+  border-bottom-color: transparent;
+  border-top-color: #ddd;
+}
+.tabs-below > .nav-tabs > .active > a,
+.tabs-below > .nav-tabs > .active > a:hover,
+.tabs-below > .nav-tabs > .active > a:focus {
+  border-color: transparent #ddd #ddd #ddd;
+}
+.tabs-left > .nav-tabs > li,
+.tabs-right > .nav-tabs > li {
+  float: none;
+}
+.tabs-left > .nav-tabs > li > a,
+.tabs-right > .nav-tabs > li > a {
+  min-width: 74px;
+  margin-right: 0;
+  margin-bottom: 3px;
+}
+.tabs-left > .nav-tabs {
+  float: left;
+  margin-right: 19px;
+  border-right: 1px solid #ddd;
+}
+.tabs-left > .nav-tabs > li > a {
+  margin-right: -1px;
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.tabs-left > .nav-tabs > li > a:hover,
+.tabs-left > .nav-tabs > li > a:focus {
+  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
+}
+.tabs-left > .nav-tabs .active > a,
+.tabs-left > .nav-tabs .active > a:hover,
+.tabs-left > .nav-tabs .active > a:focus {
+  border-color: #ddd transparent #ddd #ddd;
+  *border-right-color: #ffffff;
+}
+.tabs-right > .nav-tabs {
+  float: right;
+  margin-left: 19px;
+  border-left: 1px solid #ddd;
+}
+.tabs-right > .nav-tabs > li > a {
+  margin-left: -1px;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.tabs-right > .nav-tabs > li > a:hover,
+.tabs-right > .nav-tabs > li > a:focus {
+  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
+}
+.tabs-right > .nav-tabs .active > a,
+.tabs-right > .nav-tabs .active > a:hover,
+.tabs-right > .nav-tabs .active > a:focus {
+  border-color: #ddd #ddd #ddd transparent;
+  *border-left-color: #ffffff;
+}
+.nav > .disabled > a {
+  color: #999999;
+}
+.nav > .disabled > a:hover,
+.nav > .disabled > a:focus {
+  text-decoration: none;
+  background-color: transparent;
+  cursor: default;
+}
+.navbar {
+  overflow: visible;
+  margin-bottom: 20px;
+  *position: relative;
+  *z-index: 2;
+}
+.navbar-inner {
+  min-height: 40px;
+  padding-left: 20px;
+  padding-right: 20px;
+  background-color: #fafafa;
+  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
+  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
+  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
+  border: 1px solid #d4d4d4;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  *zoom: 1;
+}
+.navbar-inner:before,
+.navbar-inner:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.navbar-inner:after {
+  clear: both;
+}
+.navbar .container {
+  width: auto;
+}
+.nav-collapse.collapse {
+  height: auto;
+  overflow: visible;
+}
+.navbar .brand {
+  float: left;
+  display: block;
+  padding: 10px 20px 10px;
+  margin-left: -20px;
+  font-size: 20px;
+  font-weight: 200;
+  color: #777777;
+  text-shadow: 0 1px 0 #ffffff;
+}
+.navbar .brand:hover,
+.navbar .brand:focus {
+  text-decoration: none;
+}
+.navbar-text {
+  margin-bottom: 0;
+  line-height: 40px;
+  color: #777777;
+}
+.navbar-link {
+  color: #777777;
+}
+.navbar-link:hover,
+.navbar-link:focus {
+  color: #333333;
+}
+.navbar .divider-vertical {
+  height: 40px;
+  margin: 0 9px;
+  border-left: 1px solid #f2f2f2;
+  border-right: 1px solid #ffffff;
+}
+.navbar .btn,
+.navbar .btn-group {
+  margin-top: 5px;
+}
+.navbar .btn-group .btn,
+.navbar .input-prepend .btn,
+.navbar .input-append .btn,
+.navbar .input-prepend .btn-group,
+.navbar .input-append .btn-group {
+  margin-top: 0;
+}
+.navbar-form {
+  margin-bottom: 0;
+  *zoom: 1;
+}
+.navbar-form:before,
+.navbar-form:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.navbar-form:after {
+  clear: both;
+}
+.navbar-form input,
+.navbar-form select,
+.navbar-form .radio,
+.navbar-form .checkbox {
+  margin-top: 5px;
+}
+.navbar-form input,
+.navbar-form select,
+.navbar-form .btn {
+  display: inline-block;
+  margin-bottom: 0;
+}
+.navbar-form input[type="image"],
+.navbar-form input[type="checkbox"],
+.navbar-form input[type="radio"] {
+  margin-top: 3px;
+}
+.navbar-form .input-append,
+.navbar-form .input-prepend {
+  margin-top: 5px;
+  white-space: nowrap;
+}
+.navbar-form .input-append input,
+.navbar-form .input-prepend input {
+  margin-top: 0;
+}
+.navbar-search {
+  position: relative;
+  float: left;
+  margin-top: 5px;
+  margin-bottom: 0;
+}
+.navbar-search .search-query {
+  margin-bottom: 0;
+  padding: 4px 14px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 1;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  border-radius: 15px;
+}
+.navbar-static-top {
+  position: static;
+  margin-bottom: 0;
+}
+.navbar-static-top .navbar-inner {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+  margin-bottom: 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+  border-width: 0 0 1px;
+}
+.navbar-fixed-bottom .navbar-inner {
+  border-width: 1px 0 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-fixed-bottom .navbar-inner {
+  padding-left: 0;
+  padding-right: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+  width: 940px;
+}
+.navbar-fixed-top {
+  top: 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+  -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1);
+  -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1);
+  box-shadow: 0 1px 10px rgba(0,0,0,.1);
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+}
+.navbar-fixed-bottom .navbar-inner {
+  -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
+  -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
+  box-shadow: 0 -1px 10px rgba(0,0,0,.1);
+}
+.navbar .nav {
+  position: relative;
+  left: 0;
+  display: block;
+  float: left;
+  margin: 0 10px 0 0;
+}
+.navbar .nav.pull-right {
+  float: right;
+  margin-right: 0;
+}
+.navbar .nav > li {
+  float: left;
+}
+.navbar .nav > li > a {
+  float: none;
+  padding: 10px 15px 10px;
+  color: #777777;
+  text-decoration: none;
+  text-shadow: 0 1px 0 #ffffff;
+}
+.navbar .nav .dropdown-toggle .caret {
+  margin-top: 8px;
+}
+.navbar .nav > li > a:focus,
+.navbar .nav > li > a:hover {
+  background-color: transparent;
+  color: #333333;
+  text-decoration: none;
+}
+.navbar .nav > .active > a,
+.navbar .nav > .active > a:hover,
+.navbar .nav > .active > a:focus {
+  color: #555555;
+  text-decoration: none;
+  background-color: #e5e5e5;
+  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+  -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+  box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+}
+.navbar .btn-navbar {
+  display: none;
+  float: right;
+  padding: 7px 10px;
+  margin-left: 5px;
+  margin-right: 5px;
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #ededed;
+  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
+  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
+  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #e5e5e5;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+}
+.navbar .btn-navbar:hover,
+.navbar .btn-navbar:focus,
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active,
+.navbar .btn-navbar.disabled,
+.navbar .btn-navbar[disabled] {
+  color: #ffffff;
+  background-color: #e5e5e5;
+  *background-color: #d9d9d9;
+}
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active {
+  background-color: #cccccc \9;
+}
+.navbar .btn-navbar .icon-bar {
+  display: block;
+  width: 18px;
+  height: 2px;
+  background-color: #f5f5f5;
+  -webkit-border-radius: 1px;
+  -moz-border-radius: 1px;
+  border-radius: 1px;
+  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+}
+.btn-navbar .icon-bar + .icon-bar {
+  margin-top: 3px;
+}
+.navbar .nav > li > .dropdown-menu:before {
+  content: '';
+  display: inline-block;
+  border-left: 7px solid transparent;
+  border-right: 7px solid transparent;
+  border-bottom: 7px solid #ccc;
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+  position: absolute;
+  top: -7px;
+  left: 9px;
+}
+.navbar .nav > li > .dropdown-menu:after {
+  content: '';
+  display: inline-block;
+  border-left: 6px solid transparent;
+  border-right: 6px solid transparent;
+  border-bottom: 6px solid #ffffff;
+  position: absolute;
+  top: -6px;
+  left: 10px;
+}
+.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
+  border-top: 7px solid #ccc;
+  border-top-color: rgba(0, 0, 0, 0.2);
+  border-bottom: 0;
+  bottom: -7px;
+  top: auto;
+}
+.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
+  border-top: 6px solid #ffffff;
+  border-bottom: 0;
+  bottom: -6px;
+  top: auto;
+}
+.navbar .nav li.dropdown > a:hover .caret,
+.navbar .nav li.dropdown > a:focus .caret {
+  border-top-color: #333333;
+  border-bottom-color: #333333;
+}
+.navbar .nav li.dropdown.open > .dropdown-toggle,
+.navbar .nav li.dropdown.active > .dropdown-toggle,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle {
+  background-color: #e5e5e5;
+  color: #555555;
+}
+.navbar .nav li.dropdown > .dropdown-toggle .caret {
+  border-top-color: #777777;
+  border-bottom-color: #777777;
+}
+.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
+  border-top-color: #555555;
+  border-bottom-color: #555555;
+}
+.navbar .pull-right > li > .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right {
+  left: auto;
+  right: 0;
+}
+.navbar .pull-right > li > .dropdown-menu:before,
+.navbar .nav > li > .dropdown-menu.pull-right:before {
+  left: auto;
+  right: 12px;
+}
+.navbar .pull-right > li > .dropdown-menu:after,
+.navbar .nav > li > .dropdown-menu.pull-right:after {
+  left: auto;
+  right: 13px;
+}
+.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
+  left: auto;
+  right: 100%;
+  margin-left: 0;
+  margin-right: -1px;
+  -webkit-border-radius: 6px 0 6px 6px;
+  -moz-border-radius: 6px 0 6px 6px;
+  border-radius: 6px 0 6px 6px;
+}
+.navbar-inverse .navbar-inner {
+  background-color: #1b1b1b;
+  background-image: -moz-linear-gradient(top, #222222, #111111);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
+  background-image: -webkit-linear-gradient(top, #222222, #111111);
+  background-image: -o-linear-gradient(top, #222222, #111111);
+  background-image: linear-gradient(to bottom, #222222, #111111);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
+  border-color: #252525;
+}
+.navbar-inverse .brand,
+.navbar-inverse .nav > li > a {
+  color: #999999;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.navbar-inverse .brand:hover,
+.navbar-inverse .nav > li > a:hover,
+.navbar-inverse .brand:focus,
+.navbar-inverse .nav > li > a:focus {
+  color: #ffffff;
+}
+.navbar-inverse .brand {
+  color: #999999;
+}
+.navbar-inverse .navbar-text {
+  color: #999999;
+}
+.navbar-inverse .nav > li > a:focus,
+.navbar-inverse .nav > li > a:hover {
+  background-color: transparent;
+  color: #ffffff;
+}
+.navbar-inverse .nav .active > a,
+.navbar-inverse .nav .active > a:hover,
+.navbar-inverse .nav .active > a:focus {
+  color: #ffffff;
+  background-color: #111111;
+}
+.navbar-inverse .navbar-link {
+  color: #999999;
+}
+.navbar-inverse .navbar-link:hover,
+.navbar-inverse .navbar-link:focus {
+  color: #ffffff;
+}
+.navbar-inverse .divider-vertical {
+  border-left-color: #111111;
+  border-right-color: #222222;
+}
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
+  background-color: #111111;
+  color: #ffffff;
+}
+.navbar-inverse .nav li.dropdown > a:hover .caret,
+.navbar-inverse .nav li.dropdown > a:focus .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
+  border-top-color: #999999;
+  border-bottom-color: #999999;
+}
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.navbar-inverse .navbar-search .search-query {
+  color: #ffffff;
+  background-color: #515151;
+  border-color: #111111;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  -webkit-transition: none;
+  -moz-transition: none;
+  -o-transition: none;
+  transition: none;
+}
+.navbar-inverse .navbar-search .search-query:-moz-placeholder {
+  color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
+  color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
+  color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query:focus,
+.navbar-inverse .navbar-search .search-query.focused {
+  padding: 5px 15px;
+  color: #333333;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #ffffff;
+  border: 0;
+  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  outline: 0;
+}
+.navbar-inverse .btn-navbar {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #0e0e0e;
+  background-image: -moz-linear-gradient(top, #151515, #040404);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
+  background-image: -webkit-linear-gradient(top, #151515, #040404);
+  background-image: -o-linear-gradient(top, #151515, #040404);
+  background-image: linear-gradient(to bottom, #151515, #040404);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
+  border-color: #040404 #040404 #000000;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #040404;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.navbar-inverse .btn-navbar:hover,
+.navbar-inverse .btn-navbar:focus,
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active,
+.navbar-inverse .btn-navbar.disabled,
+.navbar-inverse .btn-navbar[disabled] {
+  color: #ffffff;
+  background-color: #040404;
+  *background-color: #000000;
+}
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active {
+  background-color: #000000 \9;
+}
+/*@import "bootstrap/breadcrumbs.less";*/
+/*@import "bootstrap/pagination.less";*/
+/*@import "bootstrap/pager.less";*/
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+  background-color: #000000;
+}
+.modal-backdrop.fade {
+  opacity: 0;
+}
+.modal-backdrop,
+.modal-backdrop.fade.in {
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.modal {
+  position: fixed;
+  top: 10%;
+  left: 50%;
+  z-index: 1050;
+  width: 560px;
+  margin-left: -280px;
+  background-color: #ffffff;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, 0.3);
+  *border: 1px solid #999;
+  /* IE6-7 */
+
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding-box;
+  background-clip: padding-box;
+  outline: none;
+}
+.modal.fade {
+  -webkit-transition: opacity .3s linear, top .3s ease-out;
+  -moz-transition: opacity .3s linear, top .3s ease-out;
+  -o-transition: opacity .3s linear, top .3s ease-out;
+  transition: opacity .3s linear, top .3s ease-out;
+  top: -25%;
+}
+.modal.fade.in {
+  top: 10%;
+}
+.modal-header {
+  padding: 9px 15px;
+  border-bottom: 1px solid #eee;
+}
+.modal-header .close {
+  margin-top: 2px;
+}
+.modal-header h3 {
+  margin: 0;
+  line-height: 30px;
+}
+.modal-body {
+  position: relative;
+  overflow-y: auto;
+  max-height: 400px;
+  padding: 15px;
+}
+.modal-form {
+  margin-bottom: 0;
+}
+.modal-footer {
+  padding: 14px 15px 15px;
+  margin-bottom: 0;
+  text-align: right;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+  -webkit-box-shadow: inset 0 1px 0 #ffffff;
+  -moz-box-shadow: inset 0 1px 0 #ffffff;
+  box-shadow: inset 0 1px 0 #ffffff;
+  *zoom: 1;
+}
+.modal-footer:before,
+.modal-footer:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.modal-footer:after {
+  clear: both;
+}
+.modal-footer .btn + .btn {
+  margin-left: 5px;
+  margin-bottom: 0;
+}
+.modal-footer .btn-group .btn + .btn {
+  margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+  margin-left: 0;
+}
+/*@import "bootstrap/tooltip.less";*/
+/*@import "bootstrap/popovers.less";*/
+/*@import "bootstrap/thumbnails.less";*/
+/*@import "bootstrap/media.less";*/
+/*@import "bootstrap/labels-badges.less";*/
+/*@import "bootstrap/progress-bars.less";*/
+/*@import "bootstrap/accordion.less";*/
+/*@import "bootstrap/carousel.less";*/
+/*@import "bootstrap/hero-unit.less";*/
+.pull-right {
+  float: right;
+}
+.pull-left {
+  float: left;
+}
+.hide {
+  display: none;
+}
+.show {
+  display: block;
+}
+.invisible {
+  visibility: hidden;
+}
+.affix {
+  position: fixed;
+}
+/* http://meyerweb.com/eric/tools/css/reset/ 
+   v2.0 | 20110126
+   License: none (public domain)
+*/
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font: inherit;
+  vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article,
+aside,

<TRUNCATED>


[15/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/connection.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/connection.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/connection.js
deleted file mode 100644
index 45f69ad..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/connection.js
+++ /dev/null
@@ -1,541 +0,0 @@
-var utils = require('./connection_utils'),
-  inherits = require('util').inherits,
-  net = require('net'),
-  EventEmitter = require('events').EventEmitter,
-  inherits = require('util').inherits,
-  binaryutils = require('../utils'),
-  tls = require('tls');
-
-var Connection = exports.Connection = function(id, socketOptions) {
-  var self = this;
-  // Set up event emitter
-  EventEmitter.call(this);
-  // Store all socket options
-  this.socketOptions = socketOptions ? socketOptions : {host:'localhost', port:27017, domainSocket:false};
-  // Set keep alive default if not overriden
-  if(this.socketOptions.keepAlive == null && (process.platform !== "sunos" || process.platform !== "win32")) this.socketOptions.keepAlive = 100;
-  // Id for the connection
-  this.id = id;
-  // State of the connection
-  this.connected = false;
-  // Set if this is a domain socket
-  this.domainSocket = this.socketOptions.domainSocket;
-
-  // Supported min and max wire protocol
-  this.minWireVersion = 0;
-  this.maxWireVersion = 2;
-
-  //
-  // Connection parsing state
-  //
-  this.maxBsonSize = socketOptions.maxBsonSize ? socketOptions.maxBsonSize : Connection.DEFAULT_MAX_BSON_SIZE;
-  this.maxMessageSizeBytes = socketOptions.maxMessageSizeBytes ? socketOptions.maxMessageSizeBytes : Connection.DEFAULT_MAX_MESSAGE_SIZE;
-  // Contains the current message bytes
-  this.buffer = null;
-  // Contains the current message size
-  this.sizeOfMessage = 0;
-  // Contains the readIndex for the messaage
-  this.bytesRead = 0;
-  // Contains spill over bytes from additional messages
-  this.stubBuffer = 0;
-
-  // Just keeps list of events we allow
-  this.eventHandlers = {error:[], parseError:[], poolReady:[], message:[], close:[], timeout:[], end:[]};
-
-  // Just keeps list of events we allow
-  resetHandlers(this, false);
-  // Bson object
-  this.maxBsonSettings = {
-      disableDriverBSONSizeCheck: this.socketOptions['disableDriverBSONSizeCheck'] || false
-    , maxBsonSize: this.maxBsonSize
-    , maxMessageSizeBytes: this.maxMessageSizeBytes
-  }
-
-  // Allow setting the socketTimeoutMS on all connections
-  // to work around issues such as secondaries blocking due to compaction
-  Object.defineProperty(this, "socketTimeoutMS", {
-      enumerable: true
-    , get: function () { return self.socketOptions.socketTimeoutMS; }
-    , set: function (value) { 
-      // Set the socket timeoutMS value
-      self.socketOptions.socketTimeoutMS = value;
-      // Set the physical connection timeout
-      self.connection.setTimeout(self.socketOptions.socketTimeoutMS);
-    }
-  });  
-}
-
-// Set max bson size
-Connection.DEFAULT_MAX_BSON_SIZE = 1024 * 1024 * 4;
-// Set default to max bson to avoid overflow or bad guesses
-Connection.DEFAULT_MAX_MESSAGE_SIZE = Connection.DEFAULT_MAX_BSON_SIZE;
-
-// Inherit event emitter so we can emit stuff wohoo
-inherits(Connection, EventEmitter);
-
-Connection.prototype.start = function() {
-  var self = this;
-
-  // If we have a normal connection
-  if(this.socketOptions.ssl) {
-    // Create new connection instance
-    if(this.domainSocket) {
-      this.connection = net.createConnection(this.socketOptions.host);
-    } else {
-      this.connection = net.createConnection(this.socketOptions.port, this.socketOptions.host);
-    }
-    if(this.logger != null && this.logger.doDebug){
-      this.logger.debug("opened connection", this.socketOptions);
-    }
-
-    // Set options on the socket
-    this.connection.setTimeout(this.socketOptions.connectTimeoutMS != null ? this.socketOptions.connectTimeoutMS : this.socketOptions.timeout);
-    // Work around for 0.4.X
-    if(process.version.indexOf("v0.4") == -1) this.connection.setNoDelay(this.socketOptions.noDelay);
-    // Set keep alive if defined
-    if(process.version.indexOf("v0.4") == -1) {
-      if(this.socketOptions.keepAlive > 0) {
-        this.connection.setKeepAlive(true, this.socketOptions.keepAlive);
-      } else {
-        this.connection.setKeepAlive(false);
-      }
-    }
-
-    // Check if the driver should validate the certificate
-    var validate_certificates = this.socketOptions.sslValidate == true ? true : false;
-
-    // Create options for the tls connection
-    var tls_options = {
-        socket: this.connection
-      , rejectUnauthorized: false
-    }
-
-    // If we wish to validate the certificate we have provided a ca store
-    if(validate_certificates) {
-      tls_options.ca = this.socketOptions.sslCA;
-    }
-
-    // If we have a certificate to present
-    if(this.socketOptions.sslCert) {      
-      tls_options.cert = this.socketOptions.sslCert;
-      tls_options.key = this.socketOptions.sslKey;
-    }
-
-    // If the driver has been provided a private key password
-    if(this.socketOptions.sslPass) {
-      tls_options.passphrase = this.socketOptions.sslPass;
-    }
-
-    // Contains the cleartext stream
-    var cleartext = null;
-    // Attempt to establish a TLS connection to the server
-    try {
-      cleartext = tls.connect(this.socketOptions.port, this.socketOptions.host, tls_options, function() {      
-        // If we have a ssl certificate validation error return an error
-        if(cleartext.authorizationError && validate_certificates) {          
-          // Emit an error
-          return self.emit("error", cleartext.authorizationError, self, {ssl:true});        
-        }
-        
-        // Connect to the server
-        connectHandler(self)();
-      })      
-    } catch(err) {
-      return self.emit("error", "SSL connection failed", self, {ssl:true});
-    }
-
-    // Save the output stream
-    this.writeSteam = cleartext;
-
-    // Set up data handler for the clear stream
-    cleartext.on("data", createDataHandler(this));
-    // Do any handling of end event of the stream
-    cleartext.on("end", endHandler(this));
-    cleartext.on("error", errorHandler(this));    
-
-    // Handle any errors
-    this.connection.on("error", errorHandler(this));    
-    // Handle timeout
-    this.connection.on("timeout", timeoutHandler(this));
-    // Handle drain event
-    this.connection.on("drain", drainHandler(this));
-    // Handle the close event
-    this.connection.on("close", closeHandler(this));
-  } else {
-    // Create new connection instance
-    if(this.domainSocket) {
-      this.connection = net.createConnection(this.socketOptions.host);
-    } else {
-      this.connection = net.createConnection(this.socketOptions.port, this.socketOptions.host);
-    }
-    if(this.logger != null && this.logger.doDebug){
-      this.logger.debug("opened connection", this.socketOptions);
-    }
-
-    // Set options on the socket
-    this.connection.setTimeout(this.socketOptions.connectTimeoutMS != null ? this.socketOptions.connectTimeoutMS : this.socketOptions.timeout);
-    // Work around for 0.4.X
-    if(process.version.indexOf("v0.4") == -1) this.connection.setNoDelay(this.socketOptions.noDelay);
-    // Set keep alive if defined
-    if(process.version.indexOf("v0.4") == -1) {
-      if(this.socketOptions.keepAlive > 0) {
-        this.connection.setKeepAlive(true, this.socketOptions.keepAlive);
-      } else {
-        this.connection.setKeepAlive(false);
-      }
-    }
-
-    // Set up write stream
-    this.writeSteam = this.connection;
-    // Add handlers
-    this.connection.on("error", errorHandler(this));
-    // Add all handlers to the socket to manage it
-    this.connection.on("connect", connectHandler(this));
-    // this.connection.on("end", endHandler(this));
-    this.connection.on("data", createDataHandler(this));
-    this.connection.on("timeout", timeoutHandler(this));
-    this.connection.on("drain", drainHandler(this));
-    this.connection.on("close", closeHandler(this));
-  }
-}
-
-// Check if the sockets are live
-Connection.prototype.isConnected = function() {
-  return this.connected && !this.connection.destroyed && this.connection.writable && this.connection.readable;
-}
-
-// Validate if the driver supports this server
-Connection.prototype.isCompatible = function() {
-  if(this.serverCapabilities == null) return true;
-  // Is compatible with backward server
-  if(this.serverCapabilities.minWireVersion == 0 
-    && this.serverCapabilities.maxWireVersion ==0) return true;
-
-  // Check if we overlap
-  if(this.serverCapabilities.minWireVersion >= this.minWireVersion
-    && this.serverCapabilities.maxWireVersion <= this.maxWireVersion) return true;
-
-  // Not compatible
-  return false;
-}
-
-// Write the data out to the socket
-Connection.prototype.write = function(command, callback) {
-  try {
-    // If we have a list off commands to be executed on the same socket
-    if(Array.isArray(command)) {
-      for(var i = 0; i < command.length; i++) {
-        try {
-          // Pass in the bson validation settings (validate early)
-          var binaryCommand = command[i].toBinary(this.maxBsonSettings)
-
-          if(this.logger != null && this.logger.doDebug) 
-            this.logger.debug("writing command to mongodb", {binary: binaryCommand, json: command[i]});
-
-          this.writeSteam.write(binaryCommand);
-        } catch(err) {
-          return callback(err, null);
-        }
-      }
-    } else {
-      try {
-        // Pass in the bson validation settings (validate early)
-        var binaryCommand = command.toBinary(this.maxBsonSettings)
-        // Do we have a logger active log the event
-        if(this.logger != null && this.logger.doDebug) 
-          this.logger.debug("writing command to mongodb", {binary: binaryCommand, json: command[i]});
-        // Write the binary command out to socket
-        this.writeSteam.write(binaryCommand);
-      } catch(err) {
-        return callback(err, null)
-      }
-    }
-  } catch (err) {
-    if(typeof callback === 'function') callback(err);
-  }
-}
-
-// Force the closure of the connection
-Connection.prototype.close = function() {
-  // clear out all the listeners
-  resetHandlers(this, true);
-  // Add a dummy error listener to catch any weird last moment errors (and ignore them)
-  this.connection.on("error", function() {})
-  // destroy connection
-  this.connection.destroy();
-  if(this.logger != null && this.logger.doDebug){
-    this.logger.debug("closed connection", this.connection);
-  }
-}
-
-// Reset all handlers
-var resetHandlers = function(self, clearListeners) {
-  self.eventHandlers = {error:[], connect:[], close:[], end:[], timeout:[], parseError:[], message:[]};
-
-  // If we want to clear all the listeners
-  if(clearListeners && self.connection != null) {
-    var keys = Object.keys(self.eventHandlers);
-    // Remove all listeners
-    for(var i = 0; i < keys.length; i++) {
-      self.connection.removeAllListeners(keys[i]);
-    }
-  }
-}
-
-//
-// Handlers
-//
-
-// Connect handler
-var connectHandler = function(self) {
-  return function(data) {
-    // Set connected
-    self.connected = true;
-    // Now that we are connected set the socket timeout
-    self.connection.setTimeout(self.socketOptions.socketTimeoutMS != null ? self.socketOptions.socketTimeoutMS : self.socketOptions.timeout);
-    // Emit the connect event with no error
-    self.emit("connect", null, self);
-  }
-}
-
-var createDataHandler = exports.Connection.createDataHandler = function(self) {
-  // We need to handle the parsing of the data
-  // and emit the messages when there is a complete one
-  return function(data) {
-    // Parse until we are done with the data
-    while(data.length > 0) {
-      // If we still have bytes to read on the current message
-      if(self.bytesRead > 0 && self.sizeOfMessage > 0) {
-        // Calculate the amount of remaining bytes
-        var remainingBytesToRead = self.sizeOfMessage - self.bytesRead;
-        // Check if the current chunk contains the rest of the message
-        if(remainingBytesToRead > data.length) {
-          // Copy the new data into the exiting buffer (should have been allocated when we know the message size)
-          data.copy(self.buffer, self.bytesRead);
-          // Adjust the number of bytes read so it point to the correct index in the buffer
-          self.bytesRead = self.bytesRead + data.length;
-
-          // Reset state of buffer
-          data = new Buffer(0);
-        } else {
-          // Copy the missing part of the data into our current buffer
-          data.copy(self.buffer, self.bytesRead, 0, remainingBytesToRead);
-          // Slice the overflow into a new buffer that we will then re-parse
-          data = data.slice(remainingBytesToRead);
-
-          // Emit current complete message
-          try {
-            var emitBuffer = self.buffer;
-            // Reset state of buffer
-            self.buffer = null;
-            self.sizeOfMessage = 0;
-            self.bytesRead = 0;
-            self.stubBuffer = null;
-            // Emit the buffer
-            self.emit("message", emitBuffer, self);
-          } catch(err) {
-            var errorObject = {err:"socketHandler", trace:err, bin:self.buffer, parseState:{
-              sizeOfMessage:self.sizeOfMessage,
-              bytesRead:self.bytesRead,
-              stubBuffer:self.stubBuffer}};
-            if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject);
-            // We got a parse Error fire it off then keep going
-            self.emit("parseError", errorObject, self);
-          }
-        }
-      } else {
-        // Stub buffer is kept in case we don't get enough bytes to determine the
-        // size of the message (< 4 bytes)
-        if(self.stubBuffer != null && self.stubBuffer.length > 0) {
-
-          // If we have enough bytes to determine the message size let's do it
-          if(self.stubBuffer.length + data.length > 4) {
-            // Prepad the data
-            var newData = new Buffer(self.stubBuffer.length + data.length);
-            self.stubBuffer.copy(newData, 0);
-            data.copy(newData, self.stubBuffer.length);
-            // Reassign for parsing
-            data = newData;
-
-            // Reset state of buffer
-            self.buffer = null;
-            self.sizeOfMessage = 0;
-            self.bytesRead = 0;
-            self.stubBuffer = null;
-
-          } else {
-
-            // Add the the bytes to the stub buffer
-            var newStubBuffer = new Buffer(self.stubBuffer.length + data.length);
-            // Copy existing stub buffer
-            self.stubBuffer.copy(newStubBuffer, 0);
-            // Copy missing part of the data
-            data.copy(newStubBuffer, self.stubBuffer.length);
-            // Exit parsing loop
-            data = new Buffer(0);
-          }
-        } else {
-          if(data.length > 4) {
-            // Retrieve the message size
-            var sizeOfMessage = binaryutils.decodeUInt32(data, 0);
-            // If we have a negative sizeOfMessage emit error and return
-            if(sizeOfMessage < 0 || sizeOfMessage > self.maxBsonSize) {
-              var errorObject = {err:"socketHandler", trace:'', bin:self.buffer, parseState:{
-                sizeOfMessage: sizeOfMessage,
-                bytesRead: self.bytesRead,
-                stubBuffer: self.stubBuffer}};
-              if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject);
-              // We got a parse Error fire it off then keep going
-              self.emit("parseError", errorObject, self);
-              return;
-            }
-
-            // Ensure that the size of message is larger than 0 and less than the max allowed
-            if(sizeOfMessage > 4 && sizeOfMessage < self.maxBsonSize && sizeOfMessage > data.length) {
-              self.buffer = new Buffer(sizeOfMessage);
-              // Copy all the data into the buffer
-              data.copy(self.buffer, 0);
-              // Update bytes read
-              self.bytesRead = data.length;
-              // Update sizeOfMessage
-              self.sizeOfMessage = sizeOfMessage;
-              // Ensure stub buffer is null
-              self.stubBuffer = null;
-              // Exit parsing loop
-              data = new Buffer(0);
-
-            } else if(sizeOfMessage > 4 && sizeOfMessage < self.maxBsonSize && sizeOfMessage == data.length) {
-              try {
-                var emitBuffer = data;
-                // Reset state of buffer
-                self.buffer = null;
-                self.sizeOfMessage = 0;
-                self.bytesRead = 0;
-                self.stubBuffer = null;
-                // Exit parsing loop
-                data = new Buffer(0);
-                // Emit the message
-                self.emit("message", emitBuffer, self);
-              } catch (err) {
-                var errorObject = {err:"socketHandler", trace:err, bin:self.buffer, parseState:{
-                  sizeOfMessage:self.sizeOfMessage,
-                  bytesRead:self.bytesRead,
-                  stubBuffer:self.stubBuffer}};
-                if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject);
-                // We got a parse Error fire it off then keep going
-                self.emit("parseError", errorObject, self);
-              }
-            } else if(sizeOfMessage <= 4 || sizeOfMessage > self.maxBsonSize) {
-              var errorObject = {err:"socketHandler", trace:null, bin:data, parseState:{
-                sizeOfMessage:sizeOfMessage,
-                bytesRead:0,
-                buffer:null,
-                stubBuffer:null}};
-              if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject);
-              // We got a parse Error fire it off then keep going
-              self.emit("parseError", errorObject, self);
-
-              // Clear out the state of the parser
-              self.buffer = null;
-              self.sizeOfMessage = 0;
-              self.bytesRead = 0;
-              self.stubBuffer = null;
-              // Exit parsing loop
-              data = new Buffer(0);
-
-            } else {
-              try {
-                var emitBuffer = data.slice(0, sizeOfMessage);
-                // Reset state of buffer
-                self.buffer = null;
-                self.sizeOfMessage = 0;
-                self.bytesRead = 0;
-                self.stubBuffer = null;
-                // Copy rest of message
-                data = data.slice(sizeOfMessage);
-                // Emit the message
-                self.emit("message", emitBuffer, self);
-              } catch (err) {
-                var errorObject = {err:"socketHandler", trace:err, bin:self.buffer, parseState:{
-                  sizeOfMessage:sizeOfMessage,
-                  bytesRead:self.bytesRead,
-                  stubBuffer:self.stubBuffer}};
-                if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject);
-                // We got a parse Error fire it off then keep going
-                self.emit("parseError", errorObject, self);
-              }
-
-            }
-          } else {
-            // Create a buffer that contains the space for the non-complete message
-            self.stubBuffer = new Buffer(data.length)
-            // Copy the data to the stub buffer
-            data.copy(self.stubBuffer, 0);
-            // Exit parsing loop
-            data = new Buffer(0);
-          }
-        }
-      }
-    }
-  }
-}
-
-var endHandler = function(self) {
-  return function() {
-    // Set connected to false
-    self.connected = false;
-    // Emit end event
-    self.emit("end", {err: 'connection received Fin packet from [' + self.socketOptions.host + ':' + self.socketOptions.port + ']'}, self);
-  }
-}
-
-var timeoutHandler = function(self) {
-  return function() {
-    // Set connected to false
-    self.connected = false;
-    // Emit timeout event
-    self.emit("timeout", {err: 'connection to [' + self.socketOptions.host + ':' + self.socketOptions.port + '] timed out'}, self);
-  }
-}
-
-var drainHandler = function(self) {
-  return function() {
-  }
-}
-
-var errorHandler = function(self) {
-  return function(err) {
-    self.connection.destroy();
-    // Set connected to false
-    self.connected = false;
-    // Emit error
-    self.emit("error", {err: 'failed to connect to [' + self.socketOptions.host + ':' + self.socketOptions.port + ']'}, self);
-  }
-}
-
-var closeHandler = function(self) {
-  return function(hadError) {
-    // If we have an error during the connection phase
-    if(hadError && !self.connected) {
-      // Set disconnected
-      self.connected = false;
-      // Emit error
-      self.emit("error", {err: 'failed to connect to [' + self.socketOptions.host + ':' + self.socketOptions.port + ']'}, self);
-    } else {
-      // Set disconnected
-      self.connected = false;
-      // Emit close
-      self.emit("close", {err: 'connection closed to [' + self.socketOptions.host + ':' + self.socketOptions.port + ']'}, self);
-    }
-  }
-}
-
-// Some basic defaults
-Connection.DEFAULT_PORT = 27017;
-
-
-
-
-
-
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/connection_pool.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/connection_pool.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/connection_pool.js
deleted file mode 100644
index 3d9e7c5..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/connection_pool.js
+++ /dev/null
@@ -1,295 +0,0 @@
-var utils = require('./connection_utils'),
-  inherits = require('util').inherits,
-  net = require('net'),
-  timers = require('timers'),
-  EventEmitter = require('events').EventEmitter,
-  inherits = require('util').inherits,
-  MongoReply = require("../responses/mongo_reply").MongoReply,
-  Connection = require("./connection").Connection;
-
-// Set processor, setImmediate if 0.10 otherwise nextTick
-var processor = require('../utils').processor();
-
-var ConnectionPool = exports.ConnectionPool = function(host, port, poolSize, bson, socketOptions) {
-  if(typeof host !== 'string') {
-    throw new Error("host must be specified [" + host + "]");
-  }
-
-  // Set up event emitter
-  EventEmitter.call(this);
-
-  // Keep all options for the socket in a specific collection allowing the user to specify the
-  // Wished upon socket connection parameters
-  this.socketOptions = typeof socketOptions === 'object' ? socketOptions : {};
-  this.socketOptions.host = host;
-  this.socketOptions.port = port;
-  this.socketOptions.domainSocket = false;
-  this.bson = bson;
-  // PoolSize is always + 1 for special reserved "measurment" socket (like ping, stats etc)
-  this.poolSize = poolSize;
-  this.minPoolSize = Math.floor(this.poolSize / 2) + 1;
-
-  // Check if the host is a socket
-  if(host.match(/^\//)) {
-    this.socketOptions.domainSocket = true;
-  } else if(typeof port === 'string') {
-    try { 
-      port = parseInt(port, 10); 
-    } catch(err) { 
-      new Error("port must be specified or valid integer["  + port + "]"); 
-    }
-  } else if(typeof port !== 'number') {
-    throw new Error("port must be specified ["  + port + "]");
-  }
-
-  // Set default settings for the socket options
-  utils.setIntegerParameter(this.socketOptions, 'timeout', 0);
-  // Delay before writing out the data to the server
-  utils.setBooleanParameter(this.socketOptions, 'noDelay', true);
-  // Delay before writing out the data to the server
-  utils.setIntegerParameter(this.socketOptions, 'keepAlive', 0);
-  // Set the encoding of the data read, default is binary == null
-  utils.setStringParameter(this.socketOptions, 'encoding', null);
-  // Allows you to set a throttling bufferSize if you need to stop overflows
-  utils.setIntegerParameter(this.socketOptions, 'bufferSize', 0);
-
-  // Internal structures
-  this.openConnections = [];
-  // Assign connection id's
-  this.connectionId = 0;
-
-  // Current index for selection of pool connection
-  this.currentConnectionIndex = 0;
-  // The pool state
-  this._poolState = 'disconnected';
-  // timeout control
-  this._timeout = false;
-  // Time to wait between connections for the pool
-  this._timeToWait = 10;
-}
-
-inherits(ConnectionPool, EventEmitter);
-
-ConnectionPool.prototype.setMaxBsonSize = function(maxBsonSize) {
-  if(maxBsonSize == null){
-    maxBsonSize = Connection.DEFAULT_MAX_BSON_SIZE;
-  }
-
-  for(var i = 0; i < this.openConnections.length; i++) {
-    this.openConnections[i].maxBsonSize = maxBsonSize;
-    this.openConnections[i].maxBsonSettings.maxBsonSize = maxBsonSize;
-  }
-}
-
-ConnectionPool.prototype.setMaxMessageSizeBytes = function(maxMessageSizeBytes) {
-  if(maxMessageSizeBytes == null){
-    maxMessageSizeBytes = Connection.DEFAULT_MAX_MESSAGE_SIZE;
-  }
-
-  for(var i = 0; i < this.openConnections.length; i++) {
-    this.openConnections[i].maxMessageSizeBytes = maxMessageSizeBytes;
-    this.openConnections[i].maxBsonSettings.maxMessageSizeBytes = maxMessageSizeBytes;
-  }
-}
-
-// Start a function
-var _connect = function(_self) {
-  // return new function() {
-    // Create a new connection instance
-    var connection = new Connection(_self.connectionId++, _self.socketOptions);
-    // Set logger on pool
-    connection.logger = _self.logger;
-    // Connect handler
-    connection.on("connect", function(err, connection) {
-      // Add connection to list of open connections
-      _self.openConnections.push(connection);
-      // If the number of open connections is equal to the poolSize signal ready pool
-      if(_self.openConnections.length === _self.poolSize && _self._poolState !== 'disconnected') {
-        // Set connected
-        _self._poolState = 'connected';
-        // Emit pool ready
-        _self.emit("poolReady");
-      } else if(_self.openConnections.length < _self.poolSize) {
-        // Wait a little bit of time to let the close event happen if the server closes the connection
-        // so we don't leave hanging connections around
-        if(typeof _self._timeToWait == 'number') {
-          setTimeout(function() {
-            // If we are still connecting (no close events fired in between start another connection)
-            if(_self._poolState == 'connecting') {
-              _connect(_self);
-            }
-          }, _self._timeToWait);
-        } else {
-          processor(function() {
-            // If we are still connecting (no close events fired in between start another connection)
-            if(_self._poolState == 'connecting') {
-              _connect(_self);
-            }
-          });
-        }
-      }
-    });
-
-    var numberOfErrors = 0
-
-    // Error handler
-    connection.on("error", function(err, connection, error_options) {
-      numberOfErrors++;
-      // If we are already disconnected ignore the event
-      if(_self._poolState != 'disconnected' && _self.listeners("error").length > 0) {
-        _self.emit("error", err, connection, error_options);
-      }
-
-      // Close the connection
-      connection.close();
-      // Set pool as disconnected
-      _self._poolState = 'disconnected';
-      // Stop the pool
-      _self.stop();
-    });
-
-    // Close handler
-    connection.on("close", function() {
-      // If we are already disconnected ignore the event
-      if(_self._poolState !== 'disconnected' && _self.listeners("close").length > 0) {
-        _self.emit("close");
-      }
-
-      // Set disconnected
-      _self._poolState = 'disconnected';
-      // Stop
-      _self.stop();
-    });
-
-    // Timeout handler
-    connection.on("timeout", function(err, connection) {
-      // If we are already disconnected ignore the event
-      if(_self._poolState !== 'disconnected' && _self.listeners("timeout").length > 0) {
-        _self.emit("timeout", err);
-      }
-
-      // Close the connection
-      connection.close();
-      // Set disconnected
-      _self._poolState = 'disconnected';
-      _self.stop();
-    });
-
-    // Parse error, needs a complete shutdown of the pool
-    connection.on("parseError", function() {
-      // If we are already disconnected ignore the event
-      if(_self._poolState !== 'disconnected' && _self.listeners("parseError").length > 0) {
-        _self.emit("parseError", new Error("parseError occured"));
-      }
-
-      // Set disconnected
-      _self._poolState = 'disconnected';
-      _self.stop();
-    });
-
-    connection.on("message", function(message) {
-      _self.emit("message", message);
-    });
-
-    // Start connection in the next tick
-    connection.start();
-  // }();
-}
-
-
-// Start method, will throw error if no listeners are available
-// Pass in an instance of the listener that contains the api for
-// finding callbacks for a given message etc.
-ConnectionPool.prototype.start = function() {
-  var markerDate = new Date().getTime();
-  var self = this;
-
-  if(this.listeners("poolReady").length == 0) {
-    throw "pool must have at least one listener ready that responds to the [poolReady] event";
-  }
-
-  // Set pool state to connecting
-  this._poolState = 'connecting';
-  this._timeout = false;
-
-  _connect(self);
-}
-
-// Restart a connection pool (on a close the pool might be in a wrong state)
-ConnectionPool.prototype.restart = function() {
-  // Close all connections
-  this.stop(false);
-  // Now restart the pool
-  this.start();
-}
-
-// Stop the connections in the pool
-ConnectionPool.prototype.stop = function(removeListeners) {
-  removeListeners = removeListeners == null ? true : removeListeners;
-  // Set disconnected
-  this._poolState = 'disconnected';
-
-  // Clear all listeners if specified
-  if(removeListeners) {
-    this.removeAllEventListeners();
-  }
-
-  // Close all connections
-  for(var i = 0; i < this.openConnections.length; i++) {
-    this.openConnections[i].close();
-  }
-
-  // Clean up
-  this.openConnections = [];
-}
-
-// Check the status of the connection
-ConnectionPool.prototype.isConnected = function() {
-  // return this._poolState === 'connected';
-  return this.openConnections.length > 0 && this.openConnections[0].isConnected();
-}
-
-// Checkout a connection from the pool for usage, or grab a specific pool instance
-ConnectionPool.prototype.checkoutConnection = function(id) {
-  var index = (this.currentConnectionIndex++ % (this.openConnections.length));
-  var connection = this.openConnections[index];
-  return connection;
-}
-
-ConnectionPool.prototype.getAllConnections = function() {
-  return this.openConnections;
-}
-
-// Remove all non-needed event listeners
-ConnectionPool.prototype.removeAllEventListeners = function() {
-  this.removeAllListeners("close");
-  this.removeAllListeners("error");
-  this.removeAllListeners("timeout");
-  this.removeAllListeners("connect");
-  this.removeAllListeners("end");
-  this.removeAllListeners("parseError");
-  this.removeAllListeners("message");
-  this.removeAllListeners("poolReady");
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/connection_utils.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/connection_utils.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/connection_utils.js
deleted file mode 100644
index 5910924..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/connection_utils.js
+++ /dev/null
@@ -1,23 +0,0 @@
-exports.setIntegerParameter = function(object, field, defaultValue) {
-  if(object[field] == null) {
-    object[field] = defaultValue;
-  } else if(typeof object[field] !== "number" && object[field] !== parseInt(object[field], 10)) {
-    throw "object field [" + field + "] must be a numeric integer value, attempted to set to [" + object[field] + "] type of [" + typeof object[field] + "]";
-  }
-}
-
-exports.setBooleanParameter = function(object, field, defaultValue) {
-  if(object[field] == null) {
-    object[field] = defaultValue;
-  } else if(typeof object[field] !== "boolean") {
-    throw "object field [" + field + "] must be a boolean value, attempted to set to [" + object[field] + "] type of [" + typeof object[field] + "]";
-  }
-}
-
-exports.setStringParameter = function(object, field, defaultValue) {
-  if(object[field] == null) {
-    object[field] = defaultValue;
-  } else if(typeof object[field] !== "string") {
-    throw "object field [" + field + "] must be a string value, attempted to set to [" + object[field] + "] type of [" + typeof object[field] + "]";
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/mongos.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/mongos.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/mongos.js
deleted file mode 100644
index 01a9c32..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/mongos.js
+++ /dev/null
@@ -1,537 +0,0 @@
-var ReadPreference = require('./read_preference').ReadPreference
-  , Base = require('./base').Base
-  , Server = require('./server').Server
-  , format = require('util').format
-  , timers = require('timers')
-  , utils = require('../utils')
-  , inherits = require('util').inherits;
-
-// Set processor, setImmediate if 0.10 otherwise nextTick
-var processor = require('../utils').processor();
-
-/**
- * Mongos constructor provides a connection to a mongos proxy including failover to additional servers
- *
- * Options
- *  - **socketOptions** {Object, default:null}, an object containing socket options to use (noDelay:(boolean), keepAlive:(number), connectTimeoutMS:(number), socketTimeoutMS:(number))
- *  - **ha** {Boolean, default:true}, turn on high availability, attempts to reconnect to down proxies
- *  - **haInterval** {Number, default:2000}, time between each replicaset status check.
- *
- * @class Represents a Mongos connection with failover to backup proxies
- * @param {Array} list of mongos server objects
- * @param {Object} [options] additional options for the mongos connection
- */
-var Mongos = function Mongos(servers, options) {
-  // Set up basic
-  if(!(this instanceof Mongos))
-    return new Mongos(servers, options);
-
-  // Set up event emitter
-  Base.call(this);
-
-  // Throw error on wrong setup
-  if(servers == null || !Array.isArray(servers) || servers.length == 0)
-    throw new Error("At least one mongos proxy must be in the array");
-
-  // Ensure we have at least an empty options object
-  this.options = options == null ? {} : options;
-  // Set default connection pool options
-  this.socketOptions = this.options.socketOptions != null ? this.options.socketOptions : {};
-  // Enabled ha
-  this.haEnabled = this.options['ha'] == null ? true : this.options['ha'];
-  this._haInProgress = false;
-  // How often are we checking for new servers in the replicaset
-  this.mongosStatusCheckInterval = this.options['haInterval'] == null ? 1000 : this.options['haInterval'];
-  // Save all the server connections
-  this.servers = servers;
-  // Servers we need to attempt reconnect with
-  this.downServers = {};
-  // Servers that are up
-  this.upServers = {};
-  // Up servers by ping time
-  this.upServersByUpTime = {};
-  // Emit open setup
-  this.emitOpen = this.options.emitOpen || true;
-  // Just contains the current lowest ping time and server
-  this.lowestPingTimeServer = null;
-  this.lowestPingTime = 0;
-  // Connection timeout
-  this._connectTimeoutMS = this.socketOptions.connectTimeoutMS
-    ? this.socketOptions.connectTimeoutMS
-    : 1000;
-
-  // Add options to servers
-  for(var i = 0; i < this.servers.length; i++) {
-    var server = this.servers[i];
-    server._callBackStore = this._callBackStore;
-    server.auto_reconnect = false;
-    // Default empty socket options object
-    var socketOptions = {host: server.host, port: server.port};
-    // If a socket option object exists clone it
-    if(this.socketOptions != null) {
-      var keys = Object.keys(this.socketOptions);
-      for(var k = 0; k < keys.length;k++) socketOptions[keys[i]] = this.socketOptions[keys[i]];
-    }
-
-    // Set socket options
-    server.socketOptions = socketOptions;
-  }
-
-  // Allow setting the socketTimeoutMS on all connections
-  // to work around issues such as secondaries blocking due to compaction
-  utils.setSocketTimeoutProperty(this, this.socketOptions);  
-}
-
-/**
- * @ignore
- */
-inherits(Mongos, Base);
-
-/**
- * @ignore
- */
-Mongos.prototype.isMongos = function() {
-  return true;
-}
-
-/**
- * @ignore
- */
-Mongos.prototype.connect = function(db, options, callback) {
-  if('function' === typeof options) callback = options, options = {};
-  if(options == null) options = {};
-  if(!('function' === typeof callback)) callback = null;
-  var self = this;
-
-  // Keep reference to parent
-  this.db = db;
-  // Set server state to connecting
-  this._serverState = 'connecting';
-  // Number of total servers that need to initialized (known servers)
-  this._numberOfServersLeftToInitialize = this.servers.length;  
-  // Connect handler
-  var connectHandler = function(_server) {
-    return function(err, result) {
-      self._numberOfServersLeftToInitialize = self._numberOfServersLeftToInitialize - 1;
-
-      // Add the server to the list of servers that are up
-      if(!err) {
-        self.upServers[format("%s:%s", _server.host, _server.port)] = _server;
-      }
-
-      // We are done connecting
-      if(self._numberOfServersLeftToInitialize == 0) {
-        // Start ha function if it exists
-        if(self.haEnabled) {
-          // Setup the ha process
-          if(self._replicasetTimeoutId != null) clearInterval(self._replicasetTimeoutId);
-          self._replicasetTimeoutId = setInterval(self.mongosCheckFunction, self.mongosStatusCheckInterval);
-        }
-
-        // Set the mongos to connected
-        self._serverState = "connected";
-
-        // Emit the open event
-        if(self.emitOpen)
-          self._emitAcrossAllDbInstances(self, null, "open", null, null, null);        
-
-        self._emitAcrossAllDbInstances(self, null, "fullsetup", null, null, null);      
-        // Callback
-        callback(null, self.db);
-      }
-    }
-  };
-
-  // Error handler
-  var errorOrCloseHandler = function(_server) {
-    return function(err, result) {
-      // Emit left event, signaling mongos left the ha
-      self.emit('left', 'mongos', _server);
-      // Execute all the callbacks with errors
-      self.__executeAllCallbacksWithError(err);
-      // Check if we have the server
-      var found = false;
-      
-      // Get the server name
-      var server_name = format("%s:%s", _server.host, _server.port);
-      // Add the downed server
-      self.downServers[server_name] = _server;
-      // Remove the current server from the list
-      delete self.upServers[server_name]; 
-
-      // Emit close across all the attached db instances
-      if(Object.keys(self.upServers).length == 0) {
-        self._emitAcrossAllDbInstances(self, null, "close", new Error("mongos disconnected, no valid proxies contactable over tcp"), null, null);
-      }
-    }
-  }
-
-  // Mongo function
-  this.mongosCheckFunction = function() {
-    // Set as not waiting for check event 
-    self._haInProgress = true;
-    
-    // Servers down
-    var numberOfServersLeft = Object.keys(self.downServers).length;
-    
-    // Check downed servers
-    if(numberOfServersLeft > 0) {
-      for(var name in self.downServers) {
-        // Pop a downed server      
-        var downServer = self.downServers[name];
-        // Set up the connection options for a Mongos
-        var options = {
-          auto_reconnect: false,
-          returnIsMasterResults: true,
-          slaveOk: true,
-          poolSize: downServer.poolSize,
-          socketOptions: { 
-            connectTimeoutMS: self._connectTimeoutMS,
-            socketTimeoutMS: self._socketTimeoutMS
-          }          
-        }
-
-        // Create a new server object
-        var newServer = new Server(downServer.host, downServer.port, options);
-        // Setup the connection function
-        var connectFunction = function(_db, _server, _options, _callback)  {
-          return function() {
-            // Attempt to connect
-            _server.connect(_db, _options, function(err, result) {
-              numberOfServersLeft = numberOfServersLeft - 1;
-
-              if(err) {
-                return _callback(err, _server);
-              } else {                
-                // Set the new server settings
-                _server._callBackStore = self._callBackStore;
-
-                // Add server event handlers
-                _server.on("close", errorOrCloseHandler(_server));
-                _server.on("timeout", errorOrCloseHandler(_server));
-                _server.on("error", errorOrCloseHandler(_server));
-                
-                // Get a read connection
-                var _connection = _server.checkoutReader();
-                // Get the start time
-                var startTime = new Date().getTime();
-                
-                // Execute ping command to mark each server with the expected times
-                self.db.command({ping:1}
-                  , {failFast:true, connection:_connection}, function(err, result) {
-                  // Get the start time
-                  var endTime = new Date().getTime();
-                  // Mark the server with the ping time
-                  _server.runtimeStats['pingMs'] = endTime - startTime;
-                  // Execute any waiting reads
-                  self._commandsStore.execute_writes();   
-                  self._commandsStore.execute_queries();   
-                  // Callback
-                  return _callback(null, _server);
-                });
-              }
-            });
-          }
-        } 
-
-        // Attempt to connect to the database
-        connectFunction(self.db, newServer, options, function(err, _server) {
-          // If we have an error
-          if(err) {
-            self.downServers[format("%s:%s", _server.host, _server.port)] = _server;
-          }
-
-          // Connection function
-          var connectionFunction = function(_auth, _connection, _callback) {
-            var pending = _auth.length();
-
-            for(var j = 0; j < pending; j++) {
-              // Get the auth object
-              var _auth = _auth.get(j);
-              // Unpack the parameter
-              var username = _auth.username;
-              var password = _auth.password;
-              var options = { 
-                  authMechanism: _auth.authMechanism
-                , authSource: _auth.authdb
-                , connection: _connection 
-              };
-
-              // If we have changed the service name
-              if(_auth.gssapiServiceName) 
-                options.gssapiServiceName = _auth.gssapiServiceName;
-
-              // Hold any error
-              var _error = null;
-              // Authenticate against the credentials
-              self.db.authenticate(username, password, options, function(err, result) {
-                _error = err != null ? err : _error;
-                // Adjust the pending authentication
-                pending = pending - 1;
-                // Finished up
-                if(pending == 0) _callback(_error ? _error : null, _error ? false : true);
-              });
-            }
-          }
-
-          // Run auths against the connections
-          if(self.auth.length() > 0) {
-            var connections = _server.allRawConnections();
-            var pendingAuthConn = connections.length;
-
-            // No connections we are done
-            if(connections.length == 0) {
-              // Set ha done
-              if(numberOfServersLeft == 0) {
-                self._haInProgress = false;
-              }              
-            }
-
-            // Final error object
-            var finalError = null;
-            // Go over all the connections
-            for(var j = 0; j < connections.length; j++) {
-              
-              // Execute against all the connections
-              connectionFunction(self.auth, connections[j], function(err, result) {
-                // Pending authentication
-                pendingAuthConn = pendingAuthConn - 1 ;
-
-                // Save error if any
-                finalError = err ? err : finalError;
-
-                // If we are done let's finish up
-                if(pendingAuthConn == 0) {
-                  // Set ha done
-                  if(numberOfServersLeft == 0) {
-                    self._haInProgress = false;
-                  }
-
-                  if(!err) {
-                    add_server(self, _server);
-                  }
-
-                  // Execute any waiting reads
-                  self._commandsStore.execute_writes();   
-                  self._commandsStore.execute_queries();                  
-                }
-              });
-            }
-          } else {
-            if(!err) {
-              add_server(self, _server);
-            }
-
-            // Set ha done
-            if(numberOfServersLeft == 0) {
-              self._haInProgress = false;
-              // Execute any waiting reads
-              self._commandsStore.execute_writes();   
-              self._commandsStore.execute_queries();   
-            }
-          }
-        })();
-      }
-    } else {
-      self._haInProgress = false;
-    }
-  }
-
-  // Connect all the server instances
-  for(var i = 0; i < this.servers.length; i++) {
-    // Get the connection
-    var server = this.servers[i];
-    server.mongosInstance = this;
-    // Add server event handlers
-    server.on("close", errorOrCloseHandler(server));
-    server.on("timeout", errorOrCloseHandler(server));
-    server.on("error", errorOrCloseHandler(server));
-    
-    // Configuration
-    var options = {
-      slaveOk: true,
-      poolSize: server.poolSize,
-      socketOptions: { connectTimeoutMS: self._connectTimeoutMS },
-      returnIsMasterResults: true
-    }        
-
-    // Connect the instance
-    server.connect(self.db, options, connectHandler(server));
-  }
-}
-
-/**
- * @ignore
- * Add a server to the list of up servers and sort them by ping time
- */
-var add_server = function(self, _server) {
-  // Emit a new server joined
-  self.emit('joined', "mongos", null, _server);
-  // Get the server url
-  var server_key = format("%s:%s", _server.host, _server.port);
-  // Push to list of valid server
-  self.upServers[server_key] = _server;
-  // Remove the server from the list of downed servers
-  delete self.downServers[server_key];              
-
-  // Sort the keys by ping time
-  var keys = Object.keys(self.upServers);
-  var _upServersSorted = {};
-  var _upServers = []
-  
-  // Get all the servers
-  for(var name in self.upServers) {
-    _upServers.push(self.upServers[name]);
-  }
-
-  // Sort all the server
-  _upServers.sort(function(a, b) {
-    return a.runtimeStats['pingMs'] > b.runtimeStats['pingMs'];
-  });
-
-  // Rebuild the upServer
-  for(var i = 0; i < _upServers.length; i++) {
-    _upServersSorted[format("%s:%s", _upServers[i].host, _upServers[i].port)] = _upServers[i];
-  }
-
-  // Set the up servers
-  self.upServers = _upServersSorted;
-}
-
-/**
- * @ignore
- * Just return the currently picked active connection
- */
-Mongos.prototype.allServerInstances = function() {
-  return this.servers;
-}
-
-/**
- * Always ourselves
- * @ignore
- */
-Mongos.prototype.setReadPreference = function() {}
-
-/**
- * @ignore
- */
-Mongos.prototype.allRawConnections = function() {
-  // Neeed to build a complete list of all raw connections, start with master server
-  var allConnections = [];
-  // Get all connected connections
-  for(var name in this.upServers) {
-    allConnections = allConnections.concat(this.upServers[name].allRawConnections());
-  }
-  // Return all the conections
-  return allConnections;
-}
-
-/**
- * @ignore
- */
-Mongos.prototype.isConnected = function() {
-  return Object.keys(this.upServers).length > 0;
-}
-
-/**
- * @ignore
- */
-Mongos.prototype.isAutoReconnect = function() {
-  return true;
-}
-
-/**
- * @ignore
- */
-Mongos.prototype.canWrite = Mongos.prototype.isConnected;
-
-/**
- * @ignore
- */
-Mongos.prototype.canRead = Mongos.prototype.isConnected;
-
-/**
- * @ignore
- */
-Mongos.prototype.isDestroyed = function() {
-  return this._serverState == 'destroyed';
-}
-
-/**
- * @ignore
- */
-Mongos.prototype.checkoutWriter = function() {
-  // Checkout a writer
-  var keys = Object.keys(this.upServers);
-  // console.dir("============================ checkoutWriter :: " + keys.length)
-  if(keys.length == 0) return null;
-  // console.log("=============== checkoutWriter :: " + this.upServers[keys[0]].checkoutWriter().socketOptions.port)
-  return this.upServers[keys[0]].checkoutWriter();
-}
-
-/**
- * @ignore
- */
-Mongos.prototype.checkoutReader = function(read) {
-  // console.log("=============== checkoutReader :: read :: " + read);
-  // If read is set to null default to primary
-  read = read || 'primary'
-  // If we have a read preference object unpack it
-  if(read != null && typeof read == 'object' && read['_type'] == 'ReadPreference') {
-    // Validate if the object is using a valid mode
-    if(!read.isValid()) throw new Error("Illegal readPreference mode specified, " + read.mode);
-  } else if(!ReadPreference.isValid(read)) {
-    throw new Error("Illegal readPreference mode specified, " + read);
-  }
-
-  // Checkout a writer
-  var keys = Object.keys(this.upServers);
-  if(keys.length == 0) return null;
-  // console.log("=============== checkoutReader :: " + this.upServers[keys[0]].checkoutWriter().socketOptions.port)
-  // console.dir(this._commandsStore.commands)
-  return this.upServers[keys[0]].checkoutWriter();
-}
-
-/**
- * @ignore
- */
-Mongos.prototype.close = function(callback) {
-  var self = this;
-  // Set server status as disconnected
-  this._serverState = 'destroyed';
-  // Number of connections to close
-  var numberOfConnectionsToClose = self.servers.length;
-  // If we have a ha process running kill it
-  if(self._replicasetTimeoutId != null) clearInterval(self._replicasetTimeoutId);
-  self._replicasetTimeoutId = null;
-  
-  // Emit close event
-  processor(function() {
-    self._emitAcrossAllDbInstances(self, null, "close", null, null, true)    
-  });
-
-  // Flush out any remaining call handlers
-  self._flushAllCallHandlers(utils.toError("Connection Closed By Application"));
-
-  // Close all the up servers
-  for(var name in this.upServers) {
-    this.upServers[name].close(function(err, result) {
-      numberOfConnectionsToClose = numberOfConnectionsToClose - 1;
-
-      // Callback if we have one defined
-      if(numberOfConnectionsToClose == 0 && typeof callback == 'function') {
-        callback(null);
-      }
-    });
-  }
-}
-
-/**
- * @ignore
- * Return the used state
- */
-Mongos.prototype._isUsed = function() {
-  return this._used;
-}
-
-exports.Mongos = Mongos;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/read_preference.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/read_preference.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/read_preference.js
deleted file mode 100644
index 6845171..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/read_preference.js
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * A class representation of the Read Preference.
- *
- * Read Preferences
- *  - **ReadPreference.PRIMARY**, Read from primary only. All operations produce an error (throw an exception where applicable) if primary is unavailable. Cannot be combined with tags (This is the default.).
- *  - **ReadPreference.PRIMARY_PREFERRED**, Read from primary if available, otherwise a secondary.
- *  - **ReadPreference.SECONDARY**, Read from secondary if available, otherwise error.
- *  - **ReadPreference.SECONDARY_PREFERRED**, Read from a secondary if available, otherwise read from the primary.
- *  - **ReadPreference.NEAREST**, All modes read from among the nearest candidates, but unlike other modes, NEAREST will include both the primary and all secondaries in the random selection.
- *
- * @class Represents a Read Preference.
- * @param {String} the read preference type
- * @param {Object} tags
- * @return {ReadPreference}
- */
-var ReadPreference = function(mode, tags) {
-  if(!(this instanceof ReadPreference))
-    return new ReadPreference(mode, tags);
-  this._type = 'ReadPreference';
-  this.mode = mode;
-  this.tags = tags;
-}
-
-/**
- * @ignore
- */
-ReadPreference.isValid = function(_mode) {
-  return (_mode == ReadPreference.PRIMARY || _mode == ReadPreference.PRIMARY_PREFERRED
-    || _mode == ReadPreference.SECONDARY || _mode == ReadPreference.SECONDARY_PREFERRED
-    || _mode == ReadPreference.NEAREST
-    || _mode == true || _mode == false);
-}
-
-/**
- * @ignore
- */
-ReadPreference.prototype.isValid = function(mode) {
-  var _mode = typeof mode == 'string' ? mode : this.mode;
-  return ReadPreference.isValid(_mode);
-}
-
-/**
- * @ignore
- */
-ReadPreference.prototype.toObject = function() {
-  var object = {mode:this.mode};
-
-  if(this.tags != null) {
-    object['tags'] = this.tags;
-  }
-
-  return object;
-}
-
-/**
- * @ignore
- */
-ReadPreference.PRIMARY = 'primary';
-ReadPreference.PRIMARY_PREFERRED = 'primaryPreferred';
-ReadPreference.SECONDARY = 'secondary';
-ReadPreference.SECONDARY_PREFERRED = 'secondaryPreferred';
-ReadPreference.NEAREST = 'nearest'
-
-/**
- * @ignore
- */
-exports.ReadPreference  = ReadPreference;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js
deleted file mode 100644
index e3e8f32..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js
+++ /dev/null
@@ -1,414 +0,0 @@
-var DbCommand = require('../../commands/db_command').DbCommand
-  , format = require('util').format;
-
-var HighAvailabilityProcess = function(replset, options) {  
-  this.replset = replset;
-  this.options = options;
-  this.server = null;
-  this.state = HighAvailabilityProcess.INIT;
-  this.selectedIndex = 0;
-}
-
-HighAvailabilityProcess.INIT = 'init';
-HighAvailabilityProcess.RUNNING = 'running';
-HighAvailabilityProcess.STOPPED = 'stopped';
-
-HighAvailabilityProcess.prototype.start = function() {  
-  var self = this;
-  if(this.replset._state 
-    && Object.keys(this.replset._state.addresses).length == 0) {
-    if(this.server) this.server.close();
-    this.state = HighAvailabilityProcess.STOPPED;
-    return;      
-  }
-
-  if(this.server) this.server.close();
-  // Start the running
-  this._haProcessInProcess = false;
-  this.state = HighAvailabilityProcess.RUNNING;
-  
-  // Get all possible reader servers
-  var candidate_servers = this.replset._state.getAllReadServers();
-  if(candidate_servers.length == 0) {
-    return;
-  }
-
-  // Select a candidate server for the connection
-  var server = candidate_servers[this.selectedIndex % candidate_servers.length];
-  this.selectedIndex = this.selectedIndex + 1;
-  
-  // Unpack connection options
-  var connectTimeoutMS = self.options.connectTimeoutMS || 10000;
-  var socketTimeoutMS = self.options.socketTimeoutMS || 30000;
-
-  // Just ensure we don't have a full cycle dependency
-  var Db = require('../../db').Db
-  var Server = require('../server').Server;
-
-  // Set up a new server instance
-  var newServer = new Server(server.host, server.port, {
-      auto_reconnect: false
-    , returnIsMasterResults: true
-    , poolSize: 1
-    , socketOptions: { 
-        connectTimeoutMS: connectTimeoutMS,
-        socketTimeoutMS: socketTimeoutMS,
-        keepAlive: 100
-      }
-    , ssl: this.options.ssl
-    , sslValidate: this.options.sslValidate
-    , sslCA: this.options.sslCA
-    , sslCert: this.options.sslCert
-    , sslKey: this.options.sslKey
-    , sslPass: this.options.sslPass
-  });
-
-  // Create new dummy db for app
-  self.db = new Db('local', newServer, {w:1});
-
-  // Set up the event listeners
-  newServer.once("error", _handle(this, newServer));
-  newServer.once("close", _handle(this, newServer));
-  newServer.once("timeout", _handle(this, newServer));
-  newServer.name = format("%s:%s", server.host, server.port);
-
-  // Let's attempt a connection over here
-  newServer.connect(self.db, function(err, result, _server) {
-    if(self.state == HighAvailabilityProcess.STOPPED) {
-      _server.close();
-    }
-
-    if(err) {
-      // Close the server
-      _server.close();
-      // Check if we can even do HA (is there anything running)
-      if(Object.keys(self.replset._state.addresses).length == 0) {
-        return;
-      }
-      
-      // Let's boot the ha timeout settings
-      setTimeout(function() {
-        self.start();
-      }, self.options.haInterval);
-    } else {
-      self.server = _server;
-      // Let's boot the ha timeout settings
-      setTimeout(_timeoutHandle(self), self.options.haInterval);
-    }
-  });
-}
-
-HighAvailabilityProcess.prototype.stop = function() {
-  this.state = HighAvailabilityProcess.STOPPED;
-  if(this.server) this.server.close();
-}
-
-var _timeoutHandle = function(self) {
-  return function() {
-    if(self.state == HighAvailabilityProcess.STOPPED) {
-      // Stop all server instances
-      for(var name in self.replset._state.addresses) {
-        self.replset._state.addresses[name].close();
-        delete self.replset._state.addresses[name];
-      }
-
-      // Finished pinging
-      return;
-    }
-
-    // If the server is connected
-    if(self.server.isConnected() && !self._haProcessInProcess) {
-      // Start HA process
-      self._haProcessInProcess = true;
-      // Execute is master command
-      self.db._executeQueryCommand(DbCommand.createIsMasterCommand(self.db), 
-          {failFast:true, connection: self.server.checkoutReader()}
-        , function(err, res) {
-          if(err) {
-            self.server.close();
-            return setTimeout(_timeoutHandle(self), self.options.haInterval);
-          }
-
-          // Master document
-          var master = res.documents[0];
-          var hosts = master.hosts || [];
-          var reconnect_servers = [];
-          var state = self.replset._state;
-
-          // We are in recovery mode, let's remove the current server
-          if(!master.ismaster 
-            && !master.secondary
-            && state.addresses[master.me]) {
-              self.server.close();
-              state.addresses[master.me].close();
-              delete state.secondaries[master.me];
-              return setTimeout(_timeoutHandle(self), self.options.haInterval);
-          }
-
-          // For all the hosts let's check that we have connections
-          for(var i = 0; i < hosts.length; i++) {
-            var host = hosts[i];
-            // Check if we need to reconnect to a server
-            if(state.addresses[host] == null) {
-              reconnect_servers.push(host);
-            } else if(state.addresses[host] && !state.addresses[host].isConnected()) {
-              state.addresses[host].close();
-              delete state.secondaries[host];
-              reconnect_servers.push(host);              
-            }
-
-            if((master.primary && state.master == null)
-              || (master.primary && state.master.name != master.primary)) {
-
-              // Locate the primary and set it
-              if(state.addresses[master.primary]) {
-                if(state.master) state.master.close();
-                delete state.secondaries[master.primary];
-                state.master = state.addresses[master.primary];
-              }
-              
-              // Set up the changes
-              if(state.master != null && state.master.isMasterDoc != null) {
-                state.master.isMasterDoc.ismaster = true;
-                state.master.isMasterDoc.secondary = false;                
-              } else if(state.master != null) {
-                state.master.isMasterDoc = master;
-                state.master.isMasterDoc.ismaster = true;
-                state.master.isMasterDoc.secondary = false;                
-              }
-
-              // Execute any waiting commands (queries or writes)
-              self.replset._commandsStore.execute_queries();
-              self.replset._commandsStore.execute_writes();   
-            }
-          }
-
-          // Let's reconnect to any server needed
-          if(reconnect_servers.length > 0) {
-            _reconnect_servers(self, reconnect_servers);  
-          } else {
-            self._haProcessInProcess = false
-            return setTimeout(_timeoutHandle(self), self.options.haInterval);
-          }
-      });
-    } else if(!self.server.isConnected()) {
-      setTimeout(function() {
-        return self.start();
-      }, self.options.haInterval);
-    } else {
-      setTimeout(_timeoutHandle(self), self.options.haInterval);
-    }
-  }
-}
-
-var _reconnect_servers = function(self, reconnect_servers) {
-  if(reconnect_servers.length == 0) {
-    self._haProcessInProcess = false    
-    return setTimeout(_timeoutHandle(self), self.options.haInterval);
-  }
-
-  // Unpack connection options
-  var connectTimeoutMS = self.options.connectTimeoutMS || 10000;
-  var socketTimeoutMS = self.options.socketTimeoutMS || 0;
-
-  // Server class
-  var Db = require('../../db').Db
-  var Server = require('../server').Server;
-  // Get the host
-  var host = reconnect_servers.shift();
-  // Split it up
-  var _host = host.split(":")[0];
-  var _port = parseInt(host.split(":")[1], 10);
-
-  // Set up a new server instance
-  var newServer = new Server(_host, _port, {
-      auto_reconnect: false
-    , returnIsMasterResults: true
-    , poolSize: self.options.poolSize
-    , socketOptions: { 
-        connectTimeoutMS: connectTimeoutMS,
-        socketTimeoutMS: socketTimeoutMS
-      }
-    , ssl: self.options.ssl
-    , sslValidate: self.options.sslValidate
-    , sslCA: self.options.sslCA
-    , sslCert: self.options.sslCert
-    , sslKey: self.options.sslKey
-    , sslPass: self.options.sslPass
-  });
-
-  // Create new dummy db for app
-  var db = new Db('local', newServer, {w:1});
-  var state = self.replset._state;
-
-  // Set up the event listeners
-  newServer.once("error", _repl_set_handler("error", self.replset, newServer));
-  newServer.once("close", _repl_set_handler("close", self.replset, newServer));
-  newServer.once("timeout", _repl_set_handler("timeout", self.replset, newServer));
-
-  // Set shared state
-  newServer.name = host;
-  newServer._callBackStore = self.replset._callBackStore;
-  newServer.replicasetInstance = self.replset;
-  newServer.enableRecordQueryStats(self.replset.recordQueryStats);
-
-  // Let's attempt a connection over here
-  newServer.connect(db, function(err, result, _server) {
-    if(self.state == HighAvailabilityProcess.STOPPED) {
-      _server.close();
-    }
-
-    // If we connected let's check what kind of server we have
-    if(!err) {
-      _apply_auths(self, db, _server, function(err, result) {
-        if(err) {
-          _server.close();
-          // Process the next server
-          return setTimeout(function() {
-            _reconnect_servers(self, reconnect_servers);  
-          }, self.options.haInterval);                      
-        }
-        var doc = _server.isMasterDoc;    
-        // Fire error on any unknown callbacks for this server
-        self.replset.__executeAllServerSpecificErrorCallbacks(_server.socketOptions.host, _server.socketOptions.port, err);    
-
-        if(doc.ismaster) {
-          // Emit primary added
-          self.replset.emit('joined', "primary", doc, _server);
-
-          // If it was a secondary remove it
-          if(state.secondaries[doc.me]) {
-            delete state.secondaries[doc.me];
-          }
-
-          // Override any server in list of addresses
-          state.addresses[doc.me] = _server;
-          // Set server as master
-          state.master = _server;     
-          // Execute any waiting writes
-          self.replset._commandsStore.execute_writes();   
-        } else if(doc.secondary) {
-          // Emit secondary added
-          self.replset.emit('joined', "secondary", doc, _server);
-          // Add the secondary to the state
-          state.secondaries[doc.me] = _server;
-          // Override any server in list of addresses
-          state.addresses[doc.me] = _server;
-          // Execute any waiting reads
-          self.replset._commandsStore.execute_queries();   
-        } else {
-          _server.close();
-        }
-
-        // Set any tags on the instance server
-        _server.name = doc.me;
-        _server.tags = doc.tags;
-        // Process the next server
-        setTimeout(function() {
-          _reconnect_servers(self, reconnect_servers);  
-        }, self.options.haInterval);            
-      });
-    } else {
-      _server.close();
-      self.replset.__executeAllServerSpecificErrorCallbacks(_server.socketOptions.host, _server.socketOptions.port, err);    
-
-      setTimeout(function() {
-        _reconnect_servers(self, reconnect_servers);  
-      }, self.options.haInterval);            
-    }
-  });
-}
-
-var _apply_auths = function(self, _db, _server, _callback) {
-  if(self.replset.auth.length() == 0) return _callback(null);
-  // Apply any authentication needed
-  if(self.replset.auth.length() > 0) {
-    var pending = self.replset.auth.length();
-    var connections = _server.allRawConnections();
-    var pendingAuthConn = connections.length;
-
-    // Connection function
-    var connectionFunction = function(_auth, _connection, __callback) {
-      var pending = _auth.length();
-
-      for(var j = 0; j < pending; j++) {
-        // Get the auth object
-        var _auth = _auth.get(j);
-        // Unpack the parameter
-        var username = _auth.username;
-        var password = _auth.password;
-        var options = { 
-            authMechanism: _auth.authMechanism            
-          , authSource: _auth.authdb
-          , connection: _connection 
-        };
-
-        // If we have changed the service name
-        if(_auth.gssapiServiceName) 
-          options.gssapiServiceName = _auth.gssapiServiceName;
-        
-        // Hold any error
-        var _error = null;
-        
-        // Authenticate against the credentials
-        _db.authenticate(username, password, options, function(err, result) {
-          _error = err != null ? err : _error;
-          // Adjust the pending authentication
-          pending = pending - 1;
-          // Finished up
-          if(pending == 0) __callback(_error ? _error : null, _error ? false : true);
-        });
-      }
-    }
-
-    // Final error object
-    var finalError = null;
-    // Iterate over all the connections
-    for(var i = 0; i < connections.length; i++) {
-      connectionFunction(self.replset.auth, connections[i], function(err, result) {
-        // Pending authentication
-        pendingAuthConn = pendingAuthConn - 1 ;
-
-        // Save error if any
-        finalError = err ? err : finalError;
-
-        // If we are done let's finish up
-        if(pendingAuthConn == 0) {
-          _callback(null);
-        }
-      });
-    }
-  }
-}
-
-var _handle = function(self, server) {
-  return function(err) {
-    server.close();    
-  }
-}
-
-var _repl_set_handler = function(event, self, server) {
-  var ReplSet = require('./repl_set').ReplSet;
-
-  return function(err, doc) {
-    server.close();
-
-    // The event happened to a primary
-    // Remove it from play
-    if(self._state.isPrimary(server)) {
-      self._state.master == null;
-      self._serverState = ReplSet.REPLSET_READ_ONLY;
-    } else if(self._state.isSecondary(server)) {
-      delete self._state.secondaries[server.name];
-    }
-
-    // Unpack variables
-    var host = server.socketOptions.host;
-    var port = server.socketOptions.port;
-
-    // Fire error on any unknown callbacks
-    self.__executeAllServerSpecificErrorCallbacks(host, port, err);    
-  }
-}
-
-exports.HighAvailabilityProcess = HighAvailabilityProcess;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js b/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js
deleted file mode 100644
index a5658e3..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js
+++ /dev/null
@@ -1,126 +0,0 @@
-var PingStrategy = require('./strategies/ping_strategy').PingStrategy
-  , StatisticsStrategy = require('./strategies/statistics_strategy').StatisticsStrategy
-  , ReadPreference = require('../read_preference').ReadPreference;
-
-var Options = function(options) {
-  options = options || {};
-  this._options = options;
-  this.ha = options.ha || true;
-  this.haInterval = options.haInterval || 2000;
-  this.reconnectWait = options.reconnectWait || 1000;
-  this.retries = options.retries || 30;
-  this.rs_name = options.rs_name;
-  this.socketOptions = options.socketOptions || {};
-  this.readPreference = options.readPreference;
-  this.readSecondary = options.read_secondary;
-  this.poolSize = options.poolSize == null ? 5 : options.poolSize;
-  this.strategy = options.strategy || 'ping';
-  this.secondaryAcceptableLatencyMS = options.secondaryAcceptableLatencyMS || 15;
-  this.connectArbiter = options.connectArbiter || false;
-  this.connectWithNoPrimary = options.connectWithNoPrimary || false;
-  this.logger = options.logger;
-  this.ssl = options.ssl || false;
-  this.sslValidate = options.sslValidate || false;
-  this.sslCA = options.sslCA;
-  this.sslCert = options.sslCert;
-  this.sslKey = options.sslKey;
-  this.sslPass = options.sslPass;
-  this.emitOpen = options.emitOpen || true;
-}
-
-Options.prototype.init = function() {
-  if(this.sslValidate && (!Array.isArray(this.sslCA) || this.sslCA.length == 0)) {
-    throw new Error("The driver expects an Array of CA certificates in the sslCA parameter when enabling sslValidate");
-  }  
-
-  // Make sure strategy is one of the two allowed
-  if(this.strategy != null && (this.strategy != 'ping' && this.strategy != 'statistical' && this.strategy != 'none')) 
-      throw new Error("Only ping or statistical strategies allowed");    
-  
-  if(this.strategy == null) this.strategy = 'ping';
-  
-  // Set logger if strategy exists
-  if(this.strategyInstance) this.strategyInstance.logger = this.logger;
-
-  // Unpack read Preference
-  var readPreference = this.readPreference;
-  // Validate correctness of Read preferences
-  if(readPreference != null) {
-    if(readPreference != ReadPreference.PRIMARY && readPreference != ReadPreference.PRIMARY_PREFERRED
-      && readPreference != ReadPreference.SECONDARY && readPreference != ReadPreference.SECONDARY_PREFERRED
-      && readPreference != ReadPreference.NEAREST && typeof readPreference != 'object' && readPreference['_type'] != 'ReadPreference') {
-      throw new Error("Illegal readPreference mode specified, " + readPreference);
-    }
-
-    this.readPreference = readPreference;
-  } else {
-    this.readPreference = null;
-  } 
-
-     // Ensure read_secondary is set correctly
-  if(this.readSecondary != null)
-    this.readSecondary = this.readPreference == ReadPreference.PRIMARY 
-        || this.readPreference == false  
-        || this.readPreference == null ? false : true;
-
-  // Ensure correct slave set
-  if(this.readSecondary) this.slaveOk = true;
-
-  // Set up logger if any set
-  this.logger = this.logger != null
-    && (typeof this.logger.debug == 'function')
-    && (typeof this.logger.error == 'function')
-    && (typeof this.logger.debug == 'function')
-      ? this.logger : {error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}};  
-
-  // Connection timeout
-  this.connectTimeoutMS = this.socketOptions.connectTimeoutMS
-    ? this.socketOptions.connectTimeoutMS
-    : 1000;
-
-  // Socket connection timeout
-  this.socketTimeoutMS = this.socketOptions.socketTimeoutMS
-    ? this.socketOptions.socketTimeoutMS
-    : 30000;
-}
-
-Options.prototype.decorateAndClean = function(servers, callBackStore) {
-  var self = this;
-
-  // var de duplicate list
-  var uniqueServers = {};
-  // De-duplicate any servers in the seed list
-  for(var i = 0; i < servers.length; i++) {
-    var server = servers[i];
-    // If server does not exist set it
-    if(uniqueServers[server.host + ":" + server.port] == null) {
-      uniqueServers[server.host + ":" + server.port] = server;
-    }
-  }
-
-  // Let's set the deduplicated list of servers
-  var finalServers = [];
-  // Add the servers
-  for(var key in uniqueServers) {
-    finalServers.push(uniqueServers[key]);
-  }
-
-  finalServers.forEach(function(server) {
-    // Ensure no server has reconnect on
-    server.options.auto_reconnect = false;
-    // Set up ssl options
-    server.ssl = self.ssl;
-    server.sslValidate = self.sslValidate;
-    server.sslCA = self.sslCA;
-    server.sslCert = self.sslCert;
-    server.sslKey = self.sslKey;
-    server.sslPass = self.sslPass;
-    server.poolSize = self.poolSize;
-    // Set callback store
-    server._callBackStore = callBackStore;
-  });
-
-  return finalServers;
-}
-
-exports.Options = Options;


[70/98] [abbrv] incubator-apex-malhar git commit: Merge branch 'MLHR-1880-3.2' into release-3.2

Posted by da...@apache.org.
Merge branch 'MLHR-1880-3.2' into release-3.2


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/c86e50a3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/c86e50a3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/c86e50a3

Branch: refs/heads/master
Commit: c86e50a35134de025820bb909adc07137a978497
Parents: 6b43059 8cf1a2b
Author: Timothy Farkas <ti...@datatorrent.com>
Authored: Thu Nov 5 17:04:58 2015 -0800
Committer: Timothy Farkas <ti...@datatorrent.com>
Committed: Thu Nov 5 17:04:58 2015 -0800

----------------------------------------------------------------------
 .../lib/io/fs/AbstractFileOutputOperator.java   | 32 ++++++++++----------
 1 file changed, 16 insertions(+), 16 deletions(-)
----------------------------------------------------------------------



[87/98] [abbrv] incubator-apex-malhar git commit: Cleanup of web resources

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/machinedata/global.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/machinedata/global.js b/contrib/src/main/html/machinedata/global.js
deleted file mode 100644
index 753f58f..0000000
--- a/contrib/src/main/html/machinedata/global.js
+++ /dev/null
@@ -1,269 +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.
- */
-/**
- * Declaration and initialization for global variables.
- */
-
-// url parameters   
-var params;
-
-// Data Points 
-var aggrData; 
-var aggrDataPoints;
-var contData;
-var contDataPoints;
-
-// CPU data table 
-var cpuTable;
-var cpuChart; 
-var cpuView;
-
-// ram data table 
-var ramTable;
-var ramChart; 
-var ramView;  
-
-// hdd data table 
-var hddTable;
-var hddChart; 
-var hddView;  
-
-// chart options
-var chartOptions;
-
-// Date formatter  
-var dateFormatter;
-
-// window look back value 
-var lookback;
-var aggrLookBack;
-var contLookBack;
-var contRefresh;
-
-// Get split query string
-function QueryString() {
-  var query_string = {};
-  var query = window.location.search.substring(1);
-  return query;
-}
-function SplitQuery(query)
-{  
-	var params = {};
-	var vars = query.split("&");
-	for (var i=0;i<vars.length;i++)
-	{
-		var pair = vars[i].split("=");
-		if(pair.length == 2) 
-		{
-			params[pair[0]] = pair[1];
-		}
-	}
-	return params;
-}  
-
-// Initialize global variable(s)
-function InitializeGlobal()
-{
-  // Initialize params  
-  params = SplitQuery(QueryString()); 
-       
-  // Initialize data points 
-  aggrDataPoints = new Array();
-  contDataPoints = new Array();
-    
-  // Initialize cpu table 
-  cpuTable = new google.visualization.DataTable(); 
-  cpuTable.addColumn('datetime', 'Time');
-  cpuTable.addColumn('number', 'CPU');
-  chartOptions = { width: 600, height: 300, legend: 'none', pointSize: 0, lineWidth : 1 };
-  cpuChart = new google.visualization.ScatterChart(document.getElementById('chart_div'));
-  cpuView = new google.visualization.DataView(cpuTable);
-
-  // Initialize ram table 
-  ramTable = new google.visualization.DataTable(); 
-  ramTable.addColumn('datetime', 'Time');
-  ramTable.addColumn('number', 'RAM');;
-  ramChart = new google.visualization.ScatterChart(document.getElementById('chart1_div'));
-  ramView = new google.visualization.DataView(ramTable);
-
-  // Initialize hdd table 
-  hddTable = new google.visualization.DataTable(); 
-  hddTable.addColumn('datetime', 'Time');
-  hddTable.addColumn('number', 'HDD');;
-  hddChart = new google.visualization.ScatterChart(document.getElementById('chart2_div'));
-  hddView = new google.visualization.DataView(hddTable);
-    
-  // get lookback value  
-  lookback = (new Date().getTime()/1000) - 3600*6;
-  if (params['lookback'] && (params['lookback'].length > 0)) lookback = (new Date().getTime()/1000) - (3600*(parseInt(params['lookback'])));
-  aggrLookBack = lookback;
-     
-  // get continuos lookback 
-  contLookBack = lookback;
-  contRefresh = 5;
-
-  // get param lookback  
-  paramLookBack = 6;
-  if (params['lookback'] && (params['lookback'].length > 0)) paramLookBack = parseInt(params['lookback']);
-  //if (params['refresh'] && (params['refresh'].length > 0)) contRefresh = parseInt(params['refresh']);
-}
-
-
-/**
- * Function to create fetch urls from given parameters
- */
-function DataUrl() 
-{       
-    var url = "json.php?bucket=m";
-    url += "&customer=";
-    if (params['customer'])
-    {	
-      url += params['customer'];
-    }
-    url += "&product=";
-    if (params['product'])
-    {	
-      url += params['product'];
-    }
-    url += "&os=";
-    if (params['os'])
-    {	
-      url += params['os'];
-    }
-    url += "&software1=";
-    if (params['software1'])
-    {
-      url += params['software1'];
-    }
-    url += "&software2=";
-    if (params['software2'])
-    {
-      url += params['software2'];
-    }
-    url += "&software3=";
-    if (params['software3'])
-    {
-      url += params['software3'];
-    }
-     url += "&from=";
-    url += Math.floor(lookback);
-    return url;   
-}
-
-/**
- * Creates data table with time stamp and cpu values.
- * Draw line chart for time vs cpu.
- */
-function DrawCPUChart()
-{
-  // create/delete rows 
-  if (cpuTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - cpuTable.getNumberOfRows();
-    cpuTable.addRows(numRows);
-  } else {
-    for(var i=(cpuTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      cpuTable.removeRow(i);    
-    }
-  }
-    
-  // Populate data table with time/cpu data points. 
-  for(var i=0; i < cpuTable.getNumberOfRows(); i++)
-  {
-    //if(parseFloat(aggrDataPoints[i].cpu) < 500) continue;
-    cpuTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    cpuTable.setCell(i, 1, parseFloat(aggrDataPoints[i].cpu));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'CPU Usage (%)';
-  cpuChart.draw(cpuView, chartOptions); 
-}     
-
-/**
- * Creates data table with time stamp and revenu values.
- * Draw line chart for time vs ram.
- */
-function DrawRAMChart()
-{
-  // create/delete rows 
-  if (ramTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - ramTable.getNumberOfRows();
-    ramTable.addRows(numRows);
-  } else {
-    for(var i=(ramTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      ramTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/ram data points. 
-  for(var i=0; i < ramTable.getNumberOfRows(); i++)
-  {
-    ramTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    ramTable.setCell(i, 1, parseFloat(aggrDataPoints[i].ram));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'RAM Usage (%)';
-  ramChart.draw(ramView, chartOptions); 
-}  
-
-/**
- * Creates data table with time stamp and hdd values.
- * Draw line chart for time vs hdd.
- */
-function DrawHDDChart()
-{
-  // create/delete rows 
-  if (hddTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - hddTable.getNumberOfRows();
-    hddTable.addRows(numRows);
-  } else {
-    for(var i=(hddTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      hddTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/hdd data points. 
-  for(var i=0; i < hddTable.getNumberOfRows(); i++)
-  {
-    hddTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    hddTable.setCell(i, 1, parseInt(aggrDataPoints[i].hdd));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'HDD Usage (%)';
-  hddChart.draw(hddView, chartOptions); 
-}
-
-/**
- * Sort json array  
- */
-function sortByKey(array, key) {
-    return array.sort(function(a, b) {
-        var x = a[key]; var y = b[key];
-        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
-    });
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/machinedata/index.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/machinedata/index.php b/contrib/src/main/html/machinedata/index.php
deleted file mode 100644
index dcc595e..0000000
--- a/contrib/src/main/html/machinedata/index.php
+++ /dev/null
@@ -1,269 +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.
- */
-<!--
- --  Copyright (c) 2012-2013 Malhar, Inc.
- --  All Rights Reserved.
- -->
-    
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Data Torrent : Machine Generated Data Demo </title>
-
-<link rel="stylesheet" type="text/css" href="malhar.css">
-
-<!-- Google charts include -->
-<script type="text/javascript" src="https://www.google.com/jsapi"></script>
-<script type="text/javascript">
-google.load('visualization', '1', {'packages':['corechart']});
-</script>
-
-<!-- Malhar charting utils -->
-<script type="text/javascript" src="global.js"></script>
-
-<!-- window onload -->
-<script type="text/javascript">
-
-function DrawAggrCharts()
-{
-  // get refresh url 
-  lookback = aggrLookBack; 
-  var url = DataUrl();        
-
-  // fetch data, draw charts
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-
-console.log(url);
-        aggrData = connect.response;
-        var pts = JSON.parse(aggrData);
-        aggrDataPoints = new Array();
-        for(var i=0; i <  pts.length; i++) aggrDataPoints.push(pts[i]);
-        DrawCPUChart();
-        DrawRAMChart();
-        DrawHDDChart();
-        //DrawImpressionsChart();
-        delete aggrData;
-      }
-    }
-    connect.open('GET',  url, true);
-    connect.send(null);
-  } catch(e) {
-  }
-  aggrLookBack += 30;
-}
-
-function DrawContCharts()  
-{    
-  // get refresh url 
-  lookback = contLookBack; 
-  var url = DataUrl();    
-  //document.getElementById('chart_div').innerHTML = url;
-
-  // fetch data, draw charts
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        contData = connect.response;   
-        var newPts = JSON.parse(contData); 
-        contDataPoints = new Array();
-        for(var i=0; i <  newPts.length; i++) contDataPoints.push(newPts[i]);
-        DrawCtrChart() ;
-        DrawMarginChart();
-        delete contData;
-        delete newPts;
-      }
-    }
-    connect.open('GET',  url, true);
-    connect.send(null);
-  } catch(e) {
-  }
-  contLookBack += contRefresh;
-}
-
-window.onload = function() {
-
-  // Initialize global 
-  InitializeGlobal();   
-
-  // Inituialize form fields  
-  if (params['customer']) document.getElementById('customer').value = params['customer'];
-  if (params['product']) document.getElementById('product').value = params['product'];
-  if (params['os']) document.getElementById('os').value = params['os'];
-  if (params['software1']) document.getElementById('software1').value = params['software1'];
-  if (params['software2']) document.getElementById('software2').value = params['software2'];
-  if (params['software3']) document.getElementById('software3').value = params['software3'];
-  if (params['refresh'])
-  {
-    document.getElementById('refresh').value = params['refresh'];   
-  } else {
-    document.getElementById('refresh').value = 5;
-  }    
-  if (params['lookback'])
-  {
-    document.getElementById('lookback').value = params['lookback'];   
-  } else {
-    document.getElementById('lookback').value = 6;
-  }
-       
-  // draw charts 
-  DrawAggrCharts();
-  //DrawContCharts();
-  setInterval(DrawAggrCharts, 30000);
-  //setInterval(DrawContCharts, contRefresh * 1000);
-};
-
-</script>
-
-</head>
-<body>
-
-    <div id="header">
-        <ul class="dashboard-modes">
-            <li>
-                <a href="#" class="active">Machine Generated Data Demo </a>
-            </li>
-        </ul>
-
-        <div id="logo"><img src="main_banner.png"/></div>
-    </div>
-	
-	<div id="main">
-    <div id="pagecontent">
-        <div class="dashboardMgr">
-            <div class="inner" style="">
-                <h2 class="title">View Real Time Data Charts</h2> 
-                <form method="GET" action="index.php">
-                    
-                    <label for="customer">Customer ID:</label>
-                    <select name="customer" id="customer" style="width:200px;">
-                  		<option value="">ALL</option>
-                		<?php
-                   			for ($i = 1; $i <= 5; $i++) {
-                  				print "<option value=\"$i\">Customer $i</option>\n";
-                			}
-                		?>
-             		</select>
-             		
-            		<label for="">Product ID:</label>
-            		<select name="product" id="product" style="width:200px;">
-              		    <option value="">ALL</option>
-                		<?php
-                			for ($i = 4; $i <= 6; $i++) {
-                  				print "<option value=\"$i\">Product $i</option>\n";
-                			}
-                		?>
-            		</select>
-        		
-        		    <label for="">Product OS:</label>
-            		<select name="os" id="os" style="width:200px;">
-              		    <option value="">ALL</option>
-        		        <?php
-                			for ($i = 10; $i <= 12; $i++) {
-                  				print "<option value=\"$i\">OS $i</option>\n";
-                			}
-        	            ?>
-            		</select>
-            		
-                    <label for="software1">Software1 Ver:</label>
-                    <select name="software1" id="software1" style="width:200px;">
-                  		<option value="">ALL</option>
-                		<?php
-                   			for ($i = 10; $i <= 12; $i++) {
-                  				print "<option value=\"$i\">Software1 Version $i</option>\n";
-                			}
-                		?>
-             		</select>
-
-                    <label for="software2">Software2 Ver:</label>
-                    <select name="software2" id="software2" style="width:200px;">
-                  		<option value="">ALL</option>
-                		<?php
-                   			for ($i = 12; $i <= 14; $i++) {
-                  				print "<option value=\"$i\">Software2 Version $i</option>\n";
-                			}
-                		?>
-             		</select>
-
-                    <label for="software3">Software3 Ver:</label>
-                    <select name="software3" id="software3" style="width:200px;">
-                  		<option value="">ALL</option>
-                		<?php
-                   			for ($i = 4; $i <= 6; $i++) {
-                  				print "<option value=\"$i\">Software3 Version $i</option>\n";
-                			}
-                		?>
-             		</select>
-
-            		<label for="">Refresh Interval:</label>
-            		<div class="input-append">
-                        <input type="text" name="refresh" id="refresh" class="input-small"/>
-                        <span class="add-on">Secs</span>
-                    </div>
-                    
-
-        		    <label for="">Look Back:</label>
-        		    <div class="input-append">
-                        <input type="text" name="lookback" id="lookback" class="input-small"/>
-                        <span class="add-on">Hours</span>
-                    </div>
-                    
-                    <input type="submit" value="submit" class="btn btn-primary" />
-                    
-                </form>
-            </div>
-            <div class="collapser-container">
-                <div class="collapser">
-                    <div class="collapse-dot"></div>
-                    <div class="collapse-dot"></div>
-                    <div class="collapse-dot"></div>
-                </div>
-            </div>
-        </div>
-        <div class="dashboardMain">
-            
-	<!-- <table><tbody>
-                <tr>
-        	      <td><div id="chart_div"></div></td>	
-        	      <td><div id="chart1_div" ></div></td>	
-                 </tr>
-                 <tr>
-        	     <td><div id="chart2_div" ></div></td>	
-        	     <td><div id="chart3_div" ></div></td>
-                 </tr>
-                 <tr>
-        	   <td><div id="chart4_div" ></div></td>	
-        	    <td><div id="chart5_div" ></div></td>	
-                 </tr>
-        	 </tr></tbody></table> -->
-    	<div class="chart-ctnr" id="chart_div"></div>
-        <div class="chart-ctnr" id="chart1_div" ></div>	
-        <div class="chart-ctnr" id="chart2_div" ></div>	
-<!--        <div class="chart-ctnr" id="chart3_div" ></div>
-        <div class="chart-ctnr" id="chart4_div" ></div>	
-        <div class="chart-ctnr" id="chart5_div" ></div> -->
-        </div>		
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/machinedata/json.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/machinedata/json.php b/contrib/src/main/html/machinedata/json.php
deleted file mode 100644
index 75a7117..0000000
--- a/contrib/src/main/html/machinedata/json.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('localhost');
-$redis->select(15);
-$from = $_GET['from'];
-$bucket = $_GET['bucket'];
-$customer = $_GET['customer'];
-$product = $_GET['product'];
-$os = $_GET['os'];
-$software1 = $_GET['software1'];
-$software2 = $_GET['software2'];
-$software3 = $_GET['software3'];
-
-switch ($bucket) {
-case 'D':
-  $format = 'Ymd';
-  $incr = 60 * 60 * 24;
-  break;
-case 'h':
-  $format = 'YmdH';
-  $incr = 60 * 60;
-  break;
-case 'm':
-  $format = 'YmdHi';
-  $incr = 60;
-  break;
-default:
-  break;
-}
-
-$arr = array();
-if ($customer != '') {
-  $arr[] = "0:".$customer;
-} 
-if ($product != '') {
-  $arr[] = "1:".$product;
-} 
-if ($os != '') {
-  $arr[] = "2:".$os;
-} 
-if ($software1 != '') {
-  $arr[] = "3:".$software1;
-} 
-if ($software2 != '') {
-  $arr[] = "4:".$software2;
-} 
-if ($software3 != '') {
-  $arr[] = "5:".$software3;
-} 
-$subpattern = "";
-if (count($arr) != 0) {
-  $subpattern = join("|", $arr);
-}
-
-$result = array();
-
-while ($from < time()) {
-  $date = gmdate($format, $from);
-  if ($subpattern != '') {
-    $key = $bucket . '|' . $date . '|' . $subpattern;
-  } else {
-    $key = $bucket . '|' . $date ;
-  }
-  $hash = $redis->hGetAll($key);
-  if ($hash) {
-    $cpu = $hash['cpu'];
-    $ram = $hash['ram'];
-    $hdd = $hash['hdd'];
-    $result[] = array('timestamp'=> $from * 1000, 'cpu'=>$cpu, 'ram'=>$ram, 'hdd'=>$hdd);
-  }
-  $from += $incr;
-}
-
-array_pop($result);
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/machinedata/main_banner.png
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/machinedata/main_banner.png b/contrib/src/main/html/machinedata/main_banner.png
deleted file mode 100644
index 9e3724f..0000000
Binary files a/contrib/src/main/html/machinedata/main_banner.png and /dev/null differ


[97/98] [abbrv] incubator-apex-malhar git commit: Preparing to release 3.2.0-incubating-RC2

Posted by da...@apache.org.
Preparing to release 3.2.0-incubating-RC2


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/ff0b0d08
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/ff0b0d08
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/ff0b0d08

Branch: refs/heads/master
Commit: ff0b0d080ebd8d00cee47321df90dad9357bbead
Parents: f9875f6
Author: Thomas Weise <th...@datatorrent.com>
Authored: Tue Nov 10 13:59:43 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Tue Nov 10 14:01:47 2015 -0800

----------------------------------------------------------------------
 CHANGELOG.md                     | 2 +-
 apps/logstream/pom.xml           | 2 +-
 apps/pom.xml                     | 2 +-
 benchmark/pom.xml                | 2 +-
 contrib/pom.xml                  | 2 +-
 demos/distributedistinct/pom.xml | 2 +-
 demos/echoserver/pom.xml         | 2 +-
 demos/frauddetect/pom.xml        | 2 +-
 demos/machinedata/pom.xml        | 2 +-
 demos/mobile/pom.xml             | 2 +-
 demos/mrmonitor/pom.xml          | 2 +-
 demos/mroperator/pom.xml         | 2 +-
 demos/pi/pom.xml                 | 2 +-
 demos/pom.xml                    | 2 +-
 demos/r/pom.xml                  | 2 +-
 demos/twitter/pom.xml            | 2 +-
 demos/uniquecount/pom.xml        | 2 +-
 demos/wordcount/pom.xml          | 2 +-
 demos/yahoofinance/pom.xml       | 2 +-
 library/pom.xml                  | 2 +-
 pom.xml                          | 2 +-
 samples/pom.xml                  | 2 +-
 22 files changed, 22 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3bf8a6b..a43227f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,7 @@ Apex Malhar Changelog
 ========================================================================================================================
 
 
-Version 3.2.0-incubating - 2015-11-08
+Version 3.2.0-incubating - 2015-11-13
 ------------------------------------------------------------------------------------------------------------------------
 
 ### Sub-task

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/apps/logstream/pom.xml
----------------------------------------------------------------------
diff --git a/apps/logstream/pom.xml b/apps/logstream/pom.xml
index 06ec56d..eb823aa 100644
--- a/apps/logstream/pom.xml
+++ b/apps/logstream/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>malhar-apps</artifactId>
     <groupId>org.apache.apex</groupId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/apps/pom.xml
----------------------------------------------------------------------
diff --git a/apps/pom.xml b/apps/pom.xml
index 6002d30..f8e362e 100644
--- a/apps/pom.xml
+++ b/apps/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <artifactId>malhar-apps</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/benchmark/pom.xml
----------------------------------------------------------------------
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index b076035..fb1b6d8 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>malhar</artifactId>
     <groupId>org.apache.apex</groupId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/contrib/pom.xml
----------------------------------------------------------------------
diff --git a/contrib/pom.xml b/contrib/pom.xml
index 7094a45..b0f7c36 100755
--- a/contrib/pom.xml
+++ b/contrib/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <artifactId>malhar-contrib</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/distributedistinct/pom.xml
----------------------------------------------------------------------
diff --git a/demos/distributedistinct/pom.xml b/demos/distributedistinct/pom.xml
index be51f4a..06549ba 100644
--- a/demos/distributedistinct/pom.xml
+++ b/demos/distributedistinct/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/echoserver/pom.xml
----------------------------------------------------------------------
diff --git a/demos/echoserver/pom.xml b/demos/echoserver/pom.xml
index 57d9bb0..6348f1c 100644
--- a/demos/echoserver/pom.xml
+++ b/demos/echoserver/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>malhar-demos</artifactId>
     <groupId>org.apache.apex</groupId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
   
   <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/frauddetect/pom.xml
----------------------------------------------------------------------
diff --git a/demos/frauddetect/pom.xml b/demos/frauddetect/pom.xml
index 0981b4e..af18cf6 100644
--- a/demos/frauddetect/pom.xml
+++ b/demos/frauddetect/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/machinedata/pom.xml
----------------------------------------------------------------------
diff --git a/demos/machinedata/pom.xml b/demos/machinedata/pom.xml
index 197d3ee..1e6b13e 100644
--- a/demos/machinedata/pom.xml
+++ b/demos/machinedata/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/mobile/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mobile/pom.xml b/demos/mobile/pom.xml
index bee397c..b55cf54 100644
--- a/demos/mobile/pom.xml
+++ b/demos/mobile/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/mrmonitor/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mrmonitor/pom.xml b/demos/mrmonitor/pom.xml
index 394c701..db51e30 100644
--- a/demos/mrmonitor/pom.xml
+++ b/demos/mrmonitor/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/mroperator/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mroperator/pom.xml b/demos/mroperator/pom.xml
index 1431de8..ec44ccb 100644
--- a/demos/mroperator/pom.xml
+++ b/demos/mroperator/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/pi/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pi/pom.xml b/demos/pi/pom.xml
index 70957cb..d4c4c0e 100644
--- a/demos/pi/pom.xml
+++ b/demos/pi/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pom.xml b/demos/pom.xml
index 7a409d0..cf9b096 100644
--- a/demos/pom.xml
+++ b/demos/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <artifactId>malhar-demos</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/r/pom.xml
----------------------------------------------------------------------
diff --git a/demos/r/pom.xml b/demos/r/pom.xml
index 13b9610..31f5b38 100644
--- a/demos/r/pom.xml
+++ b/demos/r/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/twitter/pom.xml
----------------------------------------------------------------------
diff --git a/demos/twitter/pom.xml b/demos/twitter/pom.xml
index d58b456..45dbd18 100644
--- a/demos/twitter/pom.xml
+++ b/demos/twitter/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/uniquecount/pom.xml
----------------------------------------------------------------------
diff --git a/demos/uniquecount/pom.xml b/demos/uniquecount/pom.xml
index 1597de9..a2a31de 100644
--- a/demos/uniquecount/pom.xml
+++ b/demos/uniquecount/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/wordcount/pom.xml
----------------------------------------------------------------------
diff --git a/demos/wordcount/pom.xml b/demos/wordcount/pom.xml
index 026a3c3..542ec47 100644
--- a/demos/wordcount/pom.xml
+++ b/demos/wordcount/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/demos/yahoofinance/pom.xml
----------------------------------------------------------------------
diff --git a/demos/yahoofinance/pom.xml b/demos/yahoofinance/pom.xml
index dcefedd..f4d8783 100644
--- a/demos/yahoofinance/pom.xml
+++ b/demos/yahoofinance/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/library/pom.xml
----------------------------------------------------------------------
diff --git a/library/pom.xml b/library/pom.xml
index b024613..78d46db 100644
--- a/library/pom.xml
+++ b/library/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <artifactId>malhar-library</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index d0220d3..35e00ee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
 
   <groupId>org.apache.apex</groupId>
   <artifactId>malhar</artifactId>
-  <version>3.2.0-incubating-SNAPSHOT</version>
+  <version>3.2.0-incubating</version>
   <packaging>pom</packaging>
   <name>Apache Apex Malhar (incubating)</name>
   <url>http://apex.apache.org</url>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ff0b0d08/samples/pom.xml
----------------------------------------------------------------------
diff --git a/samples/pom.xml b/samples/pom.xml
index 6802adf..09ab7bf 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>malhar</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <artifactId>malhar-samples</artifactId>


[74/98] [abbrv] incubator-apex-malhar git commit: Merge branch 'MLHR-1886-3.2' into release-3.2

Posted by da...@apache.org.
Merge branch 'MLHR-1886-3.2' into release-3.2


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/73c8abf7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/73c8abf7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/73c8abf7

Branch: refs/heads/master
Commit: 73c8abf7f7ba24f4842fbcf6300c172984318c4e
Parents: dca2484 e80b7df
Author: Timothy Farkas <ti...@datatorrent.com>
Authored: Thu Nov 5 17:28:42 2015 -0800
Committer: Timothy Farkas <ti...@datatorrent.com>
Committed: Thu Nov 5 17:28:42 2015 -0800

----------------------------------------------------------------------
 .../lib/io/fs/AbstractFileOutputOperator.java   | 113 +++++++++++--------
 .../io/fs/AbstractFileOutputOperatorTest.java   |  52 +++++++++
 2 files changed, 116 insertions(+), 49 deletions(-)
----------------------------------------------------------------------



[20/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/package.json b/web/demos/package/node_modules/http-proxy/package.json
deleted file mode 100644
index 5da2bcf..0000000
--- a/web/demos/package/node_modules/http-proxy/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "name": "http-proxy",
-  "version": "0.10.4",
-  "description": "A full-featured http reverse proxy for node.js",
-  "author": {
-    "name": "Nodejitsu Inc.",
-    "email": "info@nodejitsu.com"
-  },
-  "maintainers": [
-    {
-      "name": "indexzero",
-      "email": "charlie@nodejitsu.com"
-    },
-    {
-      "name": "AvianFlu",
-      "email": "avianflu@nodejitsu.com"
-    }
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/nodejitsu/node-http-proxy.git"
-  },
-  "keywords": [
-    "reverse",
-    "proxy",
-    "http"
-  ],
-  "dependencies": {
-    "colors": "0.x.x",
-    "optimist": "0.6.x",
-    "pkginfo": "0.3.x",
-    "utile": "~0.2.1"
-  },
-  "devDependencies": {
-    "request": "2.14.x",
-    "vows": "0.7.x",
-    "async": "0.2.x",
-    "socket.io": "0.9.11",
-    "socket.io-client": "0.9.11",
-    "ws": "0.4.23"
-  },
-  "main": "./lib/node-http-proxy",
-  "bin": {
-    "node-http-proxy": "./bin/node-http-proxy"
-  },
-  "scripts": {
-    "test": "npm run-script test-http && npm run-script test-https && npm run-script test-core",
-    "test-http": "vows --spec && vows --spec --target=https",
-    "test-https": "vows --spec --proxy=https && vows --spec --proxy=https --target=https",
-    "test-core": "test/core/run"
-  },
-  "engines": {
-    "node": ">= 0.6.6"
-  },
-  "readme": "# node-http-proxy [![Build Status](https://secure.travis-ci.org/nodejitsu/node-http-proxy.png)](http://travis-ci.org/nodejitsu/node-http-proxy)\n\n<img src=\"http://i.imgur.com/8fTt9.png\" />\n\n## Battle-hardened node.js http proxy\n\n### Features\n\n* Reverse proxies incoming http.ServerRequest streams\n* Can be used as a CommonJS module in node.js\n* Reverse or Forward Proxy based on simple JSON-based configuration\n* Supports [WebSockets][1]\n* Supports [HTTPS][2]\n* Minimal request overhead and latency\n* Full suite of functional tests\n* Battled-hardened through __production usage__ @ [nodejitsu.com][0]\n* Written entirely in Javascript\n* Easy to use API\n\n\nnode-http-proxy is `<= 0.8.x` compatible, if you're looking for a `>= 0.10` compatible version please check [caronte](https://github.com/nodejitsu/node-http-proxy/tree/caronte)\n\n### When to use node-http-proxy\n\nLet's suppose you were running multiple http application servers, but you only wanted to expos
 e one machine to the internet. You could setup node-http-proxy on that one machine and then reverse-proxy the incoming http requests to locally running services which were not exposed to the outside network. \n\n### Installing npm (node package manager)\n\n```\ncurl https://npmjs.org/install.sh | sh\n```\n\n### Installing node-http-proxy\n\n```\nnpm install http-proxy\n```\n\n## Using node-http-proxy\n\nThere are several ways to use node-http-proxy; the library is designed to be flexible so that it can be used by itself, or in conjunction with other node.js libraries / tools:\n\n1. Standalone HTTP Proxy server\n2. Inside of another HTTP server (like Connect)\n3. In conjunction with a Proxy Routing Table\n4. As a forward-proxy with a reverse proxy \n5. From the command-line as a long running process\n6. customized with 3rd party middleware.\n\nIn each of these scenarios node-http-proxy can handle any of these types of requests:\n\n1. HTTP Requests (http://)\n2. HTTPS Requests (https:
 //)\n3. WebSocket Requests (ws://)\n4. Secure WebSocket Requests (wss://)\n\nSee the [examples][3] for more working sample code.\n\n### Setup a basic stand-alone proxy server\n\n``` js\nvar http = require('http'),\n    httpProxy = require('http-proxy');\n//\n// Create your proxy server\n//\nhttpProxy.createServer(9000, 'localhost').listen(8000);\n\n//\n// Create your target server\n//\nhttp.createServer(function (req, res) {\n  res.writeHead(200, { 'Content-Type': 'text/plain' });\n  res.write('request successfully proxied!' + '\\n' + JSON.stringify(req.headers, true, 2));\n  res.end();\n}).listen(9000);\n```\n\n### Setup a stand-alone proxy server with custom server logic\n\n``` js\nvar http = require('http'),\n    httpProxy = require('http-proxy');\n    \n//\n// Create a proxy server with custom application logic\n//\nhttpProxy.createServer(function (req, res, proxy) {\n  //\n  // Put your custom server logic here\n  //\n  proxy.proxyRequest(req, res, {\n    host: 'localhost',\n  
   port: 9000\n  });\n}).listen(8000);\n\nhttp.createServer(function (req, res) {\n  res.writeHead(200, { 'Content-Type': 'text/plain' });\n  res.write('request successfully proxied: ' + req.url +'\\n' + JSON.stringify(req.headers, true, 2));\n  res.end();\n}).listen(9000);\n```\n\n### Setup a stand-alone proxy server with latency (e.g. IO, etc)\n\n``` js\nvar http = require('http'),\n    httpProxy = require('http-proxy');\n\n//\n// Create a proxy server with custom application logic\n//\nhttpProxy.createServer(function (req, res, proxy) {\n  //\n  // Buffer the request so that `data` and `end` events\n  // are not lost during async operation(s).\n  //\n  var buffer = httpProxy.buffer(req);\n  \n  //\n  // Wait for two seconds then respond: this simulates\n  // performing async actions before proxying a request\n  //\n  setTimeout(function () {\n    proxy.proxyRequest(req, res, {\n      host: 'localhost',\n      port: 9000, \n      buffer: buffer\n    });      \n  }, 2000);\n}).liste
 n(8000);\n\nhttp.createServer(function (req, res) {\n  res.writeHead(200, { 'Content-Type': 'text/plain' });\n  res.write('request successfully proxied: ' + req.url +'\\n' + JSON.stringify(req.headers, true, 2));\n  res.end();\n}).listen(9000);\n```\n\n### Proxy requests within another http server\n\n``` js\nvar http = require('http'),\n    httpProxy = require('http-proxy');\n    \n//\n// Create a new instance of HttProxy to use in your server\n//\nvar proxy = new httpProxy.RoutingProxy();\n\n//\n// Create a regular http server and proxy its handler\n//\nhttp.createServer(function (req, res) {\n  //\n  // Put your custom server logic here, then proxy\n  //\n  proxy.proxyRequest(req, res, {\n    host: 'localhost',\n    port: 9000\n  });\n}).listen(8001);\n\nhttp.createServer(function (req, res) {\n  res.writeHead(200, { 'Content-Type': 'text/plain' });\n  res.write('request successfully proxied: ' + req.url +'\\n' + JSON.stringify(req.headers, true, 2));\n  res.end();\n}).listen(9000
 ); \n```\n\n### Proxy requests using a ProxyTable\nA Proxy Table is a simple lookup table that maps incoming requests to proxy target locations. Take a look at an example of the options you need to pass to httpProxy.createServer:\n\n``` js\nvar options = {\n  router: {\n    'foo.com/baz': '127.0.0.1:8001',\n    'foo.com/buz': '127.0.0.1:8002',\n    'bar.com/buz': '127.0.0.1:8003'\n  }\n};\n```\n\nThe above route table will take incoming requests to 'foo.com/baz' and forward them to '127.0.0.1:8001'. Likewise it will take incoming requests to 'foo.com/buz' and forward them to '127.0.0.1:8002'. The routes themselves are later converted to regular expressions to enable more complex matching functionality. We can create a proxy server with these options by using the following code:\n\n``` js\nvar proxyServer = httpProxy.createServer(options);\nproxyServer.listen(80);\n```\n\n### Proxy requests using a 'Hostname Only' ProxyTable\nAs mentioned in the previous section, all routes passes to
  the ProxyTable are by default converted to regular expressions that are evaluated at proxy-time. This is good for complex URL rewriting of proxy requests, but less efficient when one simply wants to do pure hostname routing based on the HTTP 'Host' header. If you are only concerned with hostname routing, you change the lookup used by the internal ProxyTable:\n\n``` js\nvar options = {\n  hostnameOnly: true,\n  router: {\n    'foo.com': '127.0.0.1:8001',\n    'bar.com': '127.0.0.1:8002'\n  }\n}\n```\n\nNotice here that I have not included paths on the individual domains because this is not possible when using only the HTTP 'Host' header. Care to learn more? See [RFC2616: HTTP/1.1, Section 14.23, \"Host\"][4].\n\n### Proxy requests using a 'Pathname Only' ProxyTable\n\nIf you dont care about forwarding to different hosts, you can redirect based on the request path.\n\n``` js\nvar options = {\n  pathnameOnly: true,\n  router: {\n    '/wiki': '127.0.0.1:8001',\n    '/blog': '127.0.0.1:
 8002',\n    '/api':  '127.0.0.1:8003'\n  }\n}\n```\n\nThis comes in handy if you are running separate services or applications on separate paths.  Note, using this option disables routing by hostname entirely.\n\n\n### Proxy requests with an additional forward proxy\nSometimes in addition to a reverse proxy, you may want your front-facing server to forward traffic to another location. For example, if you wanted to load test your staging environment. This is possible when using node-http-proxy using similar JSON-based configuration to a proxy table: \n\n``` js\nvar proxyServerWithForwarding = httpProxy.createServer(9000, 'localhost', {\n  forward: {\n    port: 9000,\n    host: 'staging.com'\n  }\n});\nproxyServerWithForwarding.listen(80);\n```\n\nThe forwarding option can be used in conjunction with the proxy table options by simply including both the 'forward' and 'router' properties in the options passed to 'createServer'.\n\n### Listening for proxy events\nSometimes you want to li
 sten to an event on a proxy. For example, you may want to listen to the 'end' event, which represents when the proxy has finished proxying a request.\n\n``` js\nvar httpProxy = require('http-proxy');\n\nvar server = httpProxy.createServer(function (req, res, proxy) {\n  var buffer = httpProxy.buffer(req);\n\n  proxy.proxyRequest(req, res, {\n    host: '127.0.0.1',\n    port: 9000,\n    buffer: buffer\n  });\n});\n\nserver.proxy.on('end', function () {\n  console.log(\"The request was proxied.\");\n});\n\nserver.listen(8000);\n```\n\nIt's important to remember not to listen for events on the proxy object in the function passed to `httpProxy.createServer`. Doing so would add a new listener on every request, which would end up being a disaster.\n\n## Using HTTPS\nYou have all the full flexibility of node-http-proxy offers in HTTPS as well as HTTP. The two basic scenarios are: with a stand-alone proxy server or in conjunction with another HTTPS server.\n\n### Proxying to HTTP from HTTPS
 \nThis is probably the most common use-case for proxying in conjunction with HTTPS. You have some front-facing HTTPS server, but all of your internal traffic is HTTP. In this way, you can reduce the number of servers to which your CA and other important security files are deployed and reduce the computational overhead from HTTPS traffic. \n\nUsing HTTPS in `node-http-proxy` is relatively straight-forward:\n \n``` js\nvar fs = require('fs'),\n    http = require('http'),\n    https = require('https'),\n    httpProxy = require('http-proxy');\n    \nvar options = {\n  https: {\n    key: fs.readFileSync('path/to/your/key.pem', 'utf8'),\n    cert: fs.readFileSync('path/to/your/cert.pem', 'utf8')\n  }\n};\n\n//\n// Create a standalone HTTPS proxy server\n//\nhttpProxy.createServer(8000, 'localhost', options).listen(8001);\n\n//\n// Create an instance of HttpProxy to use with another HTTPS server\n//\nvar proxy = new httpProxy.HttpProxy({\n  target: {\n    host: 'localhost', \n    port: 800
 0\n  }\n});\nhttps.createServer(options.https, function (req, res) {\n  proxy.proxyRequest(req, res)\n}).listen(8002);\n\n//\n// Create the target HTTPS server for both cases\n//\nhttp.createServer(function (req, res) {\n  res.writeHead(200, { 'Content-Type': 'text/plain' });\n  res.write('hello https\\n');\n  res.end();\n}).listen(8000);\n```\n\n### Using two certificates\n\nSuppose that your reverse proxy will handle HTTPS traffic for two different domains `fobar.com` and `barbaz.com`.\nIf you need to use two different certificates you can take advantage of [Server Name Indication](http://en.wikipedia.org/wiki/Server_Name_Indication).\n\n``` js\nvar https = require('https'),\n    path = require(\"path\"),\n    fs = require(\"fs\"),\n    crypto = require(\"crypto\");\n\n//\n// generic function to load the credentials context from disk\n//\nfunction getCredentialsContext (cer) {\n  return crypto.createCredentials({\n    key:  fs.readFileSync(path.join(__dirname, 'certs', cer + '.key
 ')),\n    cert: fs.readFileSync(path.join(__dirname, 'certs', cer + '.crt'))\n  }).context;\n}\n\n//\n// A certificate per domain hash\n//\nvar certs = {\n  \"fobar.com\":  getCredentialsContext(\"foobar\"),\n  \"barbaz.com\": getCredentialsContext(\"barbaz\")\n};\n\n//\n// Proxy options\n//\n// This section assumes that myCert, myKey and myCa are defined (they are not\n// in this example). With a SNICallback, the proxy needs a default set of\n// certificates to use.\n//\nvar options = {\n  https: {\n    SNICallback: function (hostname) {\n      return certs[hostname];\n    },\n    cert: myCert,\n    key: myKey,\n    ca: [myCa]\n  },\n  hostnameOnly: true,\n  router: {\n    'fobar.com':  '127.0.0.1:8001',\n    'barbaz.com': '127.0.0.1:8002'\n  }\n};\n\n//\n// Create a standalone HTTPS proxy server\n//\nhttpProxy.createServer(options).listen(8001);\n\n//\n// Create the target HTTPS server\n//\nhttp.createServer(function (req, res) {\n  res.writeHead(200, { 'Content-Type': 'text/plain
 ' });\n  res.write('hello https\\n');\n  res.end();\n}).listen(8000);\n\n```\n\n### Proxying to HTTPS from HTTPS\nProxying from HTTPS to HTTPS is essentially the same as proxying from HTTPS to HTTP, but you must include the `target` option in when calling `httpProxy.createServer` or instantiating a new instance of `HttpProxy`.\n\n``` js\nvar fs = require('fs'),\n    https = require('https'),\n    httpProxy = require('http-proxy');\n    \nvar options = {\n  https: {\n    key: fs.readFileSync('path/to/your/key.pem', 'utf8'),\n    cert: fs.readFileSync('path/to/your/cert.pem', 'utf8')\n  },\n  target: {\n    https: true // This could also be an Object with key and cert properties\n  }\n};\n\n//\n// Create a standalone HTTPS proxy server\n//\nhttpProxy.createServer(8000, 'localhost', options).listen(8001);\n\n//\n// Create an instance of HttpProxy to use with another HTTPS server\n//\nvar proxy = new httpProxy.HttpProxy({ \n  target: {\n    host: 'localhost', \n    port: 8000,\n    http
 s: true\n  }\n});\n\nhttps.createServer(options.https, function (req, res) {\n  proxy.proxyRequest(req, res);\n}).listen(8002);\n\n//\n// Create the target HTTPS server for both cases\n//\nhttps.createServer(options.https, function (req, res) {\n  res.writeHead(200, { 'Content-Type': 'text/plain' });\n  res.write('hello https\\n');\n  res.end();\n}).listen(8000);\n```\n## Middleware\n\n`node-http-proxy` now supports connect middleware. Add middleware functions to your createServer call:\n\n``` js\nhttpProxy.createServer(\n  require('connect-gzip').gzip(),\n  9000, 'localhost'\n).listen(8000);\n```\n\nA regular request we receive is to support the modification of html/xml content that is returned in the response from an upstream server. \n\n[Harmon](https://github.com/No9/harmon/) is a stream based middleware plugin that is designed to solve that problem in the most effective way possible. \n\nIf you would like to handle errors passed to `next()` then attach a listener to the proxy:\
 n\n    server = httpProxy.createServer(\n      myMiddleWare,\n      9000, 'localhost'\n    ).listen(8000);\n\n    server.proxy.on('middlewareError', function (err, req, res) {\n      // handle the error here and call res.end()\n    });\n\n## Proxying WebSockets\nWebsockets are handled automatically when using `httpProxy.createServer()`, however, if you supply a callback inside the createServer call, you will need to handle the 'upgrade' proxy event yourself. Here's how:\n\n```js\n\nvar options = {\n    ....\n};\n\nvar server = httpProxy.createServer(\n    callback/middleware, \n    options\n);\n\nserver.listen(port, function () { ... });\nserver.on('upgrade', function (req, socket, head) {\n    server.proxy.proxyWebSocketRequest(req, socket, head);\n});\n```\n\nIf you would rather not use createServer call, and create the server that proxies yourself, see below:\n\n``` js\nvar http = require('http'),\n    httpProxy = require('http-proxy');\n    \n//\n// Create an instance of node-ht
 tp-proxy\n//\nvar proxy = new httpProxy.HttpProxy({\n  target: {\n    host: 'localhost',\n    port: 8000\n  }\n});\n\nvar server = http.createServer(function (req, res) {\n  //\n  // Proxy normal HTTP requests\n  //\n  proxy.proxyRequest(req, res);\n});\n\nserver.on('upgrade', function (req, socket, head) {\n  //\n  // Proxy websocket requests too\n  //\n  proxy.proxyWebSocketRequest(req, socket, head);\n});\n\nserver.listen(8080);\n```\n\n### with custom server logic\n\n``` js\nvar httpProxy = require('http-proxy')\n\nvar server = httpProxy.createServer(function (req, res, proxy) {\n  //\n  // Put your custom server logic here\n  //\n  proxy.proxyRequest(req, res, {\n    host: 'localhost',\n    port: 9000\n  });\n})\n\nserver.on('upgrade', function (req, socket, head) {\n  //\n  // Put your custom server logic here\n  //\n  server.proxy.proxyWebSocketRequest(req, socket, head, {\n    host: 'localhost',\n    port: 9000\n  });\n});\n\nserver.listen(8080);\n```\n\n### Configuring your
  Socket limits\n\nBy default, `node-http-proxy` will set a 100 socket limit for all `host:port` proxy targets. You can change this in two ways: \n\n1. By passing the `maxSockets` option to `httpProxy.createServer()`\n2. By calling `httpProxy.setMaxSockets(n)`, where `n` is the number of sockets you with to use. \n\n## POST requests and buffering\n\nexpress.bodyParser will interfere with proxying of POST requests (and other methods that have a request \nbody). With bodyParser active, proxied requests will never send anything to the upstream server, and \nthe original client will just hang. See https://github.com/nodejitsu/node-http-proxy/issues/180 for options.\n\n## Using node-http-proxy from the command line\nWhen you install this package with npm, a node-http-proxy binary will become available to you. Using this binary is easy with some simple options:\n\n``` js\nusage: node-http-proxy [options] \n\nAll options should be set with the syntax --option=value\n\noptions:\n  --port   P
 ORT       Port that the proxy server should run on\n  --target HOST:PORT  Location of the server the proxy will target\n  --config OUTFILE    Location of the configuration file for the proxy server\n  --silent            Silence the log output from the proxy server\n  -h, --help          You're staring at it\n```\n\n<br/>\n## Why doesn't node-http-proxy have more advanced features like x, y, or z?\n\nIf you have a suggestion for a feature currently not supported, feel free to open a [support issue][6]. node-http-proxy is designed to just proxy http requests from one server to another, but we will be soon releasing many other complimentary projects that can be used in conjunction with node-http-proxy.\n\n## Options\n\n### Http Proxy\n\n`createServer()` supports the following options\n\n```javascript\n{\n  forward: { // options for forward-proxy\n    port: 8000,\n    host: 'staging.com'\n  },\n  target : { // options for proxy target\n    port : 8000, \n    host : 'localhost',\n  };\n
   source : { // additional options for websocket proxying \n    host : 'localhost',\n    port : 8000,\n    https: true\n  },\n  enable : {\n    xforward: true // enables X-Forwarded-For\n  },\n  changeOrigin: false, // changes the origin of the host header to the target URL\n  timeout: 120000 // override the default 2 minute http socket timeout value in milliseconds\n}\n```\n\n## Run Tests\nThe test suite is designed to fully cover the combinatoric possibilities of HTTP and HTTPS proxying:\n\n1. HTTP --> HTTP\n2. HTTPS --> HTTP\n3. HTTPS --> HTTPS\n4. HTTP --> HTTPS\n\n```\nvows test/*-test.js --spec\nvows test/*-test.js --spec --https\nvows test/*-test.js --spec --https --target=https\nvows test/*-test.js --spec --target=https\n```\n\n<br/>\n### License\n\n(The MIT License)\n\nCopyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation
  files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n[0]: http://nodejitsu.com\n[1]: https://github.com/nodejitsu/node-http-pr
 oxy/blob/master/examples/websocket/websocket-proxy.js\n[2]: https://github.com/nodejitsu/node-http-proxy/blob/master/examples/http/proxy-https-to-http.js\n[3]: https://github.com/nodejitsu/node-http-proxy/tree/master/examples\n[4]: http://www.ietf.org/rfc/rfc2616.txt\n[5]: http://socket.io\n[6]: http://github.com/nodejitsu/node-http-proxy/issues\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/nodejitsu/node-http-proxy/issues"
-  },
-  "homepage": "https://github.com/nodejitsu/node-http-proxy",
-  "_id": "http-proxy@0.10.4",
-  "_from": "http-proxy@~0.10.3"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/README.md b/web/demos/package/node_modules/http-proxy/test/core/README.md
deleted file mode 100644
index 152e5c6..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# `test/core`
-
-`test/core` directory is a place where tests from node.js core go. They are
-here to ensure that node-http-proxy works just fine with all kinds of
-different situations, which are covered in core tests, but are not covered in
-our tests.
-
-All these tests require little modifications to make them test node-http-proxy,
-but we try to keep them as vanilla as possible.
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/common.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/common.js b/web/demos/package/node_modules/http-proxy/test/core/common.js
deleted file mode 100644
index 3f584a5..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/common.js
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var path = require('path');
-var assert = require('assert');
-
-exports.testDir = path.dirname(__filename);
-exports.fixturesDir = path.join(exports.testDir, 'fixtures');
-exports.libDir = path.join(exports.testDir, '../lib');
-exports.tmpDir = path.join(exports.testDir, 'tmp');
-exports.PORT = 12346;
-exports.PROXY_PORT = 1234567;
-
-if (process.platform === 'win32') {
-  exports.PIPE = '\\\\.\\pipe\\libuv-test';
-} else {
-  exports.PIPE = exports.tmpDir + '/test.sock';
-}
-
-var util = require('util');
-for (var i in util) exports[i] = util[i];
-//for (var i in exports) global[i] = exports[i];
-
-function protoCtrChain(o) {
-  var result = [];
-  for (; o; o = o.__proto__) { result.push(o.constructor); }
-  return result.join();
-}
-
-exports.indirectInstanceOf = function (obj, cls) {
-  if (obj instanceof cls) { return true; }
-  var clsChain = protoCtrChain(cls.prototype);
-  var objChain = protoCtrChain(obj);
-  return objChain.slice(-clsChain.length) === clsChain;
-};
-
-
-exports.ddCommand = function (filename, kilobytes) {
-  if (process.platform === 'win32') {
-    var p = path.resolve(exports.fixturesDir, 'create-file.js');
-    return '"' + process.argv[0] + '" "' + p + '" "' +
-           filename + '" ' + (kilobytes * 1024);
-  } else {
-    return 'dd if=/dev/zero of="' + filename + '" bs=1024 count=' + kilobytes;
-  }
-};
-
-
-exports.spawnPwd = function (options) {
-  var spawn = require('child_process').spawn;
-
-  if (process.platform === 'win32') {
-    return spawn('cmd.exe', ['/c', 'cd'], options);
-  } else {
-    return spawn('pwd', [], options);
-  }
-};
-
-
-// Turn this off if the test should not check for global leaks.
-exports.globalCheck = true;
-
-process.on('exit', function () {
-  if (!exports.globalCheck) return;
-  var knownGlobals = [setTimeout,
-                      setInterval,
-                      clearTimeout,
-                      clearInterval,
-                      console,
-                      Buffer,
-                      process,
-                      global];
-
-  if (global.setImmediate) {
-    knownGlobals.push(setImmediate);
-    knownGlobals.push(clearImmediate);
-  }
-
-  if (global.errno) {
-    knownGlobals.push(errno);
-  }
-
-  if (global.gc) {
-    knownGlobals.push(gc);
-  }
-
-  if (global.DTRACE_HTTP_SERVER_RESPONSE) {
-    knownGlobals.push(DTRACE_HTTP_SERVER_RESPONSE);
-    knownGlobals.push(DTRACE_HTTP_SERVER_REQUEST);
-    knownGlobals.push(DTRACE_HTTP_CLIENT_RESPONSE);
-    knownGlobals.push(DTRACE_HTTP_CLIENT_REQUEST);
-    knownGlobals.push(DTRACE_NET_STREAM_END);
-    knownGlobals.push(DTRACE_NET_SERVER_CONNECTION);
-    knownGlobals.push(DTRACE_NET_SOCKET_READ);
-    knownGlobals.push(DTRACE_NET_SOCKET_WRITE);
-  }
-
-  if (global.ArrayBuffer) {
-    knownGlobals.push(ArrayBuffer);
-    knownGlobals.push(Int8Array);
-    knownGlobals.push(Uint8Array);
-    knownGlobals.push(Int16Array);
-    knownGlobals.push(Uint16Array);
-    knownGlobals.push(Int32Array);
-    knownGlobals.push(Uint32Array);
-    knownGlobals.push(Float32Array);
-    knownGlobals.push(Float64Array);
-    knownGlobals.push(DataView);
-
-    if (global.Uint8ClampedArray) {
-      knownGlobals.push(Uint8ClampedArray);
-    }
-  }
-
-  for (var x in global) {
-    var found = false;
-
-    for (var y in knownGlobals) {
-      if (global[x] === knownGlobals[y]) {
-        found = true;
-        break;
-      }
-    }
-
-    if (!found) {
-      console.error('Unknown global: %s', x);
-      assert.ok(false, 'Unknown global found');
-    }
-  }
-});
-
-
-var mustCallChecks = [];
-
-
-function runCallChecks() {
-  var failed = mustCallChecks.filter(function (context) {
-    return context.actual !== context.expected;
-  });
-
-  failed.forEach(function (context) {
-    console.log('Mismatched %s function calls. Expected %d, actual %d.',
-                context.name,
-                context.expected,
-                context.actual);
-    console.log(context.stack.split('\n').slice(2).join('\n'));
-  });
-
-  if (failed.length) process.exit(1);
-}
-
-
-exports.mustCall = function (fn, expected) {
-  if (typeof expected !== 'number') expected = 1;
-
-  var context = {
-    expected: expected,
-    actual: 0,
-    stack: (new Error).stack,
-    name: fn.name || '<anonymous>'
-  };
-
-  // add the exit listener only once to avoid listener leak warnings
-  if (mustCallChecks.length === 0) process.on('exit', runCallChecks);
-
-  mustCallChecks.push(context);
-
-  return function () {
-    context.actual++;
-    return fn.apply(this, arguments);
-  };
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/pummel/test-http-upload-timeout.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/pummel/test-http-upload-timeout.js b/web/demos/package/node_modules/http-proxy/test/core/pummel/test-http-upload-timeout.js
deleted file mode 100644
index 74b458f..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/pummel/test-http-upload-timeout.js
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// This tests setTimeout() by having multiple clients connecting and sending
-// data in random intervals. Clients are also randomly disconnecting until there
-// are no more clients left. If no false timeout occurs, this test has passed.
-var common = require('../common'),
-    assert = require('assert'),
-    http = require('http'),
-    server = http.createServer(),
-    connections = 0;
-
-server.on('request', function (req, res) {
-  req.socket.setTimeout(1000);
-  req.socket.on('timeout', function () {
-    throw new Error('Unexpected timeout');
-  });
-  req.on('end', function () {
-    connections--;
-    res.writeHead(200);
-    res.end('done\n');
-    if (connections == 0) {
-      server.close();
-    }
-  });
-});
-
-server.listen(common.PORT, '127.0.0.1', function () {
-  for (var i = 0; i < 10; i++) {
-    connections++;
-
-    setTimeout(function () {
-      var request = http.request({
-        port: common.PROXY_PORT,
-        method: 'POST',
-        path: '/'
-      });
-
-      function ping() {
-        var nextPing = (Math.random() * 900).toFixed();
-        if (nextPing > 600) {
-          request.end();
-          return;
-        }
-        request.write('ping');
-        setTimeout(ping, nextPing);
-      }
-      ping();
-    }, i * 50);
-  }
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/run
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/run b/web/demos/package/node_modules/http-proxy/test/core/run
deleted file mode 100755
index adec53b..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/run
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env node
-/*
-  run.js: test runner for core tests
-
-  Copyright (c) 2011 Nodejitsu
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var fs = require('fs'),
-    path = require('path'),
-    spawn = require('child_process').spawn,
-    async = require('async'),
-    colors = require('colors'),
-    optimist = require('optimist');
-
-optimist.argv.color && (colors.mode = optimist.argv.color);
-
-var testTimeout = 15000;
-var results = {};
-
-function runTest(test, callback) {
-  var child = spawn(path.join(__dirname, 'run-single'), [ test ]);
-
-  var killTimeout = setTimeout(function () {
-    child.kill();
-    console.log('  ' + path.basename(test).yellow + ' timed out'.red);
-  }, testTimeout);
-
-  child.on('exit', function (exitCode) {
-    clearTimeout(killTimeout);
-
-    console.log('  ' + ((exitCode) ? 'āœ˜'.red : 'āœ”'.green) + ' ' +
-                path.basename(test) +
-                (exitCode ? (' (exit code: ' + exitCode + ')') : ''));
-    results[test] = { exitCode: exitCode };
-    callback();
-    //
-    // We don't want tests to be stopped after first failure, and that's what
-    // async does when it receives truthy value in callback.
-    //
-  });
-};
-
-var tests = process.argv.slice(2).filter(function (test) {
-  return test.substr(0, 2) != '--';
-});
-
-if (!tests.length) {
-  var pathPrefix = path.join(__dirname, 'simple');
-  tests = fs.readdirSync(pathPrefix).map(function (test) {
-    return path.join(pathPrefix, test);
-  });
-  //
-  // We only run simple tests by default.
-  //
-}
-
-console.log('Running tests:'.bold);
-async.forEachSeries(tests, runTest, function () {
-  var failed = [], ok = [];
-  for (var test in results) {
-    (results[test].exitCode != 0 ? failed : ok).push(test);
-  }
-
-  console.log('\nSummary:'.bold);
-  console.log(('  ' + ok.length + '\tpassed tests').green);
-  console.log(('  ' + failed.length + '\tfailed tests').red);
-});
-
-// vim:filetype=javascript
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/run-single
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/run-single b/web/demos/package/node_modules/http-proxy/test/core/run-single
deleted file mode 100755
index ae53588..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/run-single
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/env node
-/*
-  run-single.js: test runner for core tests
-
-  Copyright (c) 2011 Nodejitsu
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-//
-// Basic idea behind core test runner is to modify core tests as little as
-// possible. That's why we start up node-http-proxy here instead of embeeding
-// this code in tests.
-//
-// In most cases only modification to core tests you'll need is changing port
-// of http client to common.PROXY_PORT.
-//
-
-var path = require('path'),
-    spawn = require('child_process').spawn,
-    httpProxy = require('../../'),
-    common = require('./common');
-
-var test = process.argv[2],
-    testProcess;
-
-if (!test) {
-  return console.error('Need test to run');
-}
-
-console.log('Running test ' + test);
-
-var proxy = httpProxy.createServer(common.PORT, 'localhost');
-proxy.listen(common.PROXY_PORT);
-
-proxy.on('listening', function () {
-  console.log('Proxy server listening on ' + common.PROXY_PORT);
-  testProcess = spawn(process.argv[0], [ process.argv[2] ]);
-  testProcess.stdout.pipe(process.stdout);
-  testProcess.stderr.pipe(process.stderr);
-
-  testProcess.on('exit', function (code) {
-    process.exit(code);
-  });
-});
-
-process.on('SIGTERM', function () {
-  testProcess.kill();
-  process.exit(1);
-});
-
-// vim:filetype=javascript

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-chunked.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-chunked.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-chunked.js
deleted file mode 100644
index b1cbf0d..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-chunked.js
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-
-var UTF8_STRING = 'å—č¶Šå›½ę˜Æ前203å¹“č‡³å‰111幓存åœØäŗŽå²­å—地åŒŗēš„äø€äøŖ国家ļ¼Œ' +
-                  '国都位äŗŽē•Ŗē¦ŗļ¼Œē–†åŸŸåŒ…ę‹¬ä»Šå¤©äø­å›½ēš„å¹æäøœć€å¹æč„æäø¤ēœåŒŗēš„大éƒØ份地åŒŗļ¼Œē¦å»ŗēœć€ę¹–å—ć€' +
-                  'č“µå·žć€äŗ‘南ēš„äø€å°éƒØ份地åŒŗå’Œč¶Šå—ēš„北éƒØć€‚å—č¶Šå›½ę˜Æē§¦ęœē­äŗ”后ļ¼Œ' +
-                  'ē”±å—ęµ·éƒ”å°‰čµµä½—äŗŽå‰203å¹“čµ·å…µå…¼å¹¶ę”‚ęž—éƒ”å’Œč±”éƒ”åŽå»ŗē«‹ć€‚前196幓和前179幓ļ¼Œ' +
-                  'å—č¶Šå›½ę›¾å…ˆåŽäø¤ę¬”名义äøŠč‡£å±žäŗŽč„æ걉ļ¼Œęˆäøŗč„æ걉ēš„ā€œå¤–č‡£ā€ć€‚前112幓ļ¼Œ' +
-                  'å—č¶Šå›½ęœ«ä»£å›äø»čµµå»ŗå¾·äøŽč„æę±‰å‘ē”Ÿęˆ˜äŗ‰ļ¼Œč¢«ę±‰ę­¦åøäŗŽå‰111å¹“ę‰€ē­ć€‚' +
-                  'å—č¶Šå›½å…±å­˜åœØ93幓ļ¼ŒåŽ†ē»äŗ”代君äø»ć€‚å—č¶Šå›½ę˜Æ岭南地åŒŗēš„ē¬¬äø€äøŖęœ‰č®°č½½ēš„ę”æęƒå›½å®¶ļ¼Œ' +
-                  '采ē”Ø封å»ŗ制和郔åŽæ制并存ēš„制åŗ¦ļ¼Œå®ƒēš„å»ŗē«‹äæčƁäŗ†ē§¦ęœ«ä¹±äø–岭南地åŒŗē¤¾ä¼šē§©åŗēš„ēس定ļ¼Œ' +
-                  '꜉ꕈēš„ę”¹å–„äŗ†å²­å—地åŒŗč½åŽēš„ę”æę²»ć€ē»ęµŽēŽ°ēŠ¶ć€‚';
-
-var server = http.createServer(function (req, res) {
-  res.writeHead(200, {'Content-Type': 'text/plain; charset=utf8'});
-  res.end(UTF8_STRING, 'utf8');
-});
-server.listen(common.PORT, function () {
-  var data = '';
-  var get = http.get({
-    path: '/',
-    host: 'localhost',
-    port: common.PROXY_PORT
-  }, function (x) {
-    x.setEncoding('utf8');
-    x.on('data', function (c) {data += c});
-    x.on('error', function (e) {
-      throw e;
-    });
-    x.on('end', function () {
-      assert.equal('string', typeof data);
-      console.log('here is the response:');
-      assert.equal(UTF8_STRING, data);
-      console.log(data);
-      server.close();
-    });
-  });
-  get.on('error', function (e) {throw e});
-  get.end();
-
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-abort.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-abort.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-abort.js
deleted file mode 100644
index 78d0a6f..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-abort.js
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-
-var clientAborts = 0;
-
-var server = http.Server(function (req, res) {
-  console.log('Got connection');
-  res.writeHead(200);
-  res.write('Working on it...');
-
-  // I would expect an error event from req or res that the client aborted
-  // before completing the HTTP request / response cycle, or maybe a new
-  // event like "aborted" or something.
-  req.on('aborted', function () {
-    clientAborts++;
-    console.log('Got abort ' + clientAborts);
-    if (clientAborts === N) {
-      console.log('All aborts detected, you win.');
-      server.close();
-    }
-  });
-
-  // since there is already clientError, maybe that would be appropriate,
-  // since "error" is magical
-  req.on('clientError', function () {
-    console.log('Got clientError');
-  });
-});
-
-var responses = 0;
-var N = http.Agent.defaultMaxSockets - 1;
-var requests = [];
-
-server.listen(common.PORT, function () {
-  console.log('Server listening.');
-
-  for (var i = 0; i < N; i++) {
-    console.log('Making client ' + i);
-    var options = { port: common.PROXY_PORT, path: '/?id=' + i };
-    var req = http.get(options, function (res) {
-      console.log('Client response code ' + res.statusCode);
-
-      if (++responses == N) {
-        console.log('All clients connected, destroying.');
-        requests.forEach(function (outReq) {
-          console.log('abort');
-          outReq.abort();
-        });
-      }
-    });
-
-    requests.push(req);
-  }
-});
-
-process.on('exit', function () {
-  assert.equal(N, clientAborts);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-abort2.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-abort2.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-abort2.js
deleted file mode 100644
index eef05fb..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-abort2.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// libuv-broken
-
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-
-var server = http.createServer(function (req, res) {
-  res.end('Hello');
-});
-
-server.listen(common.PORT, function () {
-  var req = http.get({port: common.PROXY_PORT}, function (res) {
-    res.on('data', function (data) {
-      req.abort();
-      server.close();
-    });
-  });
-});
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-upload-buf.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-upload-buf.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-upload-buf.js
deleted file mode 100644
index 3b8e9ab..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-upload-buf.js
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-
-var N = 1024;
-var bytesRecieved = 0;
-var server_req_complete = false;
-var client_res_complete = false;
-
-var server = http.createServer(function (req, res) {
-  assert.equal('POST', req.method);
-
-  req.on('data', function (chunk) {
-    bytesRecieved += chunk.length;
-  });
-
-  req.on('end', function () {
-    server_req_complete = true;
-    console.log('request complete from server');
-    res.writeHead(200, {'Content-Type': 'text/plain'});
-    res.write('hello\n');
-    res.end();
-  });
-});
-server.listen(common.PORT);
-
-server.on('listening', function () {
-  var req = http.request({
-    port: common.PROXY_PORT,
-    method: 'POST',
-    path: '/'
-  }, function (res) {
-    res.setEncoding('utf8');
-    res.on('data', function (chunk) {
-      console.log(chunk);
-    });
-    res.on('end', function () {
-      client_res_complete = true;
-      server.close();
-    });
-  });
-
-  req.write(new Buffer(N));
-  req.end();
-
-  common.error('client finished sending request');
-});
-
-process.on('exit', function () {
-  assert.equal(N, bytesRecieved);
-  assert.equal(true, server_req_complete);
-  assert.equal(true, client_res_complete);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-upload.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-upload.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-upload.js
deleted file mode 100644
index fef706f..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-client-upload.js
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-
-var sent_body = '';
-var server_req_complete = false;
-var client_res_complete = false;
-
-var server = http.createServer(function (req, res) {
-  assert.equal('POST', req.method);
-  req.setEncoding('utf8');
-
-  req.on('data', function (chunk) {
-    console.log('server got: ' + JSON.stringify(chunk));
-    sent_body += chunk;
-  });
-
-  req.on('end', function () {
-    server_req_complete = true;
-    console.log('request complete from server');
-    res.writeHead(200, {'Content-Type': 'text/plain'});
-    res.write('hello\n');
-    res.end();
-  });
-});
-server.listen(common.PORT);
-
-server.on('listening', function () {
-  var req = http.request({
-    port: common.PROXY_PORT,
-    method: 'POST',
-    path: '/'
-  }, function (res) {
-    res.setEncoding('utf8');
-    res.on('data', function (chunk) {
-      console.log(chunk);
-    });
-    res.on('end', function () {
-      client_res_complete = true;
-      server.close();
-    });
-  });
-
-  req.write('1\n');
-  req.write('2\n');
-  req.write('3\n');
-  req.end();
-
-  common.error('client finished sending request');
-});
-
-process.on('exit', function () {
-  assert.equal('1\n2\n3\n', sent_body);
-  assert.equal(true, server_req_complete);
-  assert.equal(true, client_res_complete);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-contentLength0.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-contentLength0.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-contentLength0.js
deleted file mode 100644
index abc3747..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-contentLength0.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var http = require('http');
-
-// Simple test of Node's HTTP Client choking on a response
-// with a 'Content-Length: 0 ' response header.
-// I.E. a space character after the 'Content-Length' throws an `error` event.
-
-
-var s = http.createServer(function (req, res) {
-  res.writeHead(200, {'Content-Length': '0 '});
-  res.end();
-});
-s.listen(common.PORT, function () {
-
-  var request = http.request({ port: common.PROXY_PORT }, function (response) {
-    console.log('STATUS: ' + response.statusCode);
-    s.close();
-  });
-
-  request.end();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-eof-on-connect.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-eof-on-connect.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-eof-on-connect.js
deleted file mode 100644
index d02ee6d..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-eof-on-connect.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var net = require('net');
-var http = require('http');
-
-// This is a regression test for http://github.com/ry/node/issues/#issue/44
-// It is separate from test-http-malformed-request.js because it is only
-// reproduceable on the first packet on the first connection to a server.
-
-var server = http.createServer(function (req, res) {});
-server.listen(common.PORT);
-
-server.on('listening', function () {
-  net.createConnection(common.PROXY_PORT).on('connect', function () {
-    this.destroy();
-  }).on('close', function () {
-    server.close();
-  });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-extra-response.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-extra-response.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-extra-response.js
deleted file mode 100644
index a3d2746..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-extra-response.js
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-var net = require('net');
-
-// If an HTTP server is broken and sends data after the end of the response,
-// node should ignore it and drop the connection.
-// Demos this bug: https://github.com/ry/node/issues/680
-
-var body = 'hello world\r\n';
-var fullResponse =
-    'HTTP/1.1 500 Internal Server Error\r\n' +
-    'Content-Length: ' + body.length + '\r\n' +
-    'Content-Type: text/plain\r\n' +
-    'Date: Fri + 18 Feb 2011 06:22:45 GMT\r\n' +
-    'Host: 10.20.149.2\r\n' +
-    'Access-Control-Allow-Credentials: true\r\n' +
-    'Server: badly broken/0.1 (OS NAME)\r\n' +
-    '\r\n' +
-    body;
-
-var gotResponse = false;
-
-
-var server = net.createServer(function (socket) {
-  var postBody = '';
-
-  socket.setEncoding('utf8');
-
-  socket.on('data', function (chunk) {
-    postBody += chunk;
-
-    if (postBody.indexOf('\r\n') > -1) {
-      socket.write(fullResponse);
-      // omg, I wrote the response twice, what a terrible HTTP server I am.
-      socket.end(fullResponse);
-    }
-  });
-});
-
-
-server.listen(common.PORT, function () {
-  http.get({ port: common.PROXY_PORT }, function (res) {
-    var buffer = '';
-    console.log('Got res code: ' + res.statusCode);
-
-    res.setEncoding('utf8');
-    res.on('data', function (chunk) {
-      buffer += chunk;
-    });
-
-    res.on('end', function () {
-      console.log('Response ended, read ' + buffer.length + ' bytes');
-      assert.equal(body, buffer);
-      server.close();
-      gotResponse = true;
-    });
-  });
-});
-
-
-process.on('exit', function () {
-  assert.ok(gotResponse);
-});
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-head-request.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-head-request.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-head-request.js
deleted file mode 100644
index e8c203e..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-head-request.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-var util = require('util');
-
-
-var body = 'hello world\n';
-
-var server = http.createServer(function (req, res) {
-  common.error('req: ' + req.method);
-  res.writeHead(200, {'Content-Length': body.length});
-  res.end();
-  server.close();
-});
-
-var gotEnd = false;
-
-server.listen(common.PORT, function () {
-  var request = http.request({
-    port: common.PROXY_PORT,
-    method: 'HEAD',
-    path: '/'
-  }, function (response) {
-    common.error('response start');
-    response.on('end', function () {
-      common.error('response end');
-      gotEnd = true;
-    });
-  });
-  request.end();
-});
-
-process.on('exit', function () {
-  assert.ok(gotEnd);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-head-response-has-no-body-end.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-head-response-has-no-body-end.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-head-response-has-no-body-end.js
deleted file mode 100644
index 6d89bee..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-head-response-has-no-body-end.js
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// libuv-broken
-
-
-var common = require('../common');
-var assert = require('assert');
-
-var http = require('http');
-
-// This test is to make sure that when the HTTP server
-// responds to a HEAD request with data to res.end,
-// it does not send any body.
-
-var server = http.createServer(function (req, res) {
-  res.writeHead(200);
-  res.end('FAIL'); // broken: sends FAIL from hot path.
-});
-server.listen(common.PORT);
-
-var responseComplete = false;
-
-server.on('listening', function () {
-  var req = http.request({
-    port: common.PROXY_PORT,
-    method: 'HEAD',
-    path: '/'
-  }, function (res) {
-    common.error('response');
-    res.on('end', function () {
-      common.error('response end');
-      server.close();
-      responseComplete = true;
-    });
-  });
-  common.error('req');
-  req.end();
-});
-
-process.on('exit', function () {
-  assert.ok(responseComplete);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-head-response-has-no-body.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-head-response-has-no-body.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-head-response-has-no-body.js
deleted file mode 100644
index aa7a281..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-head-response-has-no-body.js
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-
-var http = require('http');
-
-// This test is to make sure that when the HTTP server
-// responds to a HEAD request, it does not send any body.
-// In this case it was sending '0\r\n\r\n'
-
-var server = http.createServer(function (req, res) {
-  res.writeHead(200); // broken: defaults to TE chunked
-  res.end();
-});
-server.listen(common.PORT);
-
-var responseComplete = false;
-
-server.on('listening', function () {
-  var req = http.request({
-    port: common.PROXY_PORT,
-    method: 'HEAD',
-    path: '/'
-  }, function (res) {
-    common.error('response');
-    res.on('end', function () {
-      common.error('response end');
-      server.close();
-      responseComplete = true;
-    });
-  });
-  common.error('req');
-  req.end();
-});
-
-process.on('exit', function () {
-  assert.ok(responseComplete);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-host-headers.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-host-headers.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-host-headers.js
deleted file mode 100644
index 2dae118..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-host-headers.js
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// libuv-broken
-
-
-var http = require('http'),
-    common = require('../common'),
-    assert = require('assert'),
-    httpServer = http.createServer(reqHandler);
-
-function reqHandler(req, res) {
-  console.log('Got request: ' + req.headers.host + ' ' + req.url);
-  if (req.url === '/setHostFalse5') {
-    assert.equal(req.headers.host, undefined);
-  } else {
-    assert.equal(req.headers.host, 'localhost:' + common.PROXY_PORT,
-                 'Wrong host header for req[' + req.url + ']: ' +
-                 req.headers.host);
-  }
-  res.writeHead(200, {});
-  //process.nextTick(function () { res.end('ok'); });
-  res.end('ok');
-}
-
-function thrower(er) {
-  throw er;
-}
-
-testHttp();
-
-function testHttp() {
-
-  console.log('testing http on port ' + common.PROXY_PORT + ' (proxied to ' +
-              common.PORT + ')');
-
-  var counter = 0;
-
-  function cb() {
-    counter--;
-    console.log('back from http request. counter = ' + counter);
-    if (counter === 0) {
-      httpServer.close();
-    }
-  }
-
-  httpServer.listen(common.PORT, function (er) {
-    console.error('listening on ' + common.PORT);
-
-    if (er) throw er;
-
-    http.get({ method: 'GET',
-      path: '/' + (counter++),
-      host: 'localhost',
-      //agent: false,
-      port: common.PROXY_PORT }, cb).on('error', thrower);
-
-    http.request({ method: 'GET',
-      path: '/' + (counter++),
-      host: 'localhost',
-      //agent: false,
-      port: common.PROXY_PORT }, cb).on('error', thrower).end();
-
-    http.request({ method: 'POST',
-      path: '/' + (counter++),
-      host: 'localhost',
-      //agent: false,
-      port: common.PROXY_PORT }, cb).on('error', thrower).end();
-
-    http.request({ method: 'PUT',
-      path: '/' + (counter++),
-      host: 'localhost',
-      //agent: false,
-      port: common.PROXY_PORT }, cb).on('error', thrower).end();
-
-    http.request({ method: 'DELETE',
-      path: '/' + (counter++),
-      host: 'localhost',
-      //agent: false,
-      port: common.PROXY_PORT }, cb).on('error', thrower).end();
-  });
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-many-keep-alive-connections.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-many-keep-alive-connections.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-many-keep-alive-connections.js
deleted file mode 100644
index 6b79619..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-many-keep-alive-connections.js
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-
-var expected = 10000;
-var responses = 0;
-var requests = 0;
-var connection;
-
-var server = http.Server(function (req, res) {
-  requests++;
-  assert.equal(req.connection, connection);
-  res.writeHead(200);
-  res.end('hello world\n');
-});
-
-server.once('connection', function (c) {
-  connection = c;
-});
-
-server.listen(common.PORT, function () {
-  var callee = arguments.callee;
-  var request = http.get({
-    port: common.PROXY_PORT,
-    path: '/',
-    headers: {
-      'Connection': 'Keep-alive'
-    }
-  }, function (res) {
-    res.on('end', function () {
-      if (++responses < expected) {
-        callee();
-      } else {
-        process.exit();
-      }
-    });
-  }).on('error', function (e) {
-    console.log(e.message);
-    process.exit(1);
-  });
-  request.agent.maxSockets = 1;
-});
-
-process.on('exit', function () {
-  assert.equal(expected, responses);
-  assert.equal(expected, requests);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-multi-line-headers.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-multi-line-headers.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-multi-line-headers.js
deleted file mode 100644
index e0eeb2c..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-multi-line-headers.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-
-var http = require('http');
-var net = require('net');
-
-var gotResponse = false;
-
-var server = net.createServer(function (conn) {
-  var body = 'Yet another node.js server.';
-
-  var response =
-      'HTTP/1.1 200 OK\r\n' +
-      'Connection: close\r\n' +
-      'Content-Length: ' + body.length + '\r\n' +
-      'Content-Type: text/plain;\r\n' +
-      ' x-unix-mode=0600;\r\n' +
-      ' name=\"hello.txt\"\r\n' +
-      '\r\n' +
-      body;
-
-  conn.write(response, function () {
-    conn.destroy();
-    server.close();
-  });
-});
-
-server.listen(common.PORT, function () {
-  http.get({host: '127.0.0.1', port: common.PROXY_PORT}, function (res) {
-    assert.equal(res.headers['content-type'],
-                 'text/plain;x-unix-mode=0600;name="hello.txt"');
-    gotResponse = true;
-  });
-});
-
-process.on('exit', function () {
-  assert.ok(gotResponse);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-proxy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-proxy.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-proxy.js
deleted file mode 100644
index fdddb3c..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-proxy.js
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-var url = require('url');
-
-var PROXY_PORT = common.PORT;
-var BACKEND_PORT = common.PORT + 1;
-
-var cookies = [
-  'session_token=; path=/; expires=Sun, 15-Sep-2030 13:48:52 GMT',
-  'prefers_open_id=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT'
-];
-
-var headers = {'content-type': 'text/plain',
-                'set-cookie': cookies,
-                'hello': 'world' };
-
-var backend = http.createServer(function (req, res) {
-  common.debug('backend request');
-  res.writeHead(200, headers);
-  res.write('hello world\n');
-  res.end();
-});
-
-var proxy = http.createServer(function (req, res) {
-  common.debug('proxy req headers: ' + JSON.stringify(req.headers));
-  var proxy_req = http.get({
-    port: BACKEND_PORT,
-    path: url.parse(req.url).pathname
-  }, function (proxy_res) {
-
-    common.debug('proxy res headers: ' + JSON.stringify(proxy_res.headers));
-
-    assert.equal('world', proxy_res.headers['hello']);
-    assert.equal('text/plain', proxy_res.headers['content-type']);
-    assert.deepEqual(cookies, proxy_res.headers['set-cookie']);
-
-    res.writeHead(proxy_res.statusCode, proxy_res.headers);
-
-    proxy_res.on('data', function (chunk) {
-      res.write(chunk);
-    });
-
-    proxy_res.on('end', function () {
-      res.end();
-      common.debug('proxy res');
-    });
-  });
-});
-
-var body = '';
-
-var nlistening = 0;
-function startReq() {
-  nlistening++;
-  if (nlistening < 2) return;
-
-  var client = http.get({
-    port: common.PROXY_PORT,
-    path: '/test'
-  }, function (res) {
-    common.debug('got res');
-    assert.equal(200, res.statusCode);
-
-    assert.equal('world', res.headers['hello']);
-    assert.equal('text/plain', res.headers['content-type']);
-    assert.deepEqual(cookies, res.headers['set-cookie']);
-
-    res.setEncoding('utf8');
-    res.on('data', function (chunk) { body += chunk; });
-    res.on('end', function () {
-      proxy.close();
-      backend.close();
-      common.debug('closed both');
-    });
-  });
-  common.debug('client req');
-}
-
-common.debug('listen proxy');
-proxy.listen(PROXY_PORT, startReq);
-
-common.debug('listen backend');
-backend.listen(BACKEND_PORT, startReq);
-
-process.on('exit', function () {
-  assert.equal(body, 'hello world\n');
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-response-close.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-response-close.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-response-close.js
deleted file mode 100644
index b92abb0..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-response-close.js
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-
-var gotEnd = false;
-
-var server = http.createServer(function (req, res) {
-  res.writeHead(200);
-  res.write('a');
-
-  req.on('close', function () {
-    console.error('aborted');
-    gotEnd = true;
-  });
-});
-server.listen(common.PORT);
-
-server.on('listening', function () {
-  console.error('make req');
-  http.get({
-    port: common.PROXY_PORT
-  }, function (res) {
-    console.error('got res');
-    res.on('data', function (data) {
-      console.error('destroy res');
-      res.destroy();
-      server.close();
-    });
-  });
-});
-
-process.on('exit', function () {
-  assert.ok(gotEnd);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-server-multiheaders.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-server-multiheaders.js b/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-server-multiheaders.js
deleted file mode 100644
index 6a5b8be..0000000
--- a/web/demos/package/node_modules/http-proxy/test/core/simple/test-http-server-multiheaders.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// Verify that the HTTP server implementation handles multiple instances
-// of the same header as per RFC2616: joining the handful of fields by ', '
-// that support it, and dropping duplicates for other fields.
-
-var common = require('../common');
-var assert = require('assert');
-var http = require('http');
-
-var srv = http.createServer(function (req, res) {
-  assert.equal(req.headers.accept, 'abc, def, ghijklmnopqrst');
-  assert.equal(req.headers.host, 'foo');
-  assert.equal(req.headers['x-foo'], 'bingo');
-  assert.equal(req.headers['x-bar'], 'banjo, bango');
-
-  res.writeHead(200, {'Content-Type' : 'text/plain'});
-  res.end('EOF');
-
-  srv.close();
-});
-
-srv.listen(common.PORT, function () {
-  http.get({
-    host: 'localhost',
-    port: common.PROXY_PORT,
-    path: '/',
-    headers: [
-      ['accept', 'abc'],
-      ['accept', 'def'],
-      ['Accept', 'ghijklmnopqrst'],
-      ['host', 'foo'],
-      ['Host', 'bar'],
-      ['hOst', 'baz'],
-      ['x-foo', 'bingo'],
-      ['x-bar', 'banjo'],
-      ['x-bar', 'bango']
-    ]
-  });
-});



[69/98] [abbrv] incubator-apex-malhar git commit: - MLHR-1880 #resolve fixed default value documentation for setMaxLength method.

Posted by da...@apache.org.
- MLHR-1880 #resolve fixed default value documentation for setMaxLength method.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/8cf1a2bb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/8cf1a2bb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/8cf1a2bb

Branch: refs/heads/master
Commit: 8cf1a2bb0ff7a192bbfe9a654997cb710a21a9dc
Parents: 6b43059
Author: Timothy Farkas <ti...@datatorrent.com>
Authored: Fri Oct 23 14:56:23 2015 -0700
Committer: Chandni Singh <cs...@apache.org>
Committed: Thu Nov 5 16:55:17 2015 -0800

----------------------------------------------------------------------
 .../lib/io/fs/AbstractFileOutputOperator.java   | 32 ++++++++++----------
 1 file changed, 16 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/8cf1a2bb/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
index 58062a1..3819a33 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
@@ -210,8 +210,8 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
   private int rotationCount;
 
   /**
-   * If a filter stream provider is set it is used to obtain the filter that will be applied to data before it is 
-   * stored in the file. If it null no filter is applied and data is written as is. Multiple filters can be chained 
+   * If a filter stream provider is set it is used to obtain the filter that will be applied to data before it is
+   * stored in the file. If it null no filter is applied and data is written as is. Multiple filters can be chained
    * together by using a filter stream chain provider.
    */
   protected FilterStreamProvider filterStreamProvider;
@@ -329,7 +329,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
       {
         FSFilterStreamContext streamContext = notification.getValue();
         if (streamContext != null) {
-          
+
           //FilterOutputStream filterStream = streamContext.getFilterStream();
           try {
             String filename = notification.getKey();
@@ -938,8 +938,8 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
   }
 
   /**
-   * Sets the maximum length of a an output file in bytes. By default this is null,
-   * if this is not null then the output operator is in rolling mode.
+   * Sets the maximum length of a an output file in bytes. By default this is Long.MAX_VALUE,
+   * if this is not Long.MAX_VALUE then the output operator is in rolling mode.
    * @param maxLength The maximum length of an output file in bytes, when in rolling mode.
    */
   public void setMaxLength(long maxLength)
@@ -1014,7 +1014,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
   }
 
   /**
-   * Get the filter stream provider 
+   * Get the filter stream provider
    * @return The filter stream provider.
    */
   public FilterStreamProvider getFilterStreamProvider()
@@ -1023,7 +1023,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
   }
 
   /**
-   * Set the filter stream provider. When a non-null provider is specified it will be used to supply the filter that 
+   * Set the filter stream provider. When a non-null provider is specified it will be used to supply the filter that
    * will be  applied to data before it is stored in the file.
    * @param filterStreamProvider The filter stream provider
    */
@@ -1049,15 +1049,15 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
 
   private class FSFilterStreamContext implements FilterStreamContext<FilterOutputStream>
   {
-    
+
     private FSDataOutputStream outputStream;
-    
+
     private FilterStreamContext filterContext;
     private NonCloseableFilterOutputStream outputWrapper;
-    
+
     public FSFilterStreamContext(FSDataOutputStream outputStream) throws IOException
     {
-      this.outputStream = outputStream;     
+      this.outputStream = outputStream;
       outputWrapper = new NonCloseableFilterOutputStream(outputStream);
       //resetFilter();
       initializeContext();
@@ -1085,7 +1085,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
         filterStreamProvider.reclaimFilterStreamContext(filterContext);
       }
     }
-    
+
     @SuppressWarnings("unchecked")
     public void initializeContext() throws IOException
     {
@@ -1093,7 +1093,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
         filterContext = filterStreamProvider.getFilterStreamContext(outputWrapper);
       }
     }
-    
+
     public void close() throws IOException
     {
       //finalizeContext();
@@ -1102,10 +1102,10 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
       }
       outputStream.close();
     }
-    
+
   }
-  
-  private static class NonCloseableFilterOutputStream extends FilterOutputStream 
+
+  private static class NonCloseableFilterOutputStream extends FilterOutputStream
   {
     public NonCloseableFilterOutputStream(OutputStream out)
     {


[98/98] [abbrv] incubator-apex-malhar git commit: Merge v3.2.0-incubating into master

Posted by da...@apache.org.
Merge v3.2.0-incubating into master


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/6aa1357a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/6aa1357a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/6aa1357a

Branch: refs/heads/master
Commit: 6aa1357a1da7ff3a8f6256c712fb929a2abf833d
Parents: ff0b0d0 1f5676b
Author: MalharJenkins <je...@datatorrent.com>
Authored: Thu Nov 26 21:42:58 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Thu Nov 26 21:50:32 2015 -0800

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/6aa1357a/pom.xml
----------------------------------------------------------------------


[60/98] [abbrv] incubator-apex-malhar git commit: APEX-137 #resolve

Posted by da...@apache.org.
APEX-137 #resolve


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/dda09b9a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/dda09b9a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/dda09b9a

Branch: refs/heads/master
Commit: dda09b9a1914c419f11685a33cbd5d4ae2db7bb1
Parents: ece1f98
Author: Andy Perlitch <an...@datatorrent.com>
Authored: Thu Oct 15 15:18:50 2015 -0700
Committer: Andy Perlitch <an...@datatorrent.com>
Committed: Thu Oct 15 15:20:47 2015 -0700

----------------------------------------------------------------------
 README.md | 19 ++-----------------
 1 file changed, 2 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/dda09b9a/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index df926a6..6465519 100644
--- a/README.md
+++ b/README.md
@@ -6,24 +6,9 @@ Malhar repository contains open source operator and codec library that can be us
 Contributing
 ------------
 
-This project welcomes new contributors.  If you would like to help make Malhar better by adding new features, enhancing existing features, or fixing bugs, here is how to do it.
+This project welcomes new contributors.  If you would like to help make Malhar better by adding new features, enhancing existing features, or fixing bugs, check out the [contributing guidelines](http://apex.incubator.apache.org/contributing.html).
 
-You acknowledge that your submissions on this repository are made pursuant the terms of the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) and constitute "Contributions," as defined therein, and you represent and warrant that you have the right and authority to do so.
-
-  * Fork Malhar into your own GitHub repository
-  * Create a topic branch with an appropriate name
-  * Write code, comments, tests in your repository
-  * Create a GitHub pull request from your repository, providing as many details about your changes as possible
-  * After we review and accept your request weā€™ll commit your code to the repository
-
-The submitted code must follow certain prescribed conventions and it is also recommended that it follow the prescribed style. The conventions and style are described in the [Coding Conventions and Style](docs/CodingConventionsAndStyle.md) document.
-
-When adding **new files**, please include the Apache v2.0 license header. From the top level directory:
-
-Run `mvn license:check -Dlicense.skip=false` to check correct header formatting.
-Run `mvn license:format -Dlicense.skip=false` to automatically add the header when missing.
-
-Thanks for contributing!
+You acknowledge that your submissions to this repository are made pursuant the terms of the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) and constitute "Contributions," as defined therein, and you represent and warrant that you have the right and authority to do so.
 
 Documentation
 -------------


[59/98] [abbrv] incubator-apex-malhar git commit: MLHR-1872 added license header in unit tests of parser and formatters

Posted by da...@apache.org.
MLHR-1872 added license header in unit tests of parser and formatters


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/ece1f984
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/ece1f984
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/ece1f984

Branch: refs/heads/master
Commit: ece1f984a64a4e202312dc743f615db917bf1f17
Parents: a7f5e11
Author: shubham <sh...@github.com>
Authored: Thu Oct 15 11:28:15 2015 +0530
Committer: shubham <sh...@github.com>
Committed: Thu Oct 15 11:29:20 2015 +0530

----------------------------------------------------------------------
 .../schema/formatter/CsvFormatterTest.java        | 18 ++++++++++++++++++
 .../schema/formatter/JsonFormatterTest.java       | 18 ++++++++++++++++++
 .../schema/formatter/XmlFormatterTest.java        | 18 ++++++++++++++++++
 .../contrib/schema/parser/CsvParserTest.java      | 18 ++++++++++++++++++
 .../contrib/schema/parser/JsonParserTest.java     | 18 ++++++++++++++++++
 .../contrib/schema/parser/XmlParserTest.java      | 18 ++++++++++++++++++
 6 files changed, 108 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ece1f984/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/CsvFormatterTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/CsvFormatterTest.java b/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/CsvFormatterTest.java
index 8ecc088..8183381 100644
--- a/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/CsvFormatterTest.java
+++ b/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/CsvFormatterTest.java
@@ -1,3 +1,21 @@
+/**
+ * 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 com.datatorrent.contrib.schema.formatter;
 
 import java.util.Date;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ece1f984/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/JsonFormatterTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/JsonFormatterTest.java b/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/JsonFormatterTest.java
index 4040c63..d377b07 100644
--- a/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/JsonFormatterTest.java
+++ b/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/JsonFormatterTest.java
@@ -1,3 +1,21 @@
+/**
+ * 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 com.datatorrent.contrib.schema.formatter;
 
 import java.io.ByteArrayOutputStream;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ece1f984/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/XmlFormatterTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/XmlFormatterTest.java b/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/XmlFormatterTest.java
index 2bc1aec..969da1e 100644
--- a/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/XmlFormatterTest.java
+++ b/contrib/src/test/java/com/datatorrent/contrib/schema/formatter/XmlFormatterTest.java
@@ -1,3 +1,21 @@
+/**
+ * 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 com.datatorrent.contrib.schema.formatter;
 
 import java.util.Date;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ece1f984/contrib/src/test/java/com/datatorrent/contrib/schema/parser/CsvParserTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/schema/parser/CsvParserTest.java b/contrib/src/test/java/com/datatorrent/contrib/schema/parser/CsvParserTest.java
index 3c31ad0..9e87496 100644
--- a/contrib/src/test/java/com/datatorrent/contrib/schema/parser/CsvParserTest.java
+++ b/contrib/src/test/java/com/datatorrent/contrib/schema/parser/CsvParserTest.java
@@ -1,3 +1,21 @@
+/**
+ * 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 com.datatorrent.contrib.schema.parser;
 
 import java.util.Date;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ece1f984/contrib/src/test/java/com/datatorrent/contrib/schema/parser/JsonParserTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/schema/parser/JsonParserTest.java b/contrib/src/test/java/com/datatorrent/contrib/schema/parser/JsonParserTest.java
index b453508..5a50ddb 100644
--- a/contrib/src/test/java/com/datatorrent/contrib/schema/parser/JsonParserTest.java
+++ b/contrib/src/test/java/com/datatorrent/contrib/schema/parser/JsonParserTest.java
@@ -1,3 +1,21 @@
+/**
+ * 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 com.datatorrent.contrib.schema.parser;
 
 import java.io.ByteArrayOutputStream;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/ece1f984/contrib/src/test/java/com/datatorrent/contrib/schema/parser/XmlParserTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/schema/parser/XmlParserTest.java b/contrib/src/test/java/com/datatorrent/contrib/schema/parser/XmlParserTest.java
index 4298951..c5f0407 100644
--- a/contrib/src/test/java/com/datatorrent/contrib/schema/parser/XmlParserTest.java
+++ b/contrib/src/test/java/com/datatorrent/contrib/schema/parser/XmlParserTest.java
@@ -1,3 +1,21 @@
+/**
+ * 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 com.datatorrent.contrib.schema.parser;
 
 import java.util.Date;


[68/98] [abbrv] incubator-apex-malhar git commit: Update Apex dependency to release 3.2.0 and fix stray version numbers.

Posted by da...@apache.org.
Update Apex dependency to release 3.2.0 and fix stray version numbers.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/6b430592
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/6b430592
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/6b430592

Branch: refs/heads/master
Commit: 6b4305925dad231ef3585c566ccb54ce99bf309e
Parents: bbbb7f8
Author: Thomas Weise <th...@datatorrent.com>
Authored: Fri Oct 30 22:46:34 2015 -0700
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Fri Oct 30 22:46:34 2015 -0700

----------------------------------------------------------------------
 benchmark/pom.xml         | 2 --
 demos/machinedata/pom.xml | 2 +-
 demos/pom.xml             | 1 -
 demos/r/pom.xml           | 2 +-
 pom.xml                   | 4 ++--
 5 files changed, 4 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/6b430592/benchmark/pom.xml
----------------------------------------------------------------------
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index de6d986..5d47426 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -36,8 +36,6 @@
   <description>Benchmark applications package</description>
 
   <properties>
-    <!-- change this if you desire to use a different version of DataTorrent -->
-    <apex.core.version>${project.version}</apex.core.version>
     <datatorrent.apppackage.classpath>lib/*.jar</datatorrent.apppackage.classpath>
     <maven.deploy.skip>false</maven.deploy.skip>
     <skipTests>true</skipTests>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/6b430592/demos/machinedata/pom.xml
----------------------------------------------------------------------
diff --git a/demos/machinedata/pom.xml b/demos/machinedata/pom.xml
index a55f78a..d82c169 100644
--- a/demos/machinedata/pom.xml
+++ b/demos/machinedata/pom.xml
@@ -38,7 +38,7 @@
     <dependency>
       <groupId>org.apache.apex</groupId>
       <artifactId>malhar-contrib</artifactId>
-      <version>${apex.core.version}</version>
+      <version>${project.version}</version>
       <exclusions>
         <exclusion>
           <groupId>*</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/6b430592/demos/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pom.xml b/demos/pom.xml
index 97382ba..8f0e55f 100644
--- a/demos/pom.xml
+++ b/demos/pom.xml
@@ -33,7 +33,6 @@
   <name>Apache Apex Malhar Demos</name>
 
   <properties>
-    <apex.core.version>3.2.0-incubating-SNAPSHOT</apex.core.version>
     <datatorrent.apppackage.classpath>lib/*.jar</datatorrent.apppackage.classpath>
     <semver.plugin.skip>true</semver.plugin.skip>
     <maven.deploy.skip>true</maven.deploy.skip>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/6b430592/demos/r/pom.xml
----------------------------------------------------------------------
diff --git a/demos/r/pom.xml b/demos/r/pom.xml
index 459cf2b..976135a 100644
--- a/demos/r/pom.xml
+++ b/demos/r/pom.xml
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.apex</groupId>
       <artifactId>malhar-contrib</artifactId>
-      <version>${apex.core.version}</version>
+      <version>${project.version}</version>
       <exclusions>
         <exclusion>
           <groupId>*</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/6b430592/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 207304e..21bf77d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.apex</groupId>
     <artifactId>apex</artifactId>
-    <version>3.2.0-incubating-SNAPSHOT</version>
+    <version>3.2.0-incubating</version>
   </parent>
 
   <artifactId>malhar</artifactId>
@@ -48,7 +48,7 @@
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <maven.deploy.skip>false</maven.deploy.skip>
-    <apex.core.version>3.2.0-incubating-SNAPSHOT</apex.core.version>
+    <apex.core.version>3.2.0-incubating</apex.core.version>
     <semver.plugin.skip>false</semver.plugin.skip>
   </properties>
 


[45/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/styles/jquery.pnotify.default.css
----------------------------------------------------------------------
diff --git a/web/demos/app/styles/jquery.pnotify.default.css b/web/demos/app/styles/jquery.pnotify.default.css
deleted file mode 100644
index 1e377cb..0000000
--- a/web/demos/app/styles/jquery.pnotify.default.css
+++ /dev/null
@@ -1,101 +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.
- */
-/*
-Document   : jquery.pnotify.default.css
-Created on : Nov 23, 2009, 3:14:10 PM
-Author     : Hunter Perrin
-Version    : 1.2.0
-Link       : http://pinesframework.org/pnotify/
-Description:
-	Default styling for Pines Notify jQuery plugin.
-*/
-/* -- Notice */
-.ui-pnotify {
-top: 25px;
-right: 25px;
-position: absolute;
-height: auto;
-/* Ensures notices are above everything */
-z-index: 9999;
-}
-/* Hides position: fixed from IE6 */
-html > body .ui-pnotify {
-position: fixed;
-}
-.ui-pnotify .ui-pnotify-shadow {
--webkit-box-shadow: 0px 2px 10px rgba(50, 50, 50, 0.5);
--moz-box-shadow: 0px 2px 10px rgba(50, 50, 50, 0.5);
-box-shadow: 0px 2px 10px rgba(50, 50, 50, 0.5);
-}
-.ui-pnotify-container {
-background-position: 0 0;
-padding: .8em;
-height: 100%;
-margin: 0;
-}
-.ui-pnotify-sharp {
--webkit-border-radius: 0;
--moz-border-radius: 0;
-border-radius: 0;
-}
-.ui-pnotify-closer, .ui-pnotify-sticker {
-float: right;
-margin-left: .2em;
-}
-.ui-pnotify-title {
-display: block;
-margin-bottom: .4em;
-}
-.ui-pnotify-text {
-display: block;
-}
-.ui-pnotify-icon, .ui-pnotify-icon span {
-display: block;
-float: left;
-margin-right: .2em;
-}
-/* -- History Pulldown */
-.ui-pnotify-history-container {
-position: absolute;
-top: 0;
-right: 18px;
-width: 70px;
-border-top: none;
-padding: 0;
--webkit-border-top-left-radius: 0;
--moz-border-top-left-radius: 0;
-border-top-left-radius: 0;
--webkit-border-top-right-radius: 0;
--moz-border-top-right-radius: 0;
-border-top-right-radius: 0;
-/* Ensures history container is above notices. */
-z-index: 10000;
-}
-.ui-pnotify-history-container .ui-pnotify-history-header {
-padding: 2px;
-}
-.ui-pnotify-history-container button {
-cursor: pointer;
-display: block;
-width: 100%;
-}
-.ui-pnotify-history-container .ui-pnotify-history-pulldown {
-display: block;
-margin: 0 auto;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/styles/main.css
----------------------------------------------------------------------
diff --git a/web/demos/app/styles/main.css b/web/demos/app/styles/main.css
deleted file mode 100644
index 70d62d9..0000000
--- a/web/demos/app/styles/main.css
+++ /dev/null
@@ -1,251 +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.
- */
-body {
-    padding-top: 60px;
-    padding-bottom: 40px;
-}
-.sidebar-nav {
-    padding: 9px 0;
-}
-
-.navbar .nav > li {
-    line-height:28px;
-}
-
-@media (max-width: 980px) {
-    /* Enable use of floated navbar text */
-    .navbar-text.pull-right {
-        float: none;
-        padding-left: 5px;
-        padding-right: 5px;
-    }
-}
-
-[class^="icon-"], [class*=" icon-"] {
-    background-image: url("../images/glyphicons-halflings.png");
-}
-
-h4.ui-pnotify-title { 
-    display: inline;
-    font-size:16px;
-}
-.ui-pnotify-text {
-    font-size:12px;
-}
-.ui-pnotify-icon, .ui-pnotify-icon span {
-    display: inline-block;
-    float:none;
-}
-
-.app-title {
-    margin-top: 0;
-}
-
-.btn-view-console {
-    margin-left: 20px;
-}
-
-.twitter-grid {
-    border: 1px solid rgb(212,212,212);
-    height: 350px;
-    width: 400px;
-}
-
-.mobile-grid {
-    border: 1px solid rgb(212,212,212);
-    height: 450px;
-}
-
-.mobile-grid-remove {
-    text-align: center;
-    cursor: pointer;
-}
-
-.params-nav select {
-    width: 100%;
-}
-
-.chart-title {
-    text-align: center;
-}
-
-.line-chart {
-    height: 300px;
-}
-
-.network-response {
-    height: 30px;
-}
-
-.network-response-label {
-    display: inline-block;
-    font-weight: bold;
-    vertical-align: middle;
-}
-
-.network-response-stat {
-    display: inline-block;
-    width: 100px;
-    overflow: hidden;
-    vertical-align: middle;
-}
-
-.network-response-loading {
-    background-color: yellow;
-}
-
-.bar-chart rect.bar-chart-p {
-    fill: #05EEFA;
-}
-
-.bar-chart rect.bar-chart-c {
-    fill: transparent;
-    stroke: red;
-    stroke-width: 1px;
-    width: 100%;
-}
-
-.bar-chart rect {
-    fill: #05EEFA;
-}
-
-.bar-chart text {
-    fill: black;
-}
-
-.chart-ctnr {
-    height: 300px;
-}
-
-.gauge {
-    margin-top: 15px;
-}
-
-.marker-label {
-    color: red;
-    background-color: white;
-    font-family: "Lucida Grande", "Arial", sans-serif;
-    font-size: 10px;
-    font-weight: bold;
-    text-align: center;
-    width: 50px;
-    border: 1px solid black;
-    white-space: nowrap;
-}
-
-.widget-response {
-    max-height: 340px;
-    overflow:auto;
-}
-
-.overview-item {
-    padding-top: 14px;
-}
-
-.overview-item .key {
-    color: #888;
-    letter-spacing: 0.1em;
-    display: block;
-    margin-bottom: 5px;
-}
-
-.overview-item .value {
-    font-weight: bold;
-    color: black;
-    font-size: 140%;
-    display: block;
-}
-
-.navbar .brand {
-    background: url("../images/main_banner.png") no-repeat scroll 0 0;
-    padding: 0;
-    width: 241px;
-    height: 48px;
-    margin-left:-15px;
-}
-
-.navbar-inverse .nav .active > a, .navbar-inverse .nav .active > a:hover, .navbar-inverse .nav .active > a:focus {
-    background: #11506d;
-}
-
-.navbar .navbar-inner {
-    background: #11506d;
-}
-
-/* Fraud Styles */
-.generate-tx-btn-wrap.span3, .generate-tx-desc.span9 {
-    display:inline-block;
-    vertical-align: middle;
-    float:none;
-}
-.generate-tx-btn-wrap.span3 {
-    text-align:center;
-}
-#alertDisplayBox {
-    padding:10px;
-    height:418px;
-    overflow:auto;
-}
-article.alert-msg {
-    padding: 10px 25px;
-    border-radius: 4px;
-    color: #000;
-    text-shadow: 0px 1px 0 rgba(255, 255, 255, 0.6);
-    margin-bottom:10px;
-}
-article.alert-msg.medium, button.generate-medium {
-    background: #FF7000;
-    box-shadow: inset 0 -2px 20px 0 #EEBC6B, 0px 1px 3px rgba(0,0,0,0.3);
-}
-button.generate-medium:hover, button.generate-medium:focus {
-  background: #FF970B;
-}
-article.alert-msg.high, button.generate-high {
-  background: #FF5E54;
-  box-shadow: inset 0 -2px 20px 0 #D14D45, 0px 1px 3px rgba(0, 0, 0, 0.3);
-}
-button.generate-high {
-  color:white;
-  text-shadow: 0 1px 0 black;
-}
-button.generate-high:hover, button.generate-high:focus {
-  background: #FF4A31;
-  color:white;
-  text-shadow: 0 1px 0 black;
-}
-article.alert-msg.low, button.generate-low {
-    background: #FFF971;
-    box-shadow:inset 0 -4px 30px -6px #EED306, 0px 1px 3px rgba(0, 0, 0, 0.3);
-}
-button.generate-low:hover, button.generate-low:focus {
-  background: #FFE00A;
-}
-article.alert-msg h1{
-    font-size:18px;
-    margin:0;
-}
-article.alert-msg h1 span.alertType {
-    
-}
-button.clearFraudsBtn {
-  float:right;
-}
-a.svg-link {
-    text-decoration: underline;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/views/dimensions.html
----------------------------------------------------------------------
diff --git a/web/demos/app/views/dimensions.html b/web/demos/app/views/dimensions.html
deleted file mode 100644
index f71edd0..0000000
--- a/web/demos/app/views/dimensions.html
+++ /dev/null
@@ -1,185 +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.
-
--->
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <h2 class="app-title">
-                Ads Dimensions
-                <a ng-show="appURL" href="{{appURL}}" class="btn btn-primary btn-view-console" target="_blank">View Console</a>
-            </h2>
-        </div>
-    </div>
-    <div class="row-fluid">
-        <p class="well span7">
-            This demo application monitors the online ads dimensions in real time. The views and clicks of ads are being counted in real time. Three dimensions are being tracked, namely publisher, advertiser, and ad unit. In real time all the dimensions are computed for views (cost) and clicks (revenue). This enables a participant in an real time ad exchange to run applications to optimize the performance of their bids.
-        </p>
-        <div class="span5">
-            <span widgets-stat="" app="app"></span>
-        </div><!--/span-->
-    </div>
-
-    <div class="row-fluid">
-        <div class="span2">
-            <div class="well sidebar-nav">
-                <ul class="nav nav-list params-nav">
-                    <li class="nav-header">Dimensions</li>
-                    <form method="GET">
-                        <li>
-                            <label for="publisher">Publisher ID:</label>
-                            <select ng-model="publisher" id="publisher" ng-options="item.label for item in select.publisher">
-                            </select>
-                        </li>
-
-                        <li>
-                            <label for="advertiser">Advertiser ID:</label>
-                            <select ng-model="advertiser" id="advertiser" ng-options="item.label for item in select.advertiser">
-                            </select>
-                        </li>
-
-                        <li>
-                            <label for="adunit">Ad Unit:</label>
-                            <select ng-model="adunit" id="adunit" ng-options="item.label for item in select.adunit">
-                            </select>
-                        </li>
-
-                        <li>
-                            <label for="pollInterval">Poll Interval:</label>
-                            <div class="input-append">
-                                <input type="number" ng-model="pollInterval" min="1" id="pollInterval" class="input-small"/>
-                                <span class="add-on">Sec</span>
-                            </div>
-                        </li>
-
-                        <li>
-                            <label for="lookback">Look Back:</label>
-                            <div class="input-append">
-                                <input type="number" ng-model="lookback" min="2" id="lookback" class="input-small"/>
-                                <span class="add-on">Minutes</span>
-                            </div>
-                        </li>
-
-                        <li>
-                            <div class="checkbox">
-                                <label>
-                                    <input type="checkbox" ng-model="includeLastMinute"> Include Last Minute
-                                </label>
-                            </div>
-                        </li>
-                    </form>
-                </ul>
-            </div><!--/.well -->
-        </div><!--/span-->
-        <div class="span10">
-            <div class="row-fluid">
-                <div class="span12 network-response">
-                    <span ng-show="lastResponse">
-                        <span class="network-response-label">Network Last Response:</span>
-                        <span class="network-response-stat">{{lastResponse|date:'HH:mm:ss'}}</span>
-                    </span>
-                    <span ng-show="responseTime">
-                        <span class="network-response-label" >Network Response Time:</span>
-                        <span class="network-response-stat">{{responseTime|number}} ms</span>
-                    </span>
-                    <span class="network-response-label network-response-loading" ng-show="requestProgress > 1">
-                        Loading: {{requestProgress|number}} sec
-                    </span>
-
-                </div>
-            </div>
-            <div class="row-fluid">
-                <div class="span6">
-                    <h4 class="chart-title">Cost Chart</h4>
-                    <line-chart chart="costChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-                <div class="span6">
-                    <h4 class="chart-title">Revenue Chart</h4>
-                    <line-chart chart="revenueChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-            </div><!--/row-->
-            <div class="row-fluid">
-                <div class="span6">
-                    <h4 class="chart-title">Impressions Chart</h4>
-                    <line-chart chart="impressionsChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-                <div class="span6">
-                    <h4 class="chart-title">Clicks Chart</h4>
-                    <line-chart chart="clicksChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-            </div><!--/row-->
-            <div class="row-fluid">
-                <div class="span6">
-                    <h4 class="chart-title">Ctr Chart</h4>
-                    <line-chart chart="ctrChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-                <div class="span6">
-                    <h4 class="chart-title">Margin Chart</h4>
-                    <line-chart chart="marginChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-            </div><!--/row-->
-            <div class="row-fluid">
-                <div class="span6">
-                    <h4 class="chart-title">Server Polling Statistics</h4>
-                    <div>
-                        <span class="network-response-label">Network Last Response:</span>
-                        <span class="network-response-stat">{{lastResponse|date:'HH:mm:ss'}}</span>
-                        <span class="network-response-label network-response-loading" ng-show="requestProgress > 1">
-                            Loading: {{requestProgress|number}} sec
-                        </span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Network Response Time:</span>
-                        <span>{{responseTime|number}} ms</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label" >Minutes cached:</span>
-                        <span>{{minutesCached}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label" >Minutes received:</span>
-                        <span>{{minutesReceived}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label" >Keys Queried:</span>
-                        <span>{{response.keysQueried}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label" >Last Key Queried:</span>
-                        <span>{{response.lastKeyQueried}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label" >Last Key with Data:</span>
-                        <span>{{response.lastKey}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Redis Query Time:</span>
-                        <span>{{response.queryTime|number}} ms</span>
-                    </div>
-                </div><!--/span-->
-            </div><!--/row-->
-        </div><!--/span-->
-    </div><!--/row-->
-
-    <hr>
-
-    <footer>
-        <p>&copy; DataTorrent 2014</p>
-    </footer>
-</div><!--/.fluid-container-->
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/views/fraud.html
----------------------------------------------------------------------
diff --git a/web/demos/app/views/fraud.html b/web/demos/app/views/fraud.html
deleted file mode 100644
index f9d2156..0000000
--- a/web/demos/app/views/fraud.html
+++ /dev/null
@@ -1,84 +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.
-
--->
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-			<h2 class="app-title">
-				Fraud Detection
-				<a href="{{appURL}}" class="btn btn-primary" target="_blank" style="margin-left: 20px;">View Console</a>
-			</h2>
-		</div>
-	</div>
-	<div class="row-fluid">
-		<p class="well span7">
-			This demo application processes a stream of credit card transactions, coming from multiple Point Of Sale terminals. The application computes statistics and applies several fraud evaluators to recognize potential fraud attempts. In particular, it looks for well-known fraud patterns, like small purchase followed by the big purchase at the same sales terminal, unusually big purchases per particular merchant or terminal, usage of multiple cards issued to different customers by the same bank at the same terminal and more. Alerts are generated in real-time, also all computed data and alerts saved into MongoDB for subsequent analysis. While influenced by real customers, because of privacy concerns, the data for this demo is automatically generated.
-		</p>
-		<div class="span5">
-			<span widgets-stat="" app="app"></span>
-		</div><!--/span-->
-	</div>
-
-	<h3>Statistics</h3>
-	<div class="row-fluid">
-		<div class="well span3 overview-item" ng-repeat="stat in stats">
-			<div class="key">{{stat.label}}</div>
-			<div class="value">{{stat.value}}</div>
-		</div>
-	</div>
-    
-	<div class="row-fluid">
-		<div class="span5">
-			<h3>Generate Transactions</h3>
-			<div class="row-fluid" class="generate-tx-div" ng-repeat="action in actions">
-				<div class="span3 generate-tx-btn-wrap">
-					<button class="btn generate-{{action.severity}}" ng-click="action.generateTxns()">generate</button>
-				</div><div class="span9 generate-tx-desc">
-					<h4>Fraud Type {{action.id}} <span class="lead">({{action.subtitle}})</span></h4>
-					<p>{{action.description}}</p>    
-				</div>
-			</div>
-		</div>
-		<div class="span7">
-			<h3>User Alerts Triggered <button class="btn clearFraudsBtn" ng-click="clearFrauds()">clear</button></h3>
-			<div class="well" id="alertDisplayBox">
-				
-			</div>
-		</div>
-	</div>
-
-	<hr>
-
-	<footer>
-		<p>&copy; DataTorrent 2014</p>
-	</footer>
-</div><!--/.fluid-container-->
-<div id="txn-modal" class="modal hide fade" role="dialog" style="display:none;">
-	<div class="modal-header">
-	    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">Ɨ</button>
-	    <h3>Transaction</h3>
-	  </div>
-	  <div class="modal-body">
-		  
-	  </div>
-	  <div class="modal-footer">
-	    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
-	  </div>
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/views/machine.html
----------------------------------------------------------------------
diff --git a/web/demos/app/views/machine.html b/web/demos/app/views/machine.html
deleted file mode 100644
index d051295..0000000
--- a/web/demos/app/views/machine.html
+++ /dev/null
@@ -1,193 +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.
-
--->
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <h2 class="app-title">
-                Large Scale Monitoring and Analysis
-                <a ng-show="appURL" href="{{appURL}}" class="btn btn-primary btn-view-console" target="_blank">View Console</a>
-            </h2>
-        </div>
-    </div>
-    <div class="row-fluid">
-        <p class="well span7">
-            This demo application monitors samples of CPU, RAM and HD utilization coming from a heterogeneous installed base of multiple devices located at multiple data centers and used by different customers. The application receives sensor events from each device including the device ID, device model, the OS version, other installed application versions, and customer attributes.  It tracks the status of the devices across every combination of dimensions. This allows both immediate analysis and real-time monitoring of anomalies - e.g. notify when average CPU utilization exceeds 70% for particular combination of model, customer and software. While influenced by real customers, because of security concerns, this demo uses randomly generated data.
-        </p>
-        <div class="span5">
-            <span widgets-stat="" app="app"></span>
-        </div><!--/span-->
-    </div>
-
-    <div class="row-fluid">
-        <div class="span2">
-            <div class="well sidebar-nav">
-                <ul class="nav nav-list params-nav">
-                    <li class="nav-header">Dimensions</li>
-                    <form method="GET">
-                        <li>
-                        <label for="customer">Customer ID:</label>
-                        <select ng-model="customer" id="customer" ng-options="item.label for item in select.customer">
-                        </select>
-                        </li>
-
-                        <li>
-                        <label for="product">Product ID:</label>
-                        <select ng-model="product" id="product" ng-options="item.label for item in select.product">
-                        </select>
-                        </li>
-
-                        <li>
-                        <label for="os">Product OS:</label>
-                        <select ng-model="os" id="os" ng-options="item.label for item in select.os">
-                        </select>
-                        </li>
-
-                        <li>
-                        <label for="software1">Software1 Ver:</label>
-                        <select ng-model="software1" id="software1" ng-options="item.label for item in select.software1">
-                        </select>
-                        </li>
-
-                        <li>
-                        <label for="software2">Software2 Ver:</label>
-                        <select ng-model="software2" id="software2" ng-options="item.label for item in select.software2">
-                        </select>
-                        </li>
-
-                        <li>
-                        <label for="deviceId">Device ID:</label>
-                        <select ng-model="deviceId" id="deviceId" ng-options="item.label for item in select.deviceId">
-                        </select>
-                        </li>
-
-                        <li>
-                        <label for="lookback">Look Back:</label>
-                        <div class="input-append">
-                            <input type="number" ng-model="lookback" min="2" id="lookback" class="input-small"/>
-                            <span class="add-on">Minutes</span>
-                        </div>
-                        </li>
-                        <!--
-                        <li>
-                            <input ng-click="reload();" type="submit" value="reload" class="btn btn-primary" />
-                        </li>
-                        -->
-
-                    </form>
-                </ul>
-            </div><!--/.well -->
-        </div><!--/span-->
-        <div class="span10">
-            <div class="row-fluid">
-                <div class="span12 network-response">
-                    <span ng-show="lastResponse">
-                        <span class="network-response-label">Network Last Response:</span>
-                        <span class="network-response-stat">{{lastResponse|date:'HH:mm:ss'}}</span>
-                    </span>
-                    <span ng-show="responseTime">
-                        <span class="network-response-label" >Network Response Time:</span>
-                        <span class="network-response-stat">{{responseTime|number}} ms</span>
-                    </span>
-                    <span class="network-response-label network-response-loading" ng-show="requestProgress > 1">
-                        Loading: {{requestProgress|number}} sec
-                    </span>
-
-                </div>
-            </div>
-            <div class="row-fluid">
-                <div class="span8">
-                    <h4 class="chart-title">CPU Usage (%)</h4>
-                    <line-chart chart="cpuChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-                <div class="span4">
-                    <h4>Current CPU Usage (%)</h4>
-                    <span gauge="" min="0" max="100" value="cpu" label="CPU" class="gauge"></span>
-                </div><!--/span-->
-            </div><!--/row-->
-            <div class="row-fluid">
-                <div class="span8">
-                    <h4 class="chart-title">RAM Usage (%)</h4>
-                    <line-chart chart="ramChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-                <div class="span4">
-                    <h4>Current RAM Usage (%)</h4>
-                    <span gauge="" min="0" max="100" value="ram" label="RAM" class="gauge"></span>
-                </div><!--/span-->
-            </div><!--/row-->
-            <div class="row-fluid">
-                <div class="span8">
-                    <h4 class="chart-title">HDD Usage (%)</h4>
-                    <line-chart chart="hddChart" class="line-chart"></line-chart>
-                </div><!--/span-->
-                <div class="span4">
-                    <h4>Current HDD Usage (%)</h4>
-                    <span gauge="" min="0" max="100" value="hdd" label="HDD" class="gauge"></span>
-                </div><!--/span-->
-            </div><!--/row-->
-            <div class="row-fluid">
-                <div class="span8">
-                    <h4 class="chart-title">Server Polling Statistics</h4>
-                    <div>
-                        <span class="network-response-label">Network Last Response:</span>
-                        <span class="network-response-stat">{{lastResponse|date:'HH:mm:ss'}}</span>
-                        <span class="network-response-label network-response-loading" ng-show="requestProgress > 1">
-                            Loading: {{requestProgress|number}} sec
-                        </span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Network Response Time:</span>
-                        <span>{{responseTime|number}} ms</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label" >Minutes cached:</span>
-                        <span>{{minutesCached}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label" >Minutes received:</span>
-                        <span>{{minutesReceived}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label" >Keys Queried:</span>
-                        <span>{{response.keysQueried}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label" >Last Key Queried:</span>
-                        <span>{{response.lastKeyQueried}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label" >Last Key with Data:</span>
-                        <span>{{response.lastKey}}</span>
-                    </div>
-                    <div>
-                        <span class="network-response-label">Redis Query Time:</span>
-                        <span>{{response.queryTime|number}} ms</span>
-                    </div>
-                </div><!--/span-->
-            </div><!--/row-->
-        </div><!--/span-->
-    </div><!--/row-->
-
-    <hr>
-
-    <footer>
-        <p>&copy; DataTorrent 2014</p>
-    </footer>
-</div><!--/.fluid-container-->
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/views/mobile.html
----------------------------------------------------------------------
diff --git a/web/demos/app/views/mobile.html b/web/demos/app/views/mobile.html
deleted file mode 100644
index a342ec1..0000000
--- a/web/demos/app/views/mobile.html
+++ /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.
-
--->
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <h2 class="app-title">
-                Mobile Geo-Location Monitoring
-                <a ng-show="appURL" href="{{appURL}}" class="btn btn-primary btn-view-console" target="_blank">View Console</a>
-            </h2>
-        </div>
-    </div>
-    <div class="row-fluid">
-        <p class="well span7">
-            This demo application highlights the ability to register specific mobile numbers and start receiving geo-location updates in real-time. While the events arrive at high volume of 50k to 250k updates per second, but the application only pushes out the updates for the registered phones, making it possible to visualize using simple web user interface. While influenced by real customers, because of privacy concerns, the data for this demo is automatically generated.
-        </p>
-        <div class="span5">
-            <span widgets-stat="" app="app"></span>
-        </div><!--/span-->
-    </div>
-    <div class="row-fluid">
-        <div class="span3" ng-controller="MobileGridControlller">
-            <h4>Locations</h4>
-
-            <div class="form-horizontal">
-                <input type="number" min="5550000" max="5559999" ng-model="phone">
-                <button ng-click="addPhone();" type="button" class="btn btn-default">Add</button>
-            </div>
-
-            <div class="mobile-grid" ng-grid="gridOptions"></div>
-        </div>
-        <div class="span9" ng-controller="MapController">
-            <div class="google-map" style="height:550px;"
-                 center="position.coords"
-                 zoom="zoomProperty"
-                 markers="markersProperty"
-                 latitude="clickedLatitudeProperty"
-                 longitude="clickedLongitudeProperty"
-                 mark-click="false"
-                 draggable="true"
-                 fit="false"
-                 events="eventsProperty"
-                 style="height: 500px; width: 100%">
-            </div>
-        </div>
-    </div>
-
-    <hr>
-
-    <footer>
-        <p>&copy; DataTorrent 2014</p>
-    </footer>
-</div><!--/.fluid-container-->
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/views/stat.html
----------------------------------------------------------------------
diff --git a/web/demos/app/views/stat.html b/web/demos/app/views/stat.html
deleted file mode 100644
index 4aa15a4..0000000
--- a/web/demos/app/views/stat.html
+++ /dev/null
@@ -1,32 +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.
-
--->
-<div class="overview-item well span4">
-    <div class="key">Events/sec</div>
-    <div class="value">{{totalEmitted|number}}</div>
-</div>
-<div class="overview-item well span5">
-    <div class="key">Total Events</div>
-    <div class="value">{{totalProcessed|number}}</div>
-</div>
-<div class="overview-item well span3">
-    <div class="key">Up For</div>
-    <div class="value">{{elapsed|elapsed}}</div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/views/twitter.html
----------------------------------------------------------------------
diff --git a/web/demos/app/views/twitter.html b/web/demos/app/views/twitter.html
deleted file mode 100644
index 617cca3..0000000
--- a/web/demos/app/views/twitter.html
+++ /dev/null
@@ -1,58 +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.
-
--->
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <h2 class="app-title">
-                {{pageTitle}}
-                <a ng-show="appURL" href="{{appURL}}" class="btn btn-primary btn-view-console" target="_blank">View Console</a>
-            </h2>
-        </div>
-    </div>
-    <div class="row-fluid">
-        <p class="well span7">
-            This demo application processes tweets and computes most frequently cited {{entity}} during the last 5 minutes. The results are continuously updated every 0.5 sec. For demo purposes, we used live (1% sample) developer version of the Twitter feed, and scale it up by 100x to produce the true load.  The application process load equivalent to full firehose.
-        </p>
-        <div class="span5">
-            <span widgets-stat="" app="app"></span>
-        </div><!--/span-->
-    </div>
-    <div class="row-fluid">
-        <div class="span4">
-            <h4>{{gridTitle}}</h4>
-            <div ng-controller="TwitterGridControlller">
-                <div class="twitter-grid" ng-grid="gridOptions"></div>
-            </div>
-        </div><!--/span-->
-        <div class="span4">
-            <h4>{{chartTitle}}</h4>
-            <div ng-controller="TwitterBarChartController">
-                <span widgets-bar-chart="" class="bar-chart" data="twitterBarChartData" label="name" on-click="d3OnClick(item)"></span>
-            </div>
-        </div><!--/span-->
-    </div><!--/row-->
-
-    <hr>
-
-    <footer>
-        <p>&copy; DataTorrent 2014</p>
-    </footer>
-</div><!--/.fluid-container-->
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/views/welcome.html
----------------------------------------------------------------------
diff --git a/web/demos/app/views/welcome.html b/web/demos/app/views/welcome.html
deleted file mode 100644
index 823bc63..0000000
--- a/web/demos/app/views/welcome.html
+++ /dev/null
@@ -1,25 +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.
-
--->
-<div class="hero-unit">
-    <h2 class="app-title">DataTorrent Demo Applications</h2>
-    <p>Welcome to DataTorrent Demo Applications.</p>
-    <p>Please click on the links above to open the demo.</p>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/bower.json
----------------------------------------------------------------------
diff --git a/web/demos/bower.json b/web/demos/bower.json
deleted file mode 100644
index 58e7c9e..0000000
--- a/web/demos/bower.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-  "name": "mrapp",
-  "version": "0.0.0",
-  "dependencies": {
-    "angular": "~1.2.16",
-    "angular-route": "~1.2.16",
-    "json3": "~3.2.4",
-    "jquery": "~1.9.1",
-    "bootstrap-sass": "~2.3.1",
-    "es5-shim": "~2.0.8",
-    "angular-resource": "~1.2.16",
-    "angular-cookies": "~1.2.16",
-    "angular-sanitize": "~1.2.16",
-    "bootstrap": "~3.0.0",
-    "ng-grid": "2.0.11",
-    "d3": "~3.3.6",
-    "underscore": "~1.5.2",
-    "restangular": "~1.1.6",
-    "uri.js": "~1.11.2"
-  },
-  "devDependencies": {
-    "angular-mocks": "~1.2.16",
-    "angular-scenario": "~1.2.16"
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/config.js
----------------------------------------------------------------------
diff --git a/web/demos/config.js b/web/demos/config.js
deleted file mode 100644
index 09f842c..0000000
--- a/web/demos/config.js
+++ /dev/null
@@ -1,85 +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.
- */
-var config = {};
-config.web = {};
-config.gateway = {};
-config.machine = {};
-config.machine.redis = {};
-config.fraud = {};
-config.fraud.mongo = {};
-config.adsdimensions = {};
-config.adsdimensions.redis = {};
-
-config.web.port = process.env.PORT || 3003;
-config.web.staticDir = process.env.STATIC_DIR || '/app';
-config.gateway.host = process.env.GATEWAY_HOST || 'localhost';
-config.gateway.port = process.env.GATEWAY_PORT || 9090;
-config.machine.redis.host = process.env.MACHINE_REDIS_HOST || null;
-config.machine.redis.port = process.env.MACHINE_REDIS_PORT || 6379;
-config.machine.redis.dbIndex = process.env.MACHINE_REDIS_DB_INDEX || 2;
-config.adsdimensions.redis.host = process.env.ADS_REDIS_HOST || null;
-config.adsdimensions.redis.port = process.env.ADS_REDIS_PORT || 6379;
-config.adsdimensions.redis.dbIndex = process.env.ADS_REDIS_DB_INDEX || 0;
-config.fraud.mongo.host = process.env.MONGODB_HOST || null;
-config.fraud.mongo.port = process.env.MONGODB_PORT || 27017;
-config.fraud.mongo.dbName = 'frauddetect';
-
-// client settings (passed to the browser)
-config.settings = {};
-var settings = config.settings;
-
-settings.twitterUrls = {};
-settings.twitterHashtags = {};
-settings.mobile = {};
-settings.mobile.topic = {};
-settings.machine = {};
-settings.machine.range = {};
-settings.dimensions = {};
-settings.dimensions.range = {};
-settings.fraud = {};
-
-settings.webSocketURL = 'ws://' + config.gateway.host + ':' + config.gateway.port + '/pubsub';
-settings.appsURL = 'http://' + config.gateway.host + ':' + config.gateway.port + '/static/#ops/apps/';
-
-settings.twitterUrls.appName = process.env.APP_NAME_TWITTER_URLS || 'TwitterDemo';
-settings.twitterUrls.topic = 'demos.twitter.topURLs';
-settings.twitterHashtags.appName = process.env.APP_NAME_TWITTER_HASHTAGS || 'TwitterTrendingDemo';
-settings.twitterHashtags.topic = 'demos.twitter.topHashtags';
-settings.mobile.topic.out = 'demos.mobile.phoneLocationQueryResult';
-settings.mobile.topic.in = 'demos.mobile.phoneLocationQuery';
-settings.mobile.appName = process.env.APP_NAME_MOBILE || 'MobileDemo';
-settings.machine.appName = process.env.APP_NAME_MACHINE || 'MachineDataDemo';
-settings.machine.lookback = 180; // default lookback (minutes)
-settings.machine.metricformat = '#.0';
-settings.machine.pollInterval = 1000; // milliseconds
-settings.machine.range.customer = { start: 1, stop: 10 };
-settings.machine.range.product = { start: 4, stop: 6 };
-settings.machine.range.os = { start: 10, stop: 12 };
-settings.machine.range.software1 = { start: 10, stop: 12 };
-settings.machine.range.software2 = { start: 12, stop: 14 };
-settings.machine.range.deviceId = { start: 1, stop: 50 };
-settings.dimensions.appName = process.env.APP_NAME_ADS || 'AdsDimensionsDemo';
-settings.dimensions.lookback = 180; // default lookback (minutes)
-settings.dimensions.pollInterval = 1; // seconds
-settings.dimensions.range.publisher = { start: 0, stop: 49 };
-settings.dimensions.range.advertiser = { start: 0, stop: 99 };
-settings.dimensions.range.adunit = { start: 0, stop: 4 };
-settings.fraud.appName = process.env.APP_NAME_FRAUD || 'FraudDetectDemo';
-
-module.exports = config

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/dev_start.sh
----------------------------------------------------------------------
diff --git a/web/demos/dev_start.sh b/web/demos/dev_start.sh
deleted file mode 100755
index 8d43f91..0000000
--- a/web/demos/dev_start.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-#
-# 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.
-#
-
-export PORT=3003
-export GATEWAY_HOST=localhost
-export GATEWAY_PORT=9090
-export MACHINE_REDIS_HOST=localhost
-export MACHINE_REDIS_PORT=8379
-export MACHINE_REDIS_DB_INDEX=2
-export ADS_REDIS_HOST=localhost
-export ADS_REDIS_PORT=4379
-export ADS_REDIS_DB_INDEX=0
-export MONGODB_HOST=localhost
-
-node app.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/dist_start.sh
----------------------------------------------------------------------
diff --git a/web/demos/dist_start.sh b/web/demos/dist_start.sh
deleted file mode 100755
index 41fe16b..0000000
--- a/web/demos/dist_start.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-#
-# 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.
-#
-
-export STATIC_DIR=/dist
-export PORT=3003
-export GATEWAY_HOST=localhost
-export GATEWAY_PORT=9090
-export MACHINE_REDIS_HOST=
-export MACHINE_REDIS_PORT=
-export MACHINE_REDIS_DB_INDEX=
-export ADS_REDIS_HOST=
-export ADS_REDIS_PORT=
-export MONGODB_HOST=
-
-node app.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/docs/demos_architecture.png
----------------------------------------------------------------------
diff --git a/web/demos/docs/demos_architecture.png b/web/demos/docs/demos_architecture.png
deleted file mode 100755
index ebe0dbb..0000000
Binary files a/web/demos/docs/demos_architecture.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/karma-e2e.conf.js
----------------------------------------------------------------------
diff --git a/web/demos/karma-e2e.conf.js b/web/demos/karma-e2e.conf.js
deleted file mode 100644
index ec5b945..0000000
--- a/web/demos/karma-e2e.conf.js
+++ /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.
- */
-// Karma configuration
-// http://karma-runner.github.io/0.10/config/configuration-file.html
-
-module.exports = function(config) {
-  config.set({
-    // base path, that will be used to resolve files and exclude
-    basePath: '',
-
-    // testing framework to use (jasmine/mocha/qunit/...)
-    frameworks: ['ng-scenario'],
-
-    // list of files / patterns to load in the browser
-    files: [
-      'test/e2e/**/*.js'
-    ],
-
-    // list of files / patterns to exclude
-    exclude: [],
-
-    // web server port
-    port: 8080,
-
-    // level of logging
-    // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
-    logLevel: config.LOG_INFO,
-
-
-    // enable / disable watching file and executing tests whenever any file changes
-    autoWatch: false,
-
-
-    // Start these browsers, currently available:
-    // - Chrome
-    // - ChromeCanary
-    // - Firefox
-    // - Opera
-    // - Safari (only Mac)
-    // - PhantomJS
-    // - IE (only Windows)
-    browsers: ['Chrome'],
-
-
-    // Continuous Integration mode
-    // if true, it capture browsers, run tests and exit
-    singleRun: false
-
-    // Uncomment the following lines if you are using grunt's server to run the tests
-    // proxies: {
-    //   '/': 'http://localhost:9000/'
-    // },
-    // URL root prevent conflicts with the site root
-    // urlRoot: '_karma_'
-  });
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/karma.conf.js
----------------------------------------------------------------------
diff --git a/web/demos/karma.conf.js b/web/demos/karma.conf.js
deleted file mode 100644
index 33a64de..0000000
--- a/web/demos/karma.conf.js
+++ /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.
- */
-// Karma configuration
-// http://karma-runner.github.io/0.10/config/configuration-file.html
-
-module.exports = function(config) {
-  config.set({
-    // base path, that will be used to resolve files and exclude
-    basePath: '',
-
-    // testing framework to use (jasmine/mocha/qunit/...)
-    frameworks: ['jasmine'],
-
-    // list of files / patterns to load in the browser
-    files: [
-      'app/bower_components/angular/angular.js',
-      'app/bower_components/angular-mocks/angular-mocks.js',
-      'app/scripts/*.js',
-      'app/scripts/**/*.js',
-      'test/mock/**/*.js',
-      'test/spec/**/*.js'
-    ],
-
-    // list of files / patterns to exclude
-    exclude: [],
-
-    // web server port
-    port: 8080,
-
-    // level of logging
-    // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
-    logLevel: config.LOG_INFO,
-
-
-    // enable / disable watching file and executing tests whenever any file changes
-    autoWatch: false,
-
-
-    // Start these browsers, currently available:
-    // - Chrome
-    // - ChromeCanary
-    // - Firefox
-    // - Opera
-    // - Safari (only Mac)
-    // - PhantomJS
-    // - IE (only Windows)
-    browsers: ['Chrome'],
-
-
-    // Continuous Integration mode
-    // if true, it capture browsers, run tests and exit
-    singleRun: false
-  });
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package.json b/web/demos/package.json
deleted file mode 100644
index 859b573..0000000
--- a/web/demos/package.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "name": "webapps",
-  "version": "0.0.1",
-  "dependencies": {
-    "express": "3.3.5",
-    "http-proxy": "~0.10.3",
-    "redis": "~0.8.6",
-    "dateformat": "~1.0.6-1.2.3",
-    "async": "~0.2.9",
-    "mongodb": "~1.3.19",
-    "jquery-deferred": "~0.3.0",
-    "underscore": "~1.5.2"
-  },
-  "devDependencies": {
-    "grunt": "~0.4.1",
-    "grunt-contrib-copy": "~0.4.1",
-    "grunt-contrib-concat": "~0.3.0",
-    "grunt-contrib-coffee": "~0.7.0",
-    "grunt-contrib-uglify": "~0.2.0",
-    "grunt-contrib-compass": "~0.5.0",
-    "grunt-contrib-jshint": "~0.6.0",
-    "grunt-contrib-cssmin": "~0.6.0",
-    "grunt-contrib-connect": "~0.3.0",
-    "grunt-contrib-clean": "~0.5.0",
-    "grunt-contrib-htmlmin": "~0.1.3",
-    "grunt-contrib-watch": "~0.5.2",
-    "grunt-autoprefixer": "~0.2.0",
-    "grunt-usemin": "~0.1.11",
-    "grunt-svgmin": "~0.2.0",
-    "grunt-rev": "~0.1.0",
-    "grunt-open": "~0.2.0",
-    "grunt-concurrent": "~0.3.0",
-    "load-grunt-tasks": "~0.1.0",
-    "connect-livereload": "~0.2.0",
-    "grunt-google-cdn": "~0.2.0",
-    "grunt-ngmin": "~0.0.2",
-    "time-grunt": "~0.1.0",
-    "karma-ng-scenario": "~0.1.0",
-    "grunt-karma": "~0.6.2",
-    "karma-script-launcher": "~0.1.0",
-    "karma-chrome-launcher": "~0.1.0",
-    "karma-firefox-launcher": "~0.1.0",
-    "karma-html2js-preprocessor": "~0.1.0",
-    "karma-jasmine": "~0.1.3",
-    "karma-requirejs": "~0.1.0",
-    "karma-coffee-preprocessor": "~0.1.0",
-    "karma-phantomjs-launcher": "~0.1.0",
-    "karma": "~0.10.2",
-    "karma-ng-html2js-preprocessor": "~0.1.0"
-  },
-  "engines": {
-    "node": ">=0.8.0"
-  },
-  "scripts": {
-    "test": "grunt test"
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/README.md b/web/demos/package/README.md
deleted file mode 100644
index 2020823..0000000
--- a/web/demos/package/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-Web Demos
-===============
-
-Web Application for DataTorrent Demos:
-- Twitter URLs
-- Twitter Hashtags
-- Mobile
-- Machine Generated Data
-- Ads Dimensions
-- Fraud
-
-## Running Demos
- Demos run on [Node.js](http://nodejs.org/).
- To run demo web server use ```start.sh``` or launch application with Node.js:
-
- ``` bash
-    $ node app.js
- ```
-
- By default application will be available at http://localhost:3003 and will connect to DT Gateway at localhost:9090.
-
-## Demos configuration
- Please use ```config.js``` or environment variables (```start.sh```) for configuration (DT Gateway, Redis, MongoDB, etc.).
-
- Applications are automatically discovered by name (to show stats like "Events/sec"). See the following settings in ```config.js```:
- - settings.twitterUrls.appName
- - settings.twitterHashtags.appName
- - settings.mobile.appName
- - settings.machine.appName
- - settings.dimensions.appName
- - settings.fraud.appName
-
-## Architecture and Development
-
-See web application source code  [web demos](https://github.com/DataTorrent/Malhar/tree/master/web/demos)
-
-## Tips
-
- Running Node.js as a daemon with [forever](https://github.com/nodejitsu/forever)
-
- ``` bash
-    $ npm install forever -g
-    $ forever start app.js
-    $ forever list
-    $ forever stop <uid>
- ```
-
- Running Node.js on different port
-
- ``` bash
-    $ PORT=3001 node app.js
- ```
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app.js
----------------------------------------------------------------------
diff --git a/web/demos/package/app.js b/web/demos/package/app.js
deleted file mode 100644
index a375506..0000000
--- a/web/demos/package/app.js
+++ /dev/null
@@ -1,69 +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.
- */
-var express = require('express');
-var http = require('http');
-var httpProxy = require('http-proxy');
-var config = require('./config');
-
-var machine = require('./routes/machine');
-var adsdimensions = require('./routes/adsdimensions');
-var fraud = require('./routes/fraud');
-
-var app = express();
-
-var proxy = new httpProxy.RoutingProxy();
-
-// all environments
-app.use(express.favicon());
-app.use(express.logger('dev'));
-app.use(express.bodyParser());
-app.use(express.methodOverride());
-app.use(app.router);
-
-console.log('environment: ' + app.get('env'));
-
-app.use(express.static(__dirname + config.web.staticDir));
-
-if ('development' == app.get('env')) {
-    app.use(express.errorHandler());
-}
-
-app.get('/machine', machine.data);
-app.get('/dimensions', adsdimensions.data);
-app.get('/fraud/alertCount', fraud.getAlertCount);
-app.get('/fraud/randomStats', fraud.getRecentStats);
-app.get('/ws/*', function(req, res) {
-    proxy.proxyRequest(req, res, {
-        host: config.gateway.host,
-        port: config.gateway.port
-    });
-});
-
-app.get('/settings.js', function(req, res) {
-  res.setHeader('Content-Type', 'application/javascript');
-  res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
-  res.setHeader('Pragma', 'no-cache');
-  res.setHeader('Expires', 0);
-
-  res.send('window.settings = ' + JSON.stringify(config.settings) + ';');
-});
-
-http.createServer(app).listen(config.web.port, function(){
-    console.log('Express server listening on port ' + config.web.port);
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/404.html
----------------------------------------------------------------------
diff --git a/web/demos/package/app/404.html b/web/demos/package/app/404.html
deleted file mode 100644
index 082c038..0000000
--- a/web/demos/package/app/404.html
+++ /dev/null
@@ -1,177 +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.
-
--->
-<!DOCTYPE html>
-<html lang="en">
-    <head>
-        <meta charset="utf-8">
-        <title>Page Not Found :(</title>
-        <style>
-            ::-moz-selection {
-                background: #b3d4fc;
-                text-shadow: none;
-            }
-
-            ::selection {
-                background: #b3d4fc;
-                text-shadow: none;
-            }
-
-            html {
-                padding: 30px 10px;
-                font-size: 20px;
-                line-height: 1.4;
-                color: #737373;
-                background: #f0f0f0;
-                -webkit-text-size-adjust: 100%;
-                -ms-text-size-adjust: 100%;
-            }
-
-            html,
-            input {
-                font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-            }
-
-            body {
-                max-width: 500px;
-                _width: 500px;
-                padding: 30px 20px 50px;
-                border: 1px solid #b3b3b3;
-                border-radius: 4px;
-                margin: 0 auto;
-                box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff;
-                background: #fcfcfc;
-            }
-
-            h1 {
-                margin: 0 10px;
-                font-size: 50px;
-                text-align: center;
-            }
-
-            h1 span {
-                color: #bbb;
-            }
-
-            h3 {
-                margin: 1.5em 0 0.5em;
-            }
-
-            p {
-                margin: 1em 0;
-            }
-
-            ul {
-                padding: 0 0 0 40px;
-                margin: 1em 0;
-            }
-
-            .container {
-                max-width: 380px;
-                _width: 380px;
-                margin: 0 auto;
-            }
-
-            /* google search */
-
-            #goog-fixurl ul {
-                list-style: none;
-                padding: 0;
-                margin: 0;
-            }
-
-            #goog-fixurl form {
-                margin: 0;
-            }
-
-            #goog-wm-qt,
-            #goog-wm-sb {
-                border: 1px solid #bbb;
-                font-size: 16px;
-                line-height: normal;
-                vertical-align: top;
-                color: #444;
-                border-radius: 2px;
-            }
-
-            #goog-wm-qt {
-                width: 220px;
-                height: 20px;
-                padding: 5px;
-                margin: 5px 10px 0 0;
-                box-shadow: inset 0 1px 1px #ccc;
-            }
-
-            #goog-wm-sb {
-                display: inline-block;
-                height: 32px;
-                padding: 0 10px;
-                margin: 5px 0 0;
-                white-space: nowrap;
-                cursor: pointer;
-                background-color: #f5f5f5;
-                background-image: -webkit-linear-gradient(rgba(255,255,255,0), #f1f1f1);
-                background-image: -moz-linear-gradient(rgba(255,255,255,0), #f1f1f1);
-                background-image: -ms-linear-gradient(rgba(255,255,255,0), #f1f1f1);
-                background-image: -o-linear-gradient(rgba(255,255,255,0), #f1f1f1);
-                -webkit-appearance: none;
-                -moz-appearance: none;
-                appearance: none;
-                *overflow: visible;
-                *display: inline;
-                *zoom: 1;
-            }
-
-            #goog-wm-sb:hover,
-            #goog-wm-sb:focus {
-                border-color: #aaa;
-                box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
-                background-color: #f8f8f8;
-            }
-
-            #goog-wm-qt:hover,
-            #goog-wm-qt:focus {
-                border-color: #105cb6;
-                outline: 0;
-                color: #222;
-            }
-
-            input::-moz-focus-inner {
-                padding: 0;
-                border: 0;
-            }
-        </style>
-    </head>
-    <body>
-        <div class="container">
-            <h1>Not found <span>:(</span></h1>
-            <p>Sorry, but the page you were trying to view does not exist.</p>
-            <p>It looks like this was the result of either:</p>
-            <ul>
-                <li>a mistyped address</li>
-                <li>an out-of-date link</li>
-            </ul>
-            <script>
-                var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),GOOG_FIXURL_SITE = location.host;
-            </script>
-            <script src="//linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
-        </div>
-    </body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/favicon.ico
----------------------------------------------------------------------
diff --git a/web/demos/package/app/favicon.ico b/web/demos/package/app/favicon.ico
deleted file mode 100644
index 6527905..0000000
Binary files a/web/demos/package/app/favicon.ico and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/images/23bb1446.glyphicons-halflings.png
----------------------------------------------------------------------
diff --git a/web/demos/package/app/images/23bb1446.glyphicons-halflings.png b/web/demos/package/app/images/23bb1446.glyphicons-halflings.png
deleted file mode 100644
index a996999..0000000
Binary files a/web/demos/package/app/images/23bb1446.glyphicons-halflings.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/images/74c3df97.main_banner.png
----------------------------------------------------------------------
diff --git a/web/demos/package/app/images/74c3df97.main_banner.png b/web/demos/package/app/images/74c3df97.main_banner.png
deleted file mode 100644
index f3f4810..0000000
Binary files a/web/demos/package/app/images/74c3df97.main_banner.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/index.html
----------------------------------------------------------------------
diff --git a/web/demos/package/app/index.html b/web/demos/package/app/index.html
deleted file mode 100644
index 8606577..0000000
--- a/web/demos/package/app/index.html
+++ /dev/null
@@ -1,85 +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.
-
--->
-<!doctype html>
-<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
-<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
-<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
-<head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title></title>
-    <meta name="description" content="">
-    <meta name="viewport" content="width=device-width">
-    <!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
-
-    <link rel="stylesheet" href="styles/5e6512ec.vendor.css">
-
-    <link rel="stylesheet" href="styles/00ae7995.main.css">
-</head>
-<body ng-app="app">
-<!--[if lt IE 9]>
-<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
-<![endif]-->
-
-<div class="navbar navbar-inverse navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container-fluid">
-            <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </button>
-            <a class="brand" href="/"></a>
-            <div class="nav-collapse collapse">
-                <ul class="nav">
-                    <li><a href="#twitterUrls">Twitter URLs</a></li>
-                    <li><a href="#twitterHashtags">Twitter Hashtags</a></li>
-                    <li><a href="#mobile">Mobile</a></li>
-                    <li><a href="#machine">Machine</a></li>
-                    <li><a href="#dimensions">Ads</a></li>
-                    <li><a href="#fraud">Fraud</a></li>
-                </ul>
-            </div><!--/.nav-collapse -->
-        </div>
-    </div>
-</div>
-
-<div class="ng-view"></div>
-
-<script src="settings.js"></script>
-
-<script src="scripts/d63799f1.plugins.js"></script>
-
-<script src="scripts/9f21e177.modules.js"></script>
-
-<script src="scripts/5f986af9.scripts.js"></script>
-
-<script type="text/javascript" src="https://www.google.com/jsapi"></script>
-<script type="text/javascript">
-    google.load('visualization', '1', {'packages':['corechart']});
-</script>
-
-<script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=en"></script>
-<script src="scripts/vendor/74f1038f.markerwithlabel.js"></script>
-
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/robots.txt
----------------------------------------------------------------------
diff --git a/web/demos/package/app/robots.txt b/web/demos/package/app/robots.txt
deleted file mode 100644
index 9417495..0000000
--- a/web/demos/package/app/robots.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# robotstxt.org
-
-User-agent: *


[67/98] [abbrv] incubator-apex-malhar git commit: Merge branch 'MLHR-1885-AddGet-KafkaMessage' of github.com:chaithu14/incubator-apex-malhar into release-3.2

Posted by da...@apache.org.
Merge branch 'MLHR-1885-AddGet-KafkaMessage' of github.com:chaithu14/incubator-apex-malhar into release-3.2


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/bbbb7f84
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/bbbb7f84
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/bbbb7f84

Branch: refs/heads/master
Commit: bbbb7f8426394ee1fb6f452a225b45cf54573b47
Parents: 5c7dae1 cd3d7a7
Author: Siyuan Hua <hs...@apache.org>
Authored: Thu Oct 29 08:54:09 2015 -0700
Committer: Siyuan Hua <hs...@apache.org>
Committed: Thu Oct 29 08:54:09 2015 -0700

----------------------------------------------------------------------
 .../contrib/kafka/KafkaConsumer.java            | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------



[78/98] [abbrv] incubator-apex-malhar git commit: MLHR-1891 Don't deploy source archives.

Posted by da...@apache.org.
MLHR-1891 Don't deploy source archives.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/c46880be
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/c46880be
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/c46880be

Branch: refs/heads/master
Commit: c46880be7e4ce5fe577f8e603c0264a5666c1bb7
Parents: 66282d6
Author: Thomas Weise <th...@datatorrent.com>
Authored: Thu Nov 5 14:56:46 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Thu Nov 5 20:30:28 2015 -0800

----------------------------------------------------------------------
 pom.xml | 13 +++++++++++++
 1 file changed, 13 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/c46880be/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 21bf77d..3f34305 100644
--- a/pom.xml
+++ b/pom.xml
@@ -142,6 +142,19 @@
       </build>
     </profile>
     <profile>
+      <id>skip-source-release-attach</id>
+      <activation>
+        <file>
+          <exists>${basedir}/NOTICE</exists>
+        </file>
+      </activation>
+      <properties>
+        <remoteresources.skip>true</remoteresources.skip>
+        <!-- do not push source archives to the repo - see MPOM-90 -->
+        <assembly.attach>false</assembly.attach>
+      </properties>
+    </profile>
+    <profile>
       <id>all-modules</id>
       <modules>
         <module>benchmark</module>


[93/98] [abbrv] incubator-apex-malhar git commit: MLHR-1899 Workaround problematic test file content.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f9875f6d/demos/wordcount/src/main/resources/com/datatorrent/demos/wordcount/samplefile.txt
----------------------------------------------------------------------
diff --git a/demos/wordcount/src/main/resources/com/datatorrent/demos/wordcount/samplefile.txt b/demos/wordcount/src/main/resources/com/datatorrent/demos/wordcount/samplefile.txt
index d3146c4..83eaaed 100644
--- a/demos/wordcount/src/main/resources/com/datatorrent/demos/wordcount/samplefile.txt
+++ b/demos/wordcount/src/main/resources/com/datatorrent/demos/wordcount/samplefile.txt
@@ -1,92 +1 @@
-Mitt Romneyā€™s second presidential run has largely focused on a single theme: Barack Obama has bungled the economy, and Iā€™m the guy who can fix it. Romney points to his business and management expertise, honed in the boardrooms of Bain Capital and showcased by his stewardship of the Salt Lake City Olympics, to argue that his experience creating businesses and turning around flagging ones renders him the best positioned candidate to stanch the economic bleeding and put America back to work. But until now, he hasnā€™t seemed in too much of a hurry. The Romney campaign has been coasting, assiduously courting donors and opinion-makers, never panicking in grim news cycles and often preferring to plead its case in the op-ed pages instead of on the stump. The candidate has favored studiously casual attire, rarely engaged his rivals, and often skated over the fine print detailing how, exactly, he would engineer a turnaround of the U.S. economy.
-
-Tuesday afternoon marked a new phase in Romneyā€™s campaign, as the former Massachusetts governor unveiled his economic platform at a truck dealership in North Las Vegas, two days before Obama lays out his own proposals before a joint session of Congress and four days after a dismal jobs report crystallized the economic challenges ahead. Spiffed up in a jacket and tie and flanked by billboards outlining his policy proposals, Romney laid out the broad strokes of an economic agenda he said would create some 11.5 million jobs and grow the economy at an annual rate of 4% over his first four years in the White House.
-
-The idea animating Romneyā€™s economic policy is that the overreach of the Obama Administration, excessive regulations and high taxes have throttled the private sectorā€™s ability to create jobs. ā€œGrowth is the answer, not government,ā€ he told the crowd. This is, of course, standard Republican boilerplate. And for all the scorn Romney has heaped on Obama, his own economic ideas are hardly new.
-
-Romneyā€™s policy platform, laid out in a 160-page book, touts 59 specific prescriptions, including five bills and five executive orders he would push on his first day in office, such as directing the Cabinet to offer ā€œObamaCareā€ waivers to the states and freezing regulations imposed by his predecessor. Most of his proposals align with Republican orthodoxy. On taxes, Romney would cut the corporate rate from 35% to 25% and let companies repatriate profits, lower marginal rates for individuals, and eliminate taxes on capital gains and dividends for the middle class. He wants to increase energy production, cut non-defense discretionary spending 5% and cap it at 20% of GDP, boost trade (he calls for a ā€œReagan Economic Zoneā€ of countries committed to free enterprise), cut red tape and confront China.
-
-ā€œWeā€™re not going to have a trade war, but we canā€™t have a trade surrender either,ā€ he said. ā€œIā€™ll clamp down on the cheaters, and Chinaā€™s the worst example of that.ā€ He argued that with the adoption of any new regulation, one of similar cost should be scrapped. And he took dutiful swipes at unions, the EPA and the National Labor Relations Board, whose move to block Boeing from operating a new South Carolina plant has made it an obligatory target for any Republican who hopes to compete in the Palmetto State primary.
-
-All of this should sound familiar. Thereā€™s little daylight between Romneyā€™s economic policies and the ones Republican rival Jon Huntsman touted last week in his own such blueprint. (The former Utah governor, whoā€™s been on a sustained offensive against Romney of late, fired another salvo Tuesday, releasing a spot slamming Romneyā€™s record on job creation in Massachusetts, which ranked 47th in the country by one measure.) Romneyā€™s proposals also dovetails with those championed by House Republicans, whose ā€œCut, Cap and Balanceā€ bill to slash spending and pass a constitutional balanced-budget amendment Romney supports. And he shades many of the same facts as his Republican counterparts.
-
-ā€œIf Mitt Romney has expressed a single original idea on the economy in the entire time he has been running for President ā€“ for the second time ā€“ you could auction it off on eBay in the rare stamp collection area,ā€ Brad Woodhouse of the Democratic National Committee wrote in an memo which blasts Romney for ā€œadopting the extreme policy prescriptions of the Tea Party.ā€
-
-Sort of. For months, Romney has tried to polish his conservative credentials and use Tea-infused rhetoric even as he courts more moderate Republicans searching not for purest candidate but the most viable one. At Jim DeMintā€™s Labor Day forum in South Carolina, Romney tossed red meat to the ravenous conservative base ā€“ā€I donā€™t think Iā€™ve ever seen an administration who has gone further afield from the Constitutionā€ than Obamaā€™s, he said ā€” but was the only candidate of the five to appear who declined to back using the 14th Amendment as a potential vehicle to overturn Roe v. Wade. (He deftly cited statesā€™ rights as the reason why, as the L.A. Times reports.) A day earlier in New Hampshire, he made his maiden overture to the Tea Party, where his speech was greeted by protesters and boycotted by the conservative advocacy group FreedomWorks, one of many outfits who will likely never forgive him for his efforts to thin the ranks of the uninsured in Massachusetts.
-
-In Las Vegas, a Romney redoubt (he handily won the Nevada caucus in 2008) thatā€™s been clobbered by the recession, the former Massachusetts governor sought to appeal to voters across the political spectrum. Obama, he said, is ā€œnot a bad guy. He, uh, he just doesnā€™t know how the economy works.ā€ Democrats ā€œlove America too, just like we do.ā€
-
-What separates Romney from his Republican rivals, he says, is that he alone has the private-sector management experience to shepherd the U.S. economy through an increasingly competitive global marketplace. ā€œI think to create jobs, it helps to have had a job, and I have,ā€ he said. As Democrats often point out, Romneyā€™s job involved the elimination of others, and his attempts to connect with the concerns of the ordinary Americans can be pretty awkward.  At one point in Tuesdayā€™s speech, he directed the audience to Amazon.com, where he said voters can find a full-color version of his policy platform designed for the Kindle. ā€œI donā€™t know if itā€™s free or not,ā€ he said. ā€œI hope so.ā€ (Charging the middle class to read his plan for saving it would be a novel business tactic, but thankfully, you can read the document free of charge.)
-
-During the first phase of the presidential campaign, Romney was the putative front-runner, and his top priority sometimes seemed to be proving that he was just a regular dude, albeit a very rich one. Now he has some competition of his own. In recent weeks, heā€™s been dislodged from the top spot in several polls by Texas Governor Rick Perry, setting up what many analysts argue will be an arduous two-man race.
-
-Perryā€™s camp was quick to pounce on the speech. ā€œAs Governor of Massachusetts, Mitt Romney failed to create a pro-jobs environment and failed to institute many of the reforms he now claims to support,ā€ Perry spokesman Mark Miner said in a statement Tuesday. Ben LaBolt, Obamaā€™s 2012 press secretary, said Romneyā€™s plan paid lip service to protecting the middle class, but would instead ā€œtip the scales against hard-working Americans.ā€
-
-Romney calls his a ā€œpracticalā€ approach developed through his decades of experience in competitive markets, rather than theory cribbed from the halls of academia. And yet, he had help from a roster of brainy policy advisers, including Jim Talent, a former Republican Senator from Missouri; Greg Mankiw, a Harvard professor and former chief of George W. Bushā€™s Council of Economic Advisers; and Mankiwā€™s successor at Bushā€™s CEA, Glenn Hubbard, a Columbia professor. The presidential brain trust and Tuesdayā€™s slick economic presentation are characteristic of Romneyā€™s campaign style: Heā€™s always been good at looking the part.
-
-
-
-
-President Barack Obama unveiled his vision for immigration reform in a speech on Tuesday afternoon in Las Vegas, Nev., telling Congress that he will send them his own bill and call for a vote if they don't move fast.
-"If Congress is unable to move forward in a timely fashion, I will send up a bill based on my proposal and insist that they vote on it right away," Obama said to applause from students at Del Sol High School.
-"It looks like there's a genuine desire to get this done soon, and that's very encouraging," Obama said, mentioning a blueprint put forward by a bipartisan group of eight senators on Monday. "But this time action must follow."
-Obama's speech was the latest move in a chess match between the White House and some Republicans in Congress to craft an outline for reform that can both be enacted into law while meeting the expectataions of the growing population of Hispanic voters who now overwhelmingly favor Democrats.
-Some Republicans want to support immigration reform in part to combat the party's demographic challenges, but the more involved the president is with the bill, the politically riskier it becomes to support it.
-In his speech, Obama laid out "markers" for reform, saying any comprehensive immigration bill must give most of the nation's 11 million illegal immigrants a chance to earn their citizenship gradually if they pay a fine, learn English and pass a background check. Immigrants would also have to get to "the back of the line," which means people who have already applied for green cards would have their applications processed first.
-The president's bill would also include an employment verification system, more border security and a revamping of the legal immigration system to provide more visas for top graduates of U.S. universities and to reduce lengthy wait times for visas for relatives of U.S. citizens.
-The president mentioned the blueprint for reform laid out by senators including rising Republican star Marco Rubio of Florida and John McCain of Arizona, Obama's 2008 GOP presidential rival.
-The principles of that outline "are very much in line with the principles Iā€™ve proposed and campaigned on for the last few years," Obama said.
-The senators pre-empted Obama's speech by a day to release a blueprint that differs from Obama's earlier immigration proposal in some respects.
-Both Obama and the senators agree that the nation's illegal immigrants should be given a chance to legalize and eventually become citizens if they meet certain conditions, but the senators' bill includes a spate of border security requirements that must go into effect before the immigrants are eligible for green cards. Rubio said on Tuesday that he will not sign onto a bill that does not include these border enforcement triggers.
-Another potential difference between the plans is that the president believes same-sex partners should be able to sponsor their immigrant husband or wife for citizenship in the same way heterosexual married couples can do now. The Senate proposal does not mention same-sex couples.
-Obama said he recognized that immigration is an issue that inflames "passions," but he called on Americans to remember that they belong to a nation of immigrants.
-"It's easy sometimes for the discussion to take on a feeling of 'us' versus 'them,'" Obama said. "When that happens a lot of folks forget that most of us used to be them. ... Unless youā€™re one of the first Americans, a Native American, you came from some place else. Somebody brought you."
-Welcoming immigrants has made the country stronger, he said. "That's how we will ensure this century is the same as the last, an American century, welcoming of everybody who aspires to do something more, is willing to work hard for it, is willing to pledge allegiance to our flag."
-Leaders in the Republican-controlled House have not yet released a significant blueprint or proposal for immigration reform. In response to the speech, a spokesman for House Speaker John Boehner urged the president to keep his distance while Congress undergoes what will likely be a lengthy legislative process to reach a final bill addressing immigration reform.
-ā€œThere are a lot of ideas about how best to fix our broken immigration system. Any solution should be a bipartisan one, and we hope the president is careful not to drag the debate to the left and ultimately disrupt the difficult work that is ahead in the House and Senate," said Boehner spokesman Brendan Buck in a statement.
-McCain said in a statement after Obama's speech that despite the "differences" in their approaches, he is "cautiously optimistic" that a bill will go forward.
-Immigrant groups and labor organizations are rallying behind the new push for reform. AFL-CIO President Richard Trumka told Yahoo News on Tuesday that organized labor is ā€œentirely behindā€ comprehensive immigration reform and will mount a ā€œfull-fledgedā€ campaign to help drive it through Congress.
-
-
-A conservative pro-immigration reform group has issued talking points to Republican lawmakers, telling them to avoid referring to the U.S. citizen children of illegal immigrants as "anchor babies" or calling for the construction of an "electric fence" on the border, among other things.
-The talking points, published by BuzzFeed, went out to Republican lawmakers on the Hill as momentum builds for an immigration bill that would legalize most of the country's 11 million illegal immigrants. The memo urges lawmakers to call them "undocumented immigrants" and to avoid terms such as "aliens" or "illegals," which are seen as offensive and dehumanizing. Another phrase to avoid? "Send them all back."
-"Conservatives get a bad rap when it comes to immigration reform because of a few people who say things that can be taken to be offensive," said Jennifer Korn, executive director of the Hispanic Leadership Network, the center-right group that sent the talking points on Monday. "It all means the same thing, but the way you say it matters."
-Korn worked in the White House when President George W. Bush attempted to get immigration reform passed in his second term. Two billsā€”one in 2006, the other in 2007ā€”died after a vocal grass-roots movement emerged in opposition to what it called "amnesty" for illegal immigrants. The amnesty tag stuck, even though both bills would have required any applicant to go through a lengthy legalization process that required him or her to meet certain requirements, like paying back taxes and a fine and learning English. Lawmakers received thousands of phone calls about the bill, Korn remembers, almost all of them strongly against reform.
-Korn hopes theses talking points will help avoid the "pitfalls" she saw then.
-"Right now what's really giving me heartburn is people saying 'pathway to citizenship,'" she said. "It's not a pathway to citizenship. It's 'earned legal status.' If you want conservative support you have to explain what it is so there's not this knee-jerk reaction of 'No amnesty!'"
-Sen. Marco Rubio, a Republican from Florida who's part of a bipartisan group of senators pushing for immigration reform, has used "earned residency" at times in interviews with conservative talk show hosts to describe what immigration reform would provide to qualifying illegal immigrants. Democrats, including Obama, often use "pathway to citizenship" to describe the bill.
-Snow squalls, high winds and slippery roads led to a chain-reaction of crashes on a mile-long stretch of an interstate in Detroit Thursday, leaving at least three people dead and 20 injured.
-Michigan State Police Lt. Michael Shaw said visibility was poor when the mass of crashes happened on Interstate 75 on the southwest side of the city. The injured, including children, have been taken to hospitals, Shaw said.
-SUVs with smashed front ends and cars with doors hanging open sat scattered across the debris-littered highway, some crunched against jackknifed tractor-trailers and tankers.
-Motorists and passengers who were able to a get out of their vehicles huddled together on the side of the road, some visibly distraught, others looking dazed. A man and woman hugged under the gray, cloud-filled skies, a pair of suitcases next to them and a bumper on the ground behind.
-"We're not sure of the cause," Shaw told The Associated Press. "Some witnesses said there were white-out conditions."
-More than two dozen vehicles were involved in the pileups and scores of cars and trucks not involved in crashes were stuck on the freeway behind. Shaw said it could be hours before the freeway reopened.
-Greg Galuszka was driving a fuel truck along I-75 when white-out conditions quickly materialized.
-"I looked on my driver's side mirror, and I could see the trucks piling up back there," Galuszka said, pointing to a mass of twisted metal where vehicles had smashed into each other a short time earlier.
-"Then, when I looked in my passenger side (mirror), is when I saw the steel hauler coming up," he said. "I just said my prayers from there and said, 'Please don't hit me.'"
-Shaw said many people had to be pulled from their vehicles. Numerous fire engines and ambulances were at the scene.
-The crash happened as a wave of snow and strong blustery winds reduced visibility across southeastern Michigan, said Bryan Tilley, a meteorologist with the National Weather Service in Oakland County's White Lake Township.
-"There was a pattern of snow showers moving through the area in the midmorning hours," Tilley said. Nearby Detroit Metropolitan Airport had west winds at 20 miles per hour, with gusts to 33 mph around the time of the crash. The temperature of 24 degrees was about 30 degrees colder than a day before.
-The crash happened near an elevated stretch of expressway where the road surface can cool quickly and make driving hazardous, Tilley said.
-A person claiming to be a pastor apparently tried to stiff a waiter on a tip, explaining that their work for God absolved them of having to leave one.
-A photo of the receipt, posted to Reddit.com, shows a bill for $34.93 that included an automatic 18 percent gratuity ($6.29) above a blank space for an additional tip.
-"I give God 10%," the diner wrote on the receipt, scratching out the automatic tip. "Why do you get 18?" The person then wrote "Pastor" above their signature, and an emphatic "0" where the additional tip would be.
-The Reddit user who submitted the image explained in the comments section that the receipt was part of a total bill of over $200 for a party of 20, which is why the gratuity was automatically added.
-ā€œParties up to eight ... may tip whatever theyā€™d like, but larger parties receive an automatic gratuity," the server wrote. "Itā€™s in the computer, itā€™s not something I do.ā€
-The server added: ā€œThey had no problem with my service, and told me I was great. They just didnā€™t want to pay when the time came.ā€
-Scribbling notes on receipts has become something of a trend. Earlier this month, the manager of a North Carolina Red Robin surprised an overdue pregnant woman by comping her meal.
-ā€œOnce seated, a manager came up to us and started talking,ā€ the woman's husband told Consumerist. ā€œHe was extremely friendly and jokingly asked my wife if this was her last meal before heading to the hospital."
-When the check came, a note from the manager next to her portion of the bill read: "MOM 2 BEE GOOD LUC."
-Barack Obama has advanced to his highest personal popularity since his first year in office, and Americans who've formed an opinion of his second inaugural address last week broadly approve of it, the latest ABC News/Washington Post poll finds.
-At the same time, Obama's favorability rating is lower than that of two of the last three re-elected presidents as they started their second terms, Bill Clinton and Ronald Reagan. He's in better shape compared with the third, George W. Bush.
-See PDF with full results, charts and tables here.
-Sixty percent of Americans now express a favorable opinion of Obama overall, up 10 points since last summer, in the heat of the presidential race. His popularity peaked at a remarkable 79 percent days before he took office four years ago, and last saw the 60s in November 2009.
-Obama's approval rating for his inaugural address last week is lower - 51 percent approve in this poll, produced for ABC by Langer Research Associates, but just 24 percent disapprove, a 2-1 ratio in favor of the speech. A quarter of Americans have no opinion of it either way.
-Favorability - which differs from job approval - is the most basic rating of a public figure's personal popularity. Obama's exceeds Bush's at the start of his second term by 5 percentage points, but trails Clinton's by 5 and Reagan's by 12.
-Intensity of sentiment is a plus for Obama: More have a "strongly" favorable opinion of him than a strongly unfavorable one, 39 vs. 26 percent, and twice as many strongly approve of his inaugural speech as disapprove. It's the first time he's been significantly more strongly popular than unpopular since early 2010.
-GROUPS - The president continues to be highly popular within his own party, with 92 percent favorability. Notably, 60 percent of independents see him favorably vs. 36 percent unfavorably, his best since his first year in office. He remains unpopular, however, with 80 percent of Republicans.
-Similarly, 87 percent of liberals and 68 percent of moderates view the president positively, dropping to 34 percent of conservatives overall and just a quarter of strong conservatives.
-In other groups, Obama's more popular among women than men by 9 points. And he's rated favorably by 87 percent of nonwhites, two-thirds of young adults and two-thirds of those in the lower- to middle-income brackets. By contrast, his favorability drops to 45 percent among whites - a group he lost to Mitt Romney by 20 points - and 47 percent of those with household incomes more than $100,000 a year.
-The president's inaugural speech - peppered with messages appealing to his core supporters - hit home with broad majorities of Democrats, liberals and nonwhites, as well as majorities of young adults, women, moderates and lower- to middle-income Americans.
-Though not majorities, significantly more approve than disapprove of Obama's address among a variety of other groups, including political independents. Whites and "somewhat" conservatives split more evenly, while "very" conservatives and Republicans disapprove by wide margins.
-METHODOLOGY - This ABC News/Washington Post poll was conducted by landline and cell phone Jan. 23-27, 2013, among a random national sample of 1,022 adults. Results have a margin of sampling error of 3.5 points. The survey was produced for ABC News by Langer Research Associates of New York, N.Y., with sampling, data collection and tabulation by SSRS/Social Science Research Solutions of Media, Pa.
+CONTENT DELETED

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f9875f6d/library/src/test/resources/SocketInputOperatorTest.txt
----------------------------------------------------------------------
diff --git a/library/src/test/resources/SocketInputOperatorTest.txt b/library/src/test/resources/SocketInputOperatorTest.txt
index 1a3cdd8..319c661 100644
--- a/library/src/test/resources/SocketInputOperatorTest.txt
+++ b/library/src/test/resources/SocketInputOperatorTest.txt
@@ -1,8 +1 @@
-We hd previously reported that Blue Apron was raising $30 million on the $500 million valuation that had been reported by Fortune, but those numbers seem to be preliminary. Other sources have said that cofounder Matt Salzberg was looking for a $500 million valuation for this round, though he has apparently settled for a touch less. The exchange, which will allow mobile publishers to run ads from multiple ad networks and ad buyers, addresses each of those issues, Jaffer argued.
-On ad quality, Vungle will only serve high-resolution videos of 15 seconds or fewer. On latency, the company says it serves the ads ā€œin less time than it takes the human eye to blink.ā€ To address brand safety, the exchange will give advertisers control over where their ads can run, and it has also been built to support new video standards and formats that emerge. Lastly, the company says its algorithms can optimize the mix between app install ads and brand ads.
-Many of the world's largest and fastest-growing organizations including Facebook, Google, Adobe, Alcatel Lucent and Zappos rely on MySQL to save time and money powering their high-volume Web sites, business-critical systems and packaged software.
-Below you will find valuable resources including case studies and white papers that will help you implement cost-effective database solutions using MySQL.
-We hd previously reported that Blue Apron was raising $30 million on the $500 million valuation that had been reported by Fortune, but those numbers seem to be preliminary. Other sources have said that cofounder Matt Salzberg was looking for a $500 million valuation for this round, though he has apparently settled for a touch less. The exchange, which will allow mobile publishers to run ads from multiple ad networks and ad buyers, addresses each of those issues, Jaffer argued.
-On ad quality, Vungle will only serve high-resolution videos of 15 seconds or fewer. On latency, the company says it serves the ads ā€œin less time than it takes the human eye to blink.ā€ To address brand safety, the exchange will give advertisers control over where their ads can run, and it has also been built to support new video standards and formats that emerge. Lastly, the company says its algorithms can optimize the mix between app install ads and brand ads.
-Many of the world's largest and fastest-growing organizations including Facebook, Google, Adobe, Alcatel Lucent and Zappos rely on MySQL to save time and money powering their high-volume Web sites, business-critical systems and packaged software.
-Below you will find valuable resources including case studies and white papers that will help you implement cost-effective database solutions using MySQL.
\ No newline at end of file
+Malhar repository contains open source operator and codec library that can be used with the Apache Apex (incubating) platform to build Realtime streaming applications. In addition to the library there are benchmark, contrib, demos, webdemos and samples folders available. Demos contain demo applications built using the library operators. Webdemos contain webpages for the demos. Benchmark contains performance testing applications. Contrib contains additional operators that interface with third party softwares. Samples contain some sample code that shows how to use the library operators.


[91/98] [abbrv] incubator-apex-malhar git commit: Cleanup of web resources

Posted by da...@apache.org.
Cleanup of web resources


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/f0863913
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/f0863913
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/f0863913

Branch: refs/heads/master
Commit: f08639139cb46b7f8162a9187b9c3eff243df809
Parents: 862e157
Author: Pramod Immaneni <pr...@datatorrent.com>
Authored: Fri Nov 6 10:58:17 2015 -0800
Committer: Pramod Immaneni <pr...@datatorrent.com>
Committed: Fri Nov 6 10:58:17 2015 -0800

----------------------------------------------------------------------
 apps/logstream/src/main/html/ClientData.js      |   39 +
 apps/logstream/src/main/html/ClientData.php     |   33 +
 .../src/main/html/DrawPageViewTimeChart.js      |  173 +
 .../src/main/html/PageViewTimeData.php          |  109 +
 apps/logstream/src/main/html/Server404.php      |   37 +
 apps/logstream/src/main/html/ServerLoad.php     |  100 +
 .../logstream/src/main/html/TopIpClientChart.js |   55 +
 .../logstream/src/main/html/TopIpClientData.php |   37 +
 apps/logstream/src/main/html/TopIpData.js       |   54 +
 apps/logstream/src/main/html/TopIpData.php      |   37 +
 apps/logstream/src/main/html/TopServer.js       |   53 +
 apps/logstream/src/main/html/TopServer.php      |   37 +
 apps/logstream/src/main/html/TopUrlChart.js     |   53 +
 apps/logstream/src/main/html/TopUrlData.php     |   37 +
 apps/logstream/src/main/html/TotalViews.js      |   38 +
 apps/logstream/src/main/html/TotalViews.php     |   27 +
 apps/logstream/src/main/html/Url404.js          |   64 +
 apps/logstream/src/main/html/Url404.php         |   37 +
 apps/logstream/src/main/html/global.js          |  133 +
 apps/logstream/src/main/html/index.php          |  176 +
 apps/logstream/src/main/html/info.php           |   22 +
 apps/logstream/src/main/html/malhar.css         | 4564 +++++++++++++++++
 apps/logstream/src/main/html/server.js          |  115 +
 apps/logstream/src/main/html/serverfail.js      |   64 +
 contrib/src/main/html/adsdimension/global.js    |  379 --
 contrib/src/main/html/adsdimension/index.php    |  235 -
 contrib/src/main/html/adsdimension/json.php     |   84 -
 .../src/main/html/adsdimension/main_banner.png  |  Bin 2181 -> 0 bytes
 contrib/src/main/html/adsdimension/malhar.css   | 4688 ------------------
 contrib/src/main/html/machinedata/global.js     |  269 -
 contrib/src/main/html/machinedata/index.php     |  269 -
 contrib/src/main/html/machinedata/json.php      |   96 -
 .../src/main/html/machinedata/main_banner.png   |  Bin 10002 -> 0 bytes
 contrib/src/main/html/machinedata/malhar.css    | 4688 ------------------
 contrib/src/main/html/siteops/ClientData.js     |   39 -
 contrib/src/main/html/siteops/ClientData.php    |   33 -
 .../main/html/siteops/DrawPageViewTimeChart.js  |  173 -
 .../src/main/html/siteops/PageViewTimeData.php  |  109 -
 contrib/src/main/html/siteops/Server404.php     |   37 -
 contrib/src/main/html/siteops/ServerLoad.php    |  100 -
 .../src/main/html/siteops/TopIpClientChart.js   |   55 -
 .../src/main/html/siteops/TopIpClientData.php   |   37 -
 contrib/src/main/html/siteops/TopIpData.js      |   54 -
 contrib/src/main/html/siteops/TopIpData.php     |   37 -
 contrib/src/main/html/siteops/TopServer.js      |   53 -
 contrib/src/main/html/siteops/TopServer.php     |   37 -
 contrib/src/main/html/siteops/TopUrlChart.js    |   53 -
 contrib/src/main/html/siteops/TopUrlData.php    |   37 -
 contrib/src/main/html/siteops/TotalViews.js     |   38 -
 contrib/src/main/html/siteops/TotalViews.php    |   27 -
 contrib/src/main/html/siteops/Url404.js         |   64 -
 contrib/src/main/html/siteops/Url404.php        |   37 -
 contrib/src/main/html/siteops/global.js         |  133 -
 contrib/src/main/html/siteops/index.php         |  177 -
 contrib/src/main/html/siteops/info.php          |   22 -
 contrib/src/main/html/siteops/main_banner.png   |  Bin 2181 -> 0 bytes
 contrib/src/main/html/siteops/malhar.css        | 4564 -----------------
 contrib/src/main/html/siteops/server.js         |  115 -
 contrib/src/main/html/siteops/serverfail.js     |   64 -
 demos/machinedata/src/main/html/global.js       |  269 +
 demos/machinedata/src/main/html/index.php       |  268 +
 demos/machinedata/src/main/html/json.php        |   96 +
 demos/machinedata/src/main/html/malhar.css      | 4688 ++++++++++++++++++
 63 files changed, 11415 insertions(+), 16803 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/ClientData.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/ClientData.js b/apps/logstream/src/main/html/ClientData.js
new file mode 100644
index 0000000..28df87a
--- /dev/null
+++ b/apps/logstream/src/main/html/ClientData.js
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawClientDataTableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        document.getElementById('totaldata').innerHTML = pts[0];
+      }
+    }
+    connect.open('GET',  "ClientData.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/ClientData.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/ClientData.php b/apps/logstream/src/main/html/ClientData.php
new file mode 100644
index 0000000..5e97e96
--- /dev/null
+++ b/apps/logstream/src/main/html/ClientData.php
@@ -0,0 +1,33 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(9);
+
+// result array
+$result = array();
+
+$value = $redis->get(1);
+$result[] = $value;
+
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/DrawPageViewTimeChart.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/DrawPageViewTimeChart.js b/apps/logstream/src/main/html/DrawPageViewTimeChart.js
new file mode 100644
index 0000000..9a71f14
--- /dev/null
+++ b/apps/logstream/src/main/html/DrawPageViewTimeChart.js
@@ -0,0 +1,173 @@
+/*
+ * 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.
+ */
+/**
+ * Functions for drawing page view vs time chart.
+ */
+
+
+function PageViewTimeDataUrl()
+{    
+    var url = "PageViewTimeData.php?";
+    url += "from=";
+    url += Math.floor(pageViewLookback);
+    if (pageViewUrl) 
+    {
+       url += "&url=" + pageViewUrl;   
+    }
+    //url += "&url=mydomain.com/services.php?serviceid=6";
+    return url;  
+}
+
+function RenderPageViewTimeChart()
+{
+  // create/delete rows 
+  if (pageViewTable.getNumberOfRows() < pageDataPoints.length)
+  {    
+    var numRows = pageDataPoints.length - pageViewTable.getNumberOfRows();
+    pageViewTable.addRows(numRows);
+  } else {
+    for(var i=(pageViewTable.getNumberOfRows()-1); i >= pageDataPoints.length; i--)
+    {
+      pageViewTable.removeRow(i);    
+    }
+  }
+
+  // Populate data table with time/cost data points. 
+  for(var i=0; i < pageViewTable.getNumberOfRows(); i++)
+  {
+    //if(parseFloat(aggrDataPoints[i].cost) < 500) continue;
+    pageViewTable.setCell(i, 0, new Date(parseInt(pageDataPoints[i].timestamp)));
+    pageViewTable.setCell(i, 1, parseFloat(pageDataPoints[i].view));
+  }
+    
+  // get options
+  var page = document.getElementById('page').value;
+  var index = document.getElementById('index').value;
+  var title = "ALL Urls (PVS/Min)";
+  if (page == "home") title = "home.php (PVS/Min)";
+  if (page == "contact") title = "contactus.php (PVS/Min)";
+  if (page == "about") title = "about.php (PVS/Min)";
+  if (page == "support") title = "support.php (PVS/Min)";
+  if (page == "product") {
+    title = "product.php-" + index + " (PVS/Min)";
+  }
+  if (page == "services") {
+    title = "services.php-" + index + " (PVS/Min)";
+  }
+  if (page == "products") {
+    title = "products.php-" + index + " (PVS/Min)";
+  }
+
+  var options = { pointSize: 0, lineWidth : 1, legend : {position : 'top'} };
+  options.title = title;
+
+  // Draw line chart.
+  pageViewChart.draw(PageViewView, options); 
+}
+
+function DrawPageViewTimeChart()
+{
+  var url = PageViewTimeDataUrl();
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        pageViewData = connect.response;
+        var pts = JSON.parse(pageViewData);
+        for(var i=0; i <  pts.length; i++) 
+        {
+          pageDataPoints.push(pts[i]);
+          delete pts[i];
+        }
+        delete pts;
+        sortByKey(pageDataPoints, "timestamp");
+        RenderPageViewTimeChart();
+        delete pageViewData;
+        delete pageDataPoints;
+        pageDataPoints = new Array();
+      }
+    }
+    connect.open('GET',  url, true);
+    connect.send(null);
+  } catch(e) {
+  }
+  pageViewLookback = (new Date().getTime()/1000) - (3600 * pageViewInterval)-60;
+}
+
+
+function HandlePageViewTimeSubmit()
+{
+  // remove old time  
+  if(pageNowPlaying) clearInterval(pageNowPlaying); 
+
+  // get submit values 
+  var page = document.getElementById('page').value;
+  var index = document.getElementById('index').value;
+  if (page == "all") pageViewUrl ="";
+  if (page == "home") pageViewUrl = "mydomain.com/home.php";
+  if (page == "contact") pageViewUrl = "mydomain.com/contactus.php";
+  if (page == "about") pageViewUrl = "mydomain.com/about.php";
+  if (page == "support") pageViewUrl = "mydomain.com/support.php";
+  if (page == "product")
+  {
+    pageViewUrl = "mydomain.com/products.php";   
+    if (index && (index.length > 0)) pageViewUrl += "?productid=" + index;
+  }
+  if (page == "services") 
+  {
+    pageViewUrl = "mydomain.com/services.php";   
+    if (index && (index.length > 0)) pageViewUrl += "?serviceid=" + index;
+  }
+  if (page == "partners") 
+  {
+    pageViewUrl = "mydomain.com/partners.php";   
+    if (index && (index.length > 0)) pageViewUrl += "?partnerid=" + index;
+  }
+  pageViewLookback = document.getElementById('pageviewlookback').value;
+  if ( !pageViewLookback || (pageViewLookback == "")) {
+    pageViewLookback = (new Date().getTime()/1000) - 3600;
+  }  else {
+    pageViewLookback = (new Date().getTime()/1000) - 3600 * pageViewLookback;
+  }
+
+  // set from values  
+  document.getElementById('page').value = page;
+  document.getElementById('index').value = index;
+  var lookback = document.getElementById('pageviewlookback').value;
+  document.getElementById('pageviewlookback').value = lookback;
+  pageViewInterval = lookback;
+    
+  // draw chart
+  DrawPageViewTimeChart();
+  pageNowPlaying = setInterval(DrawPageViewTimeChart, 60 * 1000);
+}
+
+function handleUrlChange()
+{
+  var page = document.getElementById('page').value;
+  if ((page == "home")||(page == "contact")||(page == "about")||(page == "support") || (page =="all"))
+  {
+    document.getElementById('index').value = 0;
+    document.getElementById('index').disabled = "true";   
+  } else {
+    document.getElementById('index').value = 0;
+    document.getElementById('index').disabled = ""; 
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/PageViewTimeData.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/PageViewTimeData.php b/apps/logstream/src/main/html/PageViewTimeData.php
new file mode 100644
index 0000000..7c42679
--- /dev/null
+++ b/apps/logstream/src/main/html/PageViewTimeData.php
@@ -0,0 +1,109 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(1);
+$format = 'YmdHi';
+$incr = 60;
+
+// Get from date 
+$from = $_GET['from'];
+if (!$from || empty($from)) {
+  $from  = time()-3600;
+}
+
+// get url   
+$url = $_GET['url'];
+
+// result array
+$result = array();
+
+while ($from < time()) 
+{
+  $date = gmdate($format, $from);
+  if (!$url || empty($url))
+  {
+    // view total   
+    $total = 0;
+        
+    // home.php views
+    $key =  'm|' . $date . '|0:mydomain.com/home.php';
+    $arr =  $redis->hGetAll($key);
+    $total += $arr[1];
+            
+    // contactus.php views
+    $key =  'm|' . $date . '|0:mydomain.com/contactus.php';
+    $arr =  $redis->hGetAll($key);
+    $total += $arr[1];
+    
+    // contactus.php views
+    $key =  'm|' . $date . '|0:mydomain.com/about.php';
+    $arr =  $redis->hGetAll($key);
+    $total += $arr[1];
+    
+    // contactus.php views
+    $key =  'm|' . $date . '|0:mydomain.com/support.php';
+    $arr =  $redis->hGetAll($key);
+    $total += $arr[1];
+    
+    // products.php 
+    for ($i = 0; $i < 100; $i++)
+    {      
+        $key =  'm|' . $date . '|0:mydomain.com/products.php?productid='. $i;
+        $arr =  $redis->hGetAll($key);
+        $total += $arr[1];
+    }
+
+    // services.php 
+    for ($i = 0; $i < 100; $i++)
+    {      
+        $key =  'm|' . $date . '|0:mydomain.com/services.php?serviceid='. $i;
+        $arr =  $redis->hGetAll($key);
+        $total += $arr[1];
+    }
+
+    // partners.php 
+    for ($i = 0; $i < 100; $i++)
+    {      
+        $key =  'm|' . $date . '|0:mydomain.com/partners.php?partnerid='. $i;
+        $arr =  $redis->hGetAll($key);
+        $total += $arr[1];
+    }
+
+    // store result in array   
+    $result[] = array("timestamp" => $from * 1000, "url" => "all", "view" => $total);
+
+  } else {
+    
+    $key =  'm|' . $date . '|0:' . $url;
+    $arr = $redis->hGetAll($key);
+    if ($arr)
+    {
+      $result[] = array("timestamp" => $from * 1000, "url" => $url, "view" => $arr[1]);
+    }
+  }
+  $from += $incr;
+}
+
+array_pop($result);
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/Server404.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/Server404.php b/apps/logstream/src/main/html/Server404.php
new file mode 100644
index 0000000..314d5e9
--- /dev/null
+++ b/apps/logstream/src/main/html/Server404.php
@@ -0,0 +1,37 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(8);
+
+// result array
+$result = array();
+
+for($i = 0; $i < 10; $i++)
+{
+  $value = $redis->get($i);
+  //var_dump($value);
+  $result[] = $value;
+}
+
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/ServerLoad.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/ServerLoad.php b/apps/logstream/src/main/html/ServerLoad.php
new file mode 100644
index 0000000..d2f4dca
--- /dev/null
+++ b/apps/logstream/src/main/html/ServerLoad.php
@@ -0,0 +1,100 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(4);
+$format = 'YmdHi';
+$incr = 60;
+
+// Get from date 
+$from = $_GET['from'];
+if (!$from || empty($from)) {
+  $from  = time()-3600;
+}
+
+// get server   
+$server = $_GET['server'];
+
+// result array
+$result = array();
+
+while ($from < time()) 
+{
+  $date = gmdate($format, $from);
+  if (!$server || empty($server) || ($server == "all"))
+  {
+    // total server load  
+    $total = 0;
+          
+    // server loads 
+    $key =  'm|' . $date . '|0:server0.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server1.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server2.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server3.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server4.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server5.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server6.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server7.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server8.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server9.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+
+    // add to result 
+
+    // add to result 
+    $result[] = array("timestamp" => $from * 1000, "server" => "all", "view" => $total);
+
+  } else {
+    
+    $key =  'm|' . $date . '|0:' . $server;
+    $arr = $redis->hGetAll($key);
+    if ($arr)
+    {
+      $result[] = array("timestamp" => $from * 1000, "server" => $server, "view" => $arr[1]);
+    }
+  }
+  $from += $incr;
+}
+
+array_pop($result);
+print json_encode($result);
+
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/TopIpClientChart.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopIpClientChart.js b/apps/logstream/src/main/html/TopIpClientChart.js
new file mode 100644
index 0000000..ee1a0c8
--- /dev/null
+++ b/apps/logstream/src/main/html/TopIpClientChart.js
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top IpClient table.
+ */
+
+function DrawTopIpClientTableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        topIpClientTable = new google.visualization.DataTable();
+        topIpClientTable.addColumn('string', 'Client IP');
+        topIpClientTable.addColumn('number', 'requests/sec');
+        topIpClientTable.addRows(10);
+        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
+        {
+          var row = pts[i].split("##");
+          topIpClientTable.setCell(i, 0, row[0]);
+          topIpClientTable.setCell(i, 1, parseInt(row[1]));
+          delete row
+          delete pts[i];
+        }
+        topIpClientTableChart.draw(topIpClientTable, {showRowNumber: true});
+        delete topIpClientTable;
+        delete data;
+        delete pts;
+        //document.getElementById('top_IpClient_div').innerHTML = data;
+      }
+    }
+    connect.open('GET',  "TopIpClientData.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/TopIpClientData.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopIpClientData.php b/apps/logstream/src/main/html/TopIpClientData.php
new file mode 100644
index 0000000..ddb644d
--- /dev/null
+++ b/apps/logstream/src/main/html/TopIpClientData.php
@@ -0,0 +1,37 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(3);
+
+// result array
+$result = array();
+
+for($i = 0; $i < 10; $i++)
+{
+  $value = $redis->get($i);
+  //var_dump($value);
+  $result[] = $value;
+}
+
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/TopIpData.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopIpData.js b/apps/logstream/src/main/html/TopIpData.js
new file mode 100644
index 0000000..e6f7f67
--- /dev/null
+++ b/apps/logstream/src/main/html/TopIpData.js
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawRiskyClientTableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        var riskyCleintTable = new google.visualization.DataTable();
+        riskyCleintTable.addColumn('string', 'Client Ip');
+        riskyCleintTable.addColumn('number', 'bytes/sec');
+        riskyCleintTable.addRows(10);
+        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
+        {
+          var row = pts[i].split("##");
+          riskyCleintTable.setCell(i, 0, row[0]);
+          riskyCleintTable.setCell(i, 1, parseInt(row[1]));
+        }
+        //document.getElementById('risky_client_div').innerHTML = data;
+        //document.getElementById('risky_client_div').innerHTML = riskyCleintTable.getNumberOfRows();
+        riskyClientTableChart.draw(riskyCleintTable, {showRowNumber: true});
+        delete riskyCleintTable;
+        delete data;
+        delete pts;
+      }
+    }
+    connect.open('GET',  "TopIpData.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/TopIpData.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopIpData.php b/apps/logstream/src/main/html/TopIpData.php
new file mode 100644
index 0000000..ce07ad8
--- /dev/null
+++ b/apps/logstream/src/main/html/TopIpData.php
@@ -0,0 +1,37 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(6);
+
+// result array
+$result = array();
+
+for($i = 0; $i < 10; $i++)
+{
+  $value = $redis->get($i);
+  $result[] = $value;
+}
+
+print json_encode($result);
+
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/TopServer.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopServer.js b/apps/logstream/src/main/html/TopServer.js
new file mode 100644
index 0000000..b94a876
--- /dev/null
+++ b/apps/logstream/src/main/html/TopServer.js
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawTopServerTableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        topServerTable = new google.visualization.DataTable();
+        topServerTable.addColumn('string', 'SERVER');
+        topServerTable.addColumn('number', 'requests/sec');
+        topServerTable.addRows(10);
+        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
+        {
+          var row = pts[i].split("##");
+          topServerTable.setCell(i, 0, row[0]);
+          topServerTable.setCell(i, 1, parseInt(row[1]));
+          delete pts[i];
+        }
+        topServerTableChart.draw(topServerTable, {showRowNumber: true});
+        delete topServerTable;
+        delete data;
+        delete pts;
+      }
+    }
+    connect.open('GET',  "TopServer.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/TopServer.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopServer.php b/apps/logstream/src/main/html/TopServer.php
new file mode 100644
index 0000000..91bfab5
--- /dev/null
+++ b/apps/logstream/src/main/html/TopServer.php
@@ -0,0 +1,37 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(10);
+
+// result array
+$result = array();
+
+for($i = 0; $i < 10; $i++)
+{
+  $value = $redis->get($i);
+  //var_dump($value);
+  $result[] = $value;
+}
+
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/TopUrlChart.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopUrlChart.js b/apps/logstream/src/main/html/TopUrlChart.js
new file mode 100644
index 0000000..646bb69
--- /dev/null
+++ b/apps/logstream/src/main/html/TopUrlChart.js
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawTopUrlTableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        topUrlTable = new google.visualization.DataTable();
+        topUrlTable.addColumn('string', 'URL');
+        topUrlTable.addColumn('number', 'requests/sec');
+        topUrlTable.addRows(10);
+        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
+        {
+          var row = pts[i].split("##");
+          topUrlTable.setCell(i, 0, row[0]);
+          topUrlTable.setCell(i, 1, parseInt(row[1]));
+          delete pts[i];
+        }
+        topUrlTableChart.draw(topUrlTable, {showRowNumber: true});
+        delete topUrlTable;
+        delete data;
+        delete pts;
+      }
+    }
+    connect.open('GET',  "TopUrlData.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/TopUrlData.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopUrlData.php b/apps/logstream/src/main/html/TopUrlData.php
new file mode 100644
index 0000000..52c3ddf
--- /dev/null
+++ b/apps/logstream/src/main/html/TopUrlData.php
@@ -0,0 +1,37 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(2);
+
+// result array
+$result = array();
+
+for($i = 0; $i < 20; $i++)
+{
+  $value = $redis->get($i);
+  //var_dump($value);
+  $result[] = $value;
+}
+
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/TotalViews.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TotalViews.js b/apps/logstream/src/main/html/TotalViews.js
new file mode 100644
index 0000000..58ecf7e
--- /dev/null
+++ b/apps/logstream/src/main/html/TotalViews.js
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawTotalViewsTableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        document.getElementById('totalviews').innerHTML = data;
+      }
+    }
+    connect.open('GET',  "TotalViews.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/TotalViews.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TotalViews.php b/apps/logstream/src/main/html/TotalViews.php
new file mode 100644
index 0000000..178cb9b
--- /dev/null
+++ b/apps/logstream/src/main/html/TotalViews.php
@@ -0,0 +1,27 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(11);
+
+$value = $redis->get(1);
+print $value;
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/Url404.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/Url404.js b/apps/logstream/src/main/html/Url404.js
new file mode 100644
index 0000000..faa1734
--- /dev/null
+++ b/apps/logstream/src/main/html/Url404.js
@@ -0,0 +1,64 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawUrl404TableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        var url404Table = new google.visualization.DataTable();
+        url404Table.addColumn('string', 'URL');
+        url404Table.addColumn('number', '404/sec');
+        url404Table.addRows(10);
+        for(var i=0; ((i <  pts.length)&&(i < 10)); i++) 
+        {
+          var row = pts[i].split("##");
+          if ((row[1] == null)||(row[1] == ""))
+          {
+            url404Table.setCell(i, 0,  "-");
+          } else {
+            url404Table.setCell(i, 0, row[0]);
+          }
+          if ((row[1] == null)||(row[1] == ""))
+          {
+            url404Table.setCell(i, 1, 0);   
+          } else {
+            url404Table.setCell(i, 1, parseInt(row[1]));
+          }
+        }
+        //document.getElementById('risky_client_div').innerHTML = data;
+        //document.getElementById('risky_client_div').innerHTML = url404Table.getNumberOfRows();
+        url404TableChart.draw(url404Table, {showRowNumber: true});
+        delete url404Table;
+        delete data;
+        delete pts;
+      }
+    }
+    connect.open('GET',  "Url404.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/Url404.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/Url404.php b/apps/logstream/src/main/html/Url404.php
new file mode 100644
index 0000000..82067f8
--- /dev/null
+++ b/apps/logstream/src/main/html/Url404.php
@@ -0,0 +1,37 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(7);
+
+// result array
+$result = array();
+
+for($i = 0; $i < 10; $i++)
+{
+  $value = $redis->get($i);
+  //var_dump($value);
+  $result[] = $value;
+}
+
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/global.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/global.js b/apps/logstream/src/main/html/global.js
new file mode 100644
index 0000000..7555f39
--- /dev/null
+++ b/apps/logstream/src/main/html/global.js
@@ -0,0 +1,133 @@
+/*
+ * 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.
+ */
+/**
+ * Declaration and initialization for global variables.
+ */
+
+// url parameters   
+var params;
+
+// Page View/Time
+var pageViewData; 
+var pageDataPoints; 
+var pageViewTable;
+var pageViewChart; 
+var PageViewView;
+var pageViewRefresh;
+var pageViewLookback;
+var pageViewUrl;
+var pageViewInterval;
+var pageNowPlaying;
+
+// top url(s)
+var topUrlTable;
+var topUrlTableChart;
+
+// server load  
+var serverLoadRefresh;
+var serverLoadLookback;
+var serverName;
+var serverLoadDataPoints;
+var serverLoadTable;
+var serverLoadChart;
+var serverLoadView;
+var serverLoadInterval;
+
+// Top server(s)
+var topServerTable;
+var topServerTableChart;
+
+var topIpClientTable;
+var topIpClientTableChart;
+var riskyClientTableChart;
+var url404TableChart;
+var server404TableChart;
+var serverNowPlaying;
+
+
+// Get split query string
+function QueryString() {
+  var query_string = {};
+  var query = window.location.search.substring(1);
+  return query;
+}
+function SplitQuery(query)
+{  
+	var params = {};
+	var vars = query.split("&");
+	for (var i=0;i<vars.length;i++)
+	{
+		var pair = vars[i].split("=");
+		if(pair.length == 2) 
+		{
+			params[pair[0]] = pair[1];
+		}
+	}
+	return params;
+}  
+
+// Initialize global variable(s)
+function InitializeGlobal()
+{
+  // Initialize params  
+  params = SplitQuery(QueryString()); 
+
+  // intialize page view variables
+  pageDataPoints = new Array();
+  pageViewTable = new google.visualization.DataTable();
+  pageViewTable.addColumn('datetime', 'Time');
+  pageViewTable.addColumn('number', 'Page View');
+  pageViewChart = new google.visualization.LineChart(document.getElementById('pageview_chart_div'));
+  PageViewView = new google.visualization.DataView(pageViewTable);
+  pageViewRefresh = 60;
+  pageViewLookback = (new Date().getTime()/1000) - 3600;
+  document.getElementById('pageviewlookback').value = "1";
+  pageViewInterval = 1;
+
+  serverLoadRefresh = 60;
+  serverLoadLookback = (new Date().getTime()/1000) - 3600;
+  document.getElementById('serverloadlookback').value = "1";
+  serverLoadDataPoints = new Array();
+  serverLoadTable = new google.visualization.DataTable();
+  serverLoadTable.addColumn('datetime', 'Time');
+  serverLoadTable.addColumn('number', 'Server Load');
+  serverLoadChart = new google.visualization.LineChart(document.getElementById('server_load_div'));
+  serverLoadView = new google.visualization.DataView(serverLoadTable);
+  serverLoadInterval = 1;
+
+  topUrlTableChart = new google.visualization.Table(document.getElementById('top_url_div'));
+  topServerTableChart = new google.visualization.Table(document.getElementById('top_server_div'));
+
+  topIpClientTableChart = new google.visualization.Table(document.getElementById('top_IpClient_div'));
+  riskyClientTableChart = new google.visualization.Table(document.getElementById('top_ipdata_div'));
+
+  url404TableChart = new google.visualization.Table(document.getElementById('url_404_div'));
+  server404TableChart = new google.visualization.Table(document.getElementById('server_404_div'));
+}
+
+/**
+ * Sort json array  
+ */
+function sortByKey(array, key) {
+    return array.sort(function(a, b) {
+        var x = a[key]; var y = b[key];
+        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+    });
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/index.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/index.php b/apps/logstream/src/main/html/index.php
new file mode 100644
index 0000000..3db53bc
--- /dev/null
+++ b/apps/logstream/src/main/html/index.php
@@ -0,0 +1,176 @@
+/*
+ * 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.
+ */
+<!--
+ --  Copyright (c) 2012-2013 DataTorrent, Inc.
+ --  All Rights Reserved.
+ -->
+
+<!-- ## Siteops is deprecated, please use logstream instead ## -->
+    
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Data Torrent : Site Operations Demo </title>
+
+<link rel="stylesheet" type="text/css" href="malhar.css">
+
+<!-- Google charts include -->
+<script type="text/javascript" src="https://www.google.com/jsapi"></script>
+<script type="text/javascript">
+google.load('visualization', '1', {'packages':['corechart']});
+google.load('visualization', '1', {'packages':['table']});
+
+</script>
+
+<!-- DataTorrent charting utils -->
+<script type="text/javascript" src="global.js"></script>
+<script type="text/javascript" src="DrawPageViewTimeChart.js"></script>
+<script type="text/javascript" src="TopUrlChart.js"></script>
+<script type="text/javascript" src="TopServer.js"></script>
+<script type="text/javascript" src="TopIpClientChart.js"></script>
+<script type="text/javascript" src="server.js"></script>
+<script type="text/javascript" src="TopIpData.js"></script>
+<script type="text/javascript" src="TotalViews.js"></script>
+<script type="text/javascript" src="Url404.js"></script>
+<script type="text/javascript" src="ClientData.js"></script>
+<script type="text/javascript" src="serverfail.js"></script>
+<script type="text/javascript" src="TotalViews.js"></script>
+
+<!-- window onload -->
+<script type="text/javascript">
+
+window.onload = function() {
+  
+  // Initialize variables   
+  InitializeGlobal();
+   
+  // Draw top charts 
+  DrawClientDataTableChart();
+  DrawTotalViewsTableChart();
+  DrawTopUrlTableChart();
+  DrawTopServerTableChart();
+  DrawRiskyClientTableChart();
+  DrawTopIpClientTableChart(); 
+  DrawUrl404TableChart();
+  DrawServer404TableChart();
+  setInterval(DrawClientDataTableChart, 1000)
+  setInterval(DrawTotalViewsTableChart, 1000);
+  setInterval(DrawTopUrlTableChart, 1000);
+  setInterval(DrawTopServerTableChart, 1000);
+  setInterval(DrawRiskyClientTableChart, 1000);
+  setInterval(DrawTopIpClientTableChart, 1000);
+  setInterval(DrawUrl404TableChart, 1000);
+  setInterval(DrawServer404TableChart, 1000);
+};
+
+</script>
+
+</head>
+<body>
+
+    <div id="header">
+        <ul class="dashboard-modes">
+            <li>
+                <a href="#" class="active">Site Operations Demo</a>
+            </li>
+        </ul>
+
+    </div>
+	
+	<div id="main">
+    <div id="pagecontent">
+        <div class="dashboardMgr">
+            <div class="inner" style="">
+                <h2 class="title">Page views vs Time Chart</h2> 
+                <form onsubmit="return false;">
+                        Select Page:
+                        <select name="page" id="page" style="width:200px;" onchange="handleUrlChange();">
+                           <option value="all">ALL</option>
+                           <option value="home">home.php</option>
+                           <option value="contact">contactus.php</option>
+                           <option value="about">about.php</option>
+                           <option value="support">support.php</option>
+                           <option value="product">products.php</option>
+                           <option value="services">services.php</option>
+                           <option value="partners">partners.php</option>
+            		</select><br>
+                        Product/Services/Partners Index : 
+                        <select name="index" id="index" style="width:200px;" disabled="true" >
+                          <option value=\"$i\"></option>
+                          <?php
+                            for ($i = 0; $i < 100; $i++) {
+                              print "<option value=\"$i\">$i</option>\n";
+                            }
+        	           ?>
+                        </select><br>
+		        Look Back(Hours):
+                        <input type="text" name="lookback" id="pageviewlookback" class="input-small"/>
+                </form><br>
+                <a href="javascript:void(0)" onclick="HandlePageViewTimeSubmit();">View Chart</a><br><br>
+
+                <h2 class="title">Server Load vs Time Chart</h2> 
+                <form onsubmit="return false;">
+                        Server Name : 
+                        <select name="servername" id="servername" style="width:200px;">
+                          <option value="all">All</option>
+                          <?php
+                            for ($i = 0; $i < 10; $i++) {
+                              print "<option value=\"server{$i}.mydomain.com:80\">Server$i.mydomain.com</option>\n";
+                            }
+        	           ?>
+                        </select><br>
+		        Server Load Look Back(Hours):
+                        <input type="text" name="serverloadlookback" id="serverloadlookback" class="input-small"/>
+                </form><br>
+                <a href="javascript:void(0)" onclick="HandleServerLoadTimeSubmit();">View Server Load Chart</a><br><br>
+                
+                <b>Total Bytes/Sec :</b> <b id="totaldata"> </b> <br 
+                <b>Total Views/Sec :</b> <b id="totalviews"> </b> 
+            </div>
+        </div>
+        <div class="dashboardMain">
+           <div class="dbib">     
+                <div id="pageview_chart_div"></div>
+		<div id="server_load_div"></div>
+           </div>
+           <div class="dbib">
+                <table><tbody><tr>
+      
+		         <td>       <h1>Top 10 Urls</h1>
+		                    <div  id="top_url_div" ></div><br><br>
+                                    <h1>Top 10 Client IPs</h1>
+                                    <div id="top_IpClient_div"></div> <br><br>
+                                    <h1>Top 10 Urls with 404 response</h1>
+                                    <div id="url_404_div"></div>
+		          </td>
+		          <td>
+                                   <h1>Server Load</h1>
+		                   <div id="top_server_div"></div> <br><br>
+                                   <h1>Top 10 client IPs download</h1>
+                                   <div id="top_ipdata_div"></div> <br><br>
+                                   <h1>404 per Server</h1>
+                                   <div id="server_404_div"></div-->
+		           </td>
+                          
+               </tr></tbody></table>
+           </div>
+        </div>		
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/apps/logstream/src/main/html/info.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/info.php b/apps/logstream/src/main/html/info.php
new file mode 100644
index 0000000..adc6a88
--- /dev/null
+++ b/apps/logstream/src/main/html/info.php
@@ -0,0 +1,22 @@
+<?php
+/*
+ * 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.
+ */
+phpinfo();
+
+?>
\ No newline at end of file


[10/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/mongo_client.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/mongo_client.js b/web/demos/package/node_modules/mongodb/lib/mongodb/mongo_client.js
deleted file mode 100644
index 0b855b3..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/mongo_client.js
+++ /dev/null
@@ -1,441 +0,0 @@
-var Db = require('./db').Db
-  , Server = require('./connection/server').Server
-  , Mongos = require('./connection/mongos').Mongos
-  , ReplSet = require('./connection/repl_set/repl_set').ReplSet
-  , ReadPreference = require('./connection/read_preference').ReadPreference
-  , inherits = require('util').inherits
-  , EventEmitter = require('events').EventEmitter
-  , parse = require('./connection/url_parser').parse;
-
-/**
- * Create a new MongoClient instance.
- *
- * Options
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *  - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *  - **native_parser** {Boolean, default:false}, use c++ bson parser.
- *  - **forceServerObjectId** {Boolean, default:false}, force server to create _id fields instead of client.
- *  - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation.
- *  - **serializeFunctions** {Boolean, default:false}, serialize functions.
- *  - **raw** {Boolean, default:false}, peform operations using raw bson buffers.
- *  - **recordQueryStats** {Boolean, default:false}, record query statistics during execution.
- *  - **retryMiliSeconds** {Number, default:5000}, number of miliseconds between retries.
- *  - **numberOfRetries** {Number, default:5}, number of retries off connection.
- *  - **bufferMaxEntries** {Boolean, default: -1}, sets a cap on how many operations the driver will buffer up before giving up on getting a working connection, default is -1 which is unlimited
- * 
- * Deprecated Options 
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @class Represents a MongoClient
- * @param {Object} serverConfig server config object.
- * @param {Object} [options] additional options for the collection.
- */
-function MongoClient(serverConfig, options) {
-  if(serverConfig != null) {
-    options = options == null ? {} : options;
-    // If no write concern is set set the default to w:1
-    if(options != null && !options.journal && !options.w && !options.fsync) {
-      options.w = 1;
-    }
-    
-    // The internal db instance we are wrapping
-    this._db = new Db('test', serverConfig, options);    
-  }
-}
-
-/**
- * @ignore
- */
-inherits(MongoClient, EventEmitter);
-
-/**
- * Connect to MongoDB using a url as documented at
- *
- *  docs.mongodb.org/manual/reference/connection-string/
- *
- * Options
- *  - **uri_decode_auth** {Boolean, default:false} uri decode the user name and password for authentication
- *  - **db** {Object, default: null} a hash off options to set on the db object, see **Db constructor**
- *  - **server** {Object, default: null} a hash off options to set on the server objects, see **Server** constructor**
- *  - **replSet** {Object, default: null} a hash off options to set on the replSet object, see **ReplSet** constructor**
- *  - **mongos** {Object, default: null} a hash off options to set on the mongos object, see **Mongos** constructor**
- *
- * @param {String} url connection url for MongoDB.
- * @param {Object} [options] optional options for insert command
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the initialized db object or null if an error occured.
- * @return {null}
- * @api public
- */
-MongoClient.prototype.connect = function(url, options, callback) {
-  var self = this;
-
-  if(typeof options == 'function') {
-    callback = options;
-    options = {};
-  }
-
-  MongoClient.connect(url, options, function(err, db) {
-    if(err) return callback(err, db);
-    // Store internal db instance reference
-    self._db = db;
-    // Emit open and perform callback
-    self.emit("open", err, db);
-    callback(err, db);
-  });
-}
-
-/**
- * Initialize the database connection.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the connected mongoclient or null if an error occured.
- * @return {null}
- * @api public
- */
-MongoClient.prototype.open = function(callback) {
-  // Self reference
-  var self = this;
-  // Open the db
-  this._db.open(function(err, db) {
-    if(err) return callback(err, null);
-    // Emit open event
-    self.emit("open", err, db);
-    // Callback
-    callback(null, self);
-  })
-}
-
-/**
- * Close the current db connection, including all the child db instances. Emits close event if no callback is provided.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the close method or null if an error occured.
- * @return {null}
- * @api public
- */
-MongoClient.prototype.close = function(callback) {
-  this._db.close(callback);
-}
-
-/**
- * Create a new Db instance sharing the current socket connections.
- *
- * @param {String} dbName the name of the database we want to use.
- * @return {Db} a db instance using the new database.
- * @api public
- */
-MongoClient.prototype.db = function(dbName) {
-  return this._db.db(dbName);
-}
-
-/**
- * Connect to MongoDB using a url as documented at
- *
- *  docs.mongodb.org/manual/reference/connection-string/
- *
- * Options
- *  - **uri_decode_auth** {Boolean, default:false} uri decode the user name and password for authentication
- *  - **db** {Object, default: null} a hash off options to set on the db object, see **Db constructor**
- *  - **server** {Object, default: null} a hash off options to set on the server objects, see **Server** constructor**
- *  - **replSet** {Object, default: null} a hash off options to set on the replSet object, see **ReplSet** constructor**
- *  - **mongos** {Object, default: null} a hash off options to set on the mongos object, see **Mongos** constructor**
- *
- * @param {String} url connection url for MongoDB.
- * @param {Object} [options] optional options for insert command
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the initialized db object or null if an error occured.
- * @return {null}
- * @api public
- */
-MongoClient.connect = function(url, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = typeof args[args.length - 1] == 'function' ? args.pop() : null;
-  options = args.length ? args.shift() : null;
-  options = options || {};
-
-  // Set default empty server options  
-  var serverOptions = options.server || {};
-  var mongosOptions = options.mongos || {};
-  var replSetServersOptions = options.replSet || options.replSetServers || {};
-  var dbOptions = options.db || {};
-
-  // If callback is null throw an exception
-  if(callback == null) 
-    throw new Error("no callback function provided");
-
-  // Parse the string
-  var object = parse(url, options);
-  // Merge in any options for db in options object
-  if(dbOptions) {
-    for(var name in dbOptions) object.db_options[name] = dbOptions[name];
-  }
-
-  // Added the url to the options
-  object.db_options.url = url;
-
-  // Merge in any options for server in options object
-  if(serverOptions) {
-    for(var name in serverOptions) object.server_options[name] = serverOptions[name];
-  }
-
-  // Merge in any replicaset server options
-  if(replSetServersOptions) {
-    for(var name in replSetServersOptions) object.rs_options[name] = replSetServersOptions[name];    
-  }
-
-  // Merge in any replicaset server options
-  if(mongosOptions) {
-    for(var name in mongosOptions) object.mongos_options[name] = mongosOptions[name];    
-  }
-
-  // We need to ensure that the list of servers are only either direct members or mongos
-  // they cannot be a mix of monogs and mongod's
-  var totalNumberOfServers = object.servers.length;
-  var totalNumberOfMongosServers = 0;
-  var totalNumberOfMongodServers = 0;
-  var serverConfig = null;
-  var errorServers = {};
-
-  // Failure modes
-  if(object.servers.length == 0) throw new Error("connection string must contain at least one seed host");
-
-  // If we have no db setting for the native parser try to set the c++ one first
-  object.db_options.native_parser = _setNativeParser(object.db_options);
-  // If no auto_reconnect is set, set it to true as default for single servers
-  if(typeof object.server_options.auto_reconnect != 'boolean') {
-    object.server_options.auto_reconnect = true;
-  }
-
-  // If we have more than a server, it could be replicaset or mongos list
-  // need to verify that it's one or the other and fail if it's a mix
-  // Connect to all servers and run ismaster
-  for(var i = 0; i < object.servers.length; i++) {
-    // Set up socket options
-    var _server_options = {
-        poolSize:1
-      , socketOptions: {
-          connectTimeoutMS:30000 
-        , socketTimeoutMS: 30000
-      }
-      , auto_reconnect:false};
-
-    // Ensure we have ssl setup for the servers
-    if(object.rs_options.ssl) {
-      _server_options.ssl = object.rs_options.ssl;
-      _server_options.sslValidate = object.rs_options.sslValidate;
-      _server_options.sslCA = object.rs_options.sslCA;
-      _server_options.sslCert = object.rs_options.sslCert;
-      _server_options.sslKey = object.rs_options.sslKey;
-      _server_options.sslPass = object.rs_options.sslPass;
-    } else if(object.server_options.ssl) {
-      _server_options.ssl = object.server_options.ssl;
-      _server_options.sslValidate = object.server_options.sslValidate;
-      _server_options.sslCA = object.server_options.sslCA;
-      _server_options.sslCert = object.server_options.sslCert;
-      _server_options.sslKey = object.server_options.sslKey;
-      _server_options.sslPass = object.server_options.sslPass;
-    }
-
-    // Set up the Server object
-    var _server = object.servers[i].domain_socket 
-        ? new Server(object.servers[i].domain_socket, _server_options)
-        : new Server(object.servers[i].host, object.servers[i].port, _server_options);
-
-    var connectFunction = function(__server) { 
-      // Attempt connect
-      new Db(object.dbName, __server, {safe:false, native_parser:false}).open(function(err, db) {
-        // Update number of servers
-        totalNumberOfServers = totalNumberOfServers - 1;          
-        // If no error do the correct checks
-        if(!err) {
-          // Close the connection
-          db.close(true);
-          var isMasterDoc = db.serverConfig.isMasterDoc;
-          // Check what type of server we have
-          if(isMasterDoc.setName) totalNumberOfMongodServers++;
-          if(isMasterDoc.msg && isMasterDoc.msg == "isdbgrid") totalNumberOfMongosServers++;
-        } else {
-          errorServers[__server.host + ":" + __server.port] = __server;
-        }
-
-        if(totalNumberOfServers == 0) {
-          // If we have a mix of mongod and mongos, throw an error
-          if(totalNumberOfMongosServers > 0 && totalNumberOfMongodServers > 0) {
-            return process.nextTick(function() {
-              try {
-                callback(new Error("cannot combine a list of replicaset seeds and mongos seeds"));
-              } catch (err) {
-                if(db) db.close();
-                throw err
-              }              
-            })
-          }
-          
-          if(totalNumberOfMongodServers == 0 && object.servers.length == 1) {
-            var obj = object.servers[0];
-            serverConfig = obj.domain_socket ? 
-                new Server(obj.domain_socket, object.server_options)
-              : new Server(obj.host, obj.port, object.server_options);            
-          } else if(totalNumberOfMongodServers > 0 || totalNumberOfMongosServers > 0) {
-            var finalServers = object.servers
-              .filter(function(serverObj) {
-                return errorServers[serverObj.host + ":" + serverObj.port] == null;
-              })
-              .map(function(serverObj) {
-                  return new Server(serverObj.host, serverObj.port, object.server_options);
-              });
-            // Clean out any error servers
-            errorServers = {};
-            // Set up the final configuration
-            if(totalNumberOfMongodServers > 0) {
-              serverConfig = new ReplSet(finalServers, object.rs_options);                
-            } else {
-              serverConfig = new Mongos(finalServers, object.mongos_options);                         
-            }
-          }
-
-          if(serverConfig == null) {
-            return process.nextTick(function() {
-              try {
-                callback(new Error("Could not locate any valid servers in initial seed list"));
-              } catch (err) {
-                if(db) db.close();
-                throw err
-              }
-            });
-          }
-          // Ensure no firing off open event before we are ready
-          serverConfig.emitOpen = false;
-          // Set up all options etc and connect to the database
-          _finishConnecting(serverConfig, object, options, callback)
-        }
-      });        
-    }
-
-    // Wrap the context of the call
-    connectFunction(_server);    
-  }    
-}
-
-var _setNativeParser = function(db_options) {
-  if(typeof db_options.native_parser == 'boolean') return db_options.native_parser;
-
-  try {
-    require('bson').BSONNative.BSON;
-    return true;
-  } catch(err) {
-    return false;
-  }
-}
-
-var _finishConnecting = function(serverConfig, object, options, callback) {
-  // Safe settings
-  var safe = {};
-  // Build the safe parameter if needed
-  if(object.db_options.journal) safe.j = object.db_options.journal;
-  if(object.db_options.w) safe.w = object.db_options.w;
-  if(object.db_options.fsync) safe.fsync = object.db_options.fsync;
-  if(object.db_options.wtimeoutMS) safe.wtimeout = object.db_options.wtimeoutMS;
-
-  // If we have a read Preference set
-  if(object.db_options.read_preference) {
-    var readPreference = new ReadPreference(object.db_options.read_preference);
-    // If we have the tags set up
-    if(object.db_options.read_preference_tags)
-      readPreference = new ReadPreference(object.db_options.read_preference, object.db_options.read_preference_tags);
-    // Add the read preference
-    object.db_options.readPreference = readPreference;
-  }
-
-  // No safe mode if no keys
-  if(Object.keys(safe).length == 0) safe = false;
-
-  // Add the safe object
-  object.db_options.safe = safe;
-
-  // Get the socketTimeoutMS
-  var socketTimeoutMS = object.server_options.socketOptions.socketTimeoutMS || 0;
-
-  // If we have a replset, override with replicaset socket timeout option if available
-  if(serverConfig instanceof ReplSet) {
-    socketTimeoutMS = object.rs_options.socketOptions.socketTimeoutMS || socketTimeoutMS;
-  }
-
-  // Set socketTimeout to the same as the connectTimeoutMS or 30 sec
-  serverConfig.connectTimeoutMS = serverConfig.connectTimeoutMS || 30000;
-  serverConfig.socketTimeoutMS = serverConfig.connectTimeoutMS;
-
-  // Set up the db options
-  var db = new Db(object.dbName, serverConfig, object.db_options);
-  // Open the db
-  db.open(function(err, db){
-    if(err) {
-      return process.nextTick(function() {
-        try {
-          callback(err, null);
-        } catch (err) {
-          if(db) db.close();
-          throw err
-        }
-      });
-    }
-
-    // Reset the socket timeout
-    serverConfig.socketTimeoutMS = socketTimeoutMS || 0;
-
-    // Set the provided write concern or fall back to w:1 as default
-    if(db.options !== null && !db.options.safe && !db.options.journal 
-      && !db.options.w && !db.options.fsync && typeof db.options.w != 'number'
-      && (db.options.safe == false && object.db_options.url.indexOf("safe=") == -1)) {
-        db.options.w = 1;
-    }
-
-    if(err == null && object.auth){
-      // What db to authenticate against
-      var authentication_db = db;
-      if(object.db_options && object.db_options.authSource) {
-        authentication_db = db.db(object.db_options.authSource);
-      }
-
-      // Build options object
-      var options = {};
-      if(object.db_options.authMechanism) options.authMechanism = object.db_options.authMechanism;
-      if(object.db_options.gssapiServiceName) options.gssapiServiceName = object.db_options.gssapiServiceName;
-
-      // Authenticate
-      authentication_db.authenticate(object.auth.user, object.auth.password, options, function(err, success){
-        if(success){
-          process.nextTick(function() {
-            try {
-              callback(null, db);            
-            } catch (err) {
-              if(db) db.close();
-              throw err
-            }
-          });
-        } else {
-          if(db) db.close();
-          process.nextTick(function() {
-            try {
-              callback(err ? err : new Error('Could not authenticate user ' + auth[0]), null);
-            } catch (err) {
-              if(db) db.close();
-              throw err
-            }
-          });
-        }
-      });
-    } else {
-      process.nextTick(function() {
-        try {
-          callback(err, db);            
-        } catch (err) {
-          if(db) db.close();
-          throw err
-        }
-      })
-    }
-  });
-}
-
-exports.MongoClient = MongoClient;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js b/web/demos/package/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js
deleted file mode 100644
index 21e8cec..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js
+++ /dev/null
@@ -1,83 +0,0 @@
-var Long = require('bson').Long
-  , timers = require('timers');
-
-// Set processor, setImmediate if 0.10 otherwise nextTick
-var processor = require('../utils').processor();
-
-/**
-  Reply message from mongo db
-**/
-var MongoReply = exports.MongoReply = function() {
-  this.documents = [];
-  this.index = 0;
-};
-
-MongoReply.prototype.parseHeader = function(binary_reply, bson) {
-  // Unpack the standard header first
-  this.messageLength = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24;
-  this.index = this.index + 4;
-  // Fetch the request id for this reply
-  this.requestId = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24;
-  this.index = this.index + 4;
-  // Fetch the id of the request that triggered the response
-  this.responseTo = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24;
-  // Skip op-code field
-  this.index = this.index + 4 + 4;
-  // Unpack the reply message
-  this.responseFlag = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24;
-  this.index = this.index + 4;
-  // Unpack the cursor id (a 64 bit long integer)
-  var low_bits = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24;
-  this.index = this.index + 4;
-  var high_bits = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24;
-  this.index = this.index + 4;
-  this.cursorId = new Long(low_bits, high_bits);
-  // Unpack the starting from
-  this.startingFrom = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24;
-  this.index = this.index + 4;
-  // Unpack the number of objects returned
-  this.numberReturned = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24;
-  this.index = this.index + 4;
-}
-
-MongoReply.prototype.parseBody = function(binary_reply, bson, raw, callback) {
-  raw = raw == null ? false : raw;
-
-  try {
-    // Let's unpack all the bson documents, deserialize them and store them
-    for(var object_index = 0; object_index < this.numberReturned; object_index++) {
-      var _options = {promoteLongs: bson.promoteLongs};
-      
-      // Read the size of the bson object
-      var bsonObjectSize = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24;
-      
-      // If we are storing the raw responses to pipe straight through
-      if(raw) {
-        // Deserialize the object and add to the documents array
-        this.documents.push(binary_reply.slice(this.index, this.index + bsonObjectSize));
-      } else {
-        // Deserialize the object and add to the documents array
-        this.documents.push(bson.deserialize(binary_reply.slice(this.index, this.index + bsonObjectSize), _options));
-      }
-      
-      // Adjust binary index to point to next block of binary bson data
-      this.index = this.index + bsonObjectSize;
-    }
-    
-    // No error return
-    callback(null);
-  } catch(err) {
-    return callback(err);
-  }
-}
-
-MongoReply.prototype.is_error = function(){
-  if(this.documents.length == 1) {
-    return this.documents[0].ok == 1 ? false : true;
-  }
-  return false;
-};
-
-MongoReply.prototype.error_message = function() {
-  return this.documents.length == 1 && this.documents[0].ok == 1 ? '' : this.documents[0].errmsg;
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/scope.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/scope.js b/web/demos/package/node_modules/mongodb/lib/mongodb/scope.js
deleted file mode 100644
index aaf3221..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/scope.js
+++ /dev/null
@@ -1,199 +0,0 @@
-var Cursor2 = require('./cursor').Cursor
-  , Readable = require('stream').Readable
-  , utils = require('./utils')
-  , inherits = require('util').inherits;
-
-var Cursor = function Cursor(_scope_options, _cursor) {
-  //
-  // Backward compatible methods
-  this.toArray = function(callback) {
-    return _cursor.toArray(callback);
-  }
-
-  this.each = function(callback) {
-    return _cursor.each(callback);
-  }
-
-  this.next = function(callback) {
-    this.nextObject(callback);
-  }
-
-  this.nextObject = function(callback) {
-    return _cursor.nextObject(callback);
-  }
-
-  this.setReadPreference = function(readPreference, callback) {
-    _scope_options.readPreference = {readPreference: readPreference};
-    _cursor.setReadPreference(readPreference, callback);
-    return this;
-  }
-
-  this.batchSize = function(batchSize, callback) {
-    _scope_options.batchSize = batchSize;
-    _cursor.batchSize(_scope_options.batchSize, callback);
-    return this;
-  }
-
-  this.count = function(applySkipLimit, callback) {
-    return _cursor.count(applySkipLimit, callback);
-  }
-
-  this.stream = function(options) {
-    return _cursor.stream(options);
-  }
-
-  this.close = function(callback) {
-    return _cursor.close(callback);
-  }
-
-  this.explain = function(callback) {
-    return _cursor.explain(callback);
-  }
-
-  this.isClosed = function(callback) {
-    return _cursor.isClosed();
-  }
-
-  this.rewind = function() {
-    return _cursor.rewind();
-  }
-
-  // Internal methods
-  this.limit = function(limit, callback) {
-    _cursor.limit(limit, callback);
-    _scope_options.limit = limit;
-    return this;
-  }
-
-  this.skip = function(skip, callback) {
-    _cursor.skip(skip, callback);
-    _scope_options.skip = skip;
-    return this;
-  }
-
-  this.hint = function(hint) {
-    _scope_options.hint = hint;
-    _cursor.hint = _scope_options.hint;
-    return this;
-  }
-
-  this.maxTimeMS = function(maxTimeMS) {  
-    _cursor.maxTimeMS(maxTimeMS)
-    _scope_options.maxTimeMS = maxTimeMS;
-    return this;
-  },  
-
-  this.sort = function(keyOrList, direction, callback) {
-    _cursor.sort(keyOrList, direction, callback);
-    _scope_options.sort = keyOrList;
-    return this;
-  },
-
-  this.fields = function(fields) {
-    _fields = fields;
-    _cursor.fields = _fields;
-    return this;
-  }
-
-  //
-  // Backward compatible settings
-  Object.defineProperty(this, "timeout", {
-    get: function() {
-      return _cursor.timeout;
-    }
-  });
-
-  Object.defineProperty(this, "read", {
-    get: function() {
-      return _cursor.read;
-    }
-  });
-
-  Object.defineProperty(this, "items", {
-    get: function() {
-      return _cursor.items;
-    }
-  });  
-}
-
-var Scope = function(collection, _selector, _fields, _scope_options) {
-  var self = this;
-
-  // Ensure we have at least an empty cursor options object
-  _scope_options = _scope_options || {};
-  var _write_concern = _scope_options.write_concern || null;
-
-  // Ensure default read preference
-  if(!_scope_options.readPreference) _scope_options.readPreference = {readPreference: 'primary'};
-
-  // Set up the cursor
-  var _cursor = new Cursor2(
-        collection.db, collection, _selector
-      , _fields, _scope_options
-    );
-
-  // Write branch options
-  var writeOptions = {
-    insert: function(documents, callback) {
-      // Merge together options
-      var options = _write_concern || {};
-      // Execute insert
-      collection.insert(documents, options, callback);
-    },
-    
-    save: function(document, callback) {
-      // Merge together options
-      var save_options = _write_concern || {};
-      // Execute save
-      collection.save(document, save_options, function(err, result) {
-        if(typeof result == 'number' && result == 1) {
-          return callback(null, document);
-        }
-
-        return callback(null, document);
-      });
-    },
-
-    find: function(selector) {
-      _selector = selector;
-      return writeOptions;
-    },
-
-    //
-    // Update is implicit multiple document update
-    update: function(operations, callback) {
-      // Merge together options
-      var update_options = _write_concern || {};
-      
-      // Set up options, multi is default operation
-      update_options.multi = _scope_options.multi ? _scope_options.multi : true;
-      if(_scope_options.upsert) update_options.upsert = _scope_options.upsert;
-      
-      // Execute options
-      collection.update(_selector, operations, update_options, function(err, result, obj) {
-        callback(err, obj);
-      });
-    },
-  }
-
-  // Set write concern
-  this.withWriteConcern = function(write_concern) {
-    // Save the current write concern to the Scope
-    _scope_options.write_concern = write_concern;
-    _write_concern = write_concern;
-    // Only allow legal options
-    return writeOptions;
-  }
-
-  // Start find
-  this.find = function(selector, options) {
-    // Save the current selector
-    _selector = selector;
-    // Set the cursor
-    _cursor.selector = selector;
-    // Return only legal read options
-    return new Cursor(_scope_options, _cursor);
-  }
-}
-
-exports.Scope = Scope;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/utils.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/utils.js b/web/demos/package/node_modules/mongodb/lib/mongodb/utils.js
deleted file mode 100644
index 4eca8c0..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/utils.js
+++ /dev/null
@@ -1,202 +0,0 @@
-var timers = require('timers');
-
-/**
- * Sort functions, Normalize and prepare sort parameters
- */
-var formatSortValue = exports.formatSortValue = function(sortDirection) {
-  var value = ("" + sortDirection).toLowerCase();
-
-  switch (value) {
-    case 'ascending':
-    case 'asc':
-    case '1':
-      return 1;
-    case 'descending':
-    case 'desc':
-    case '-1':
-      return -1;
-    default:
-      throw new Error("Illegal sort clause, must be of the form "
-                    + "[['field1', '(ascending|descending)'], "
-                    + "['field2', '(ascending|descending)']]");
-  }
-};
-
-var formattedOrderClause = exports.formattedOrderClause = function(sortValue) {
-  var orderBy = {};
-
-  if (Array.isArray(sortValue)) {
-    for(var i = 0; i < sortValue.length; i++) {
-      if(sortValue[i].constructor == String) {
-        orderBy[sortValue[i]] = 1;
-      } else {
-        orderBy[sortValue[i][0]] = formatSortValue(sortValue[i][1]);
-      }      
-    }
-  } else if(Object.prototype.toString.call(sortValue) === '[object Object]') {
-    orderBy = sortValue;
-  } else if (sortValue.constructor == String) {
-    orderBy[sortValue] = 1;
-  } else {
-    throw new Error("Illegal sort clause, must be of the form " +
-      "[['field1', '(ascending|descending)'], ['field2', '(ascending|descending)']]");
-  }
-
-  return orderBy;
-};
-
-exports.encodeInt = function(value) {
-  var buffer = new Buffer(4);
-  buffer[3] = (value >> 24) & 0xff;      
-  buffer[2] = (value >> 16) & 0xff;
-  buffer[1] = (value >> 8) & 0xff;
-  buffer[0] = value & 0xff;
-  return buffer;
-}
-
-exports.encodeIntInPlace = function(value, buffer, index) {
-  buffer[index + 3] = (value >> 24) & 0xff;			
-	buffer[index + 2] = (value >> 16) & 0xff;
-	buffer[index + 1] = (value >> 8) & 0xff;
-	buffer[index] = value & 0xff;
-}
-
-exports.encodeCString = function(string) {
-  var buf = new Buffer(string, 'utf8');
-  return [buf, new Buffer([0])];
-}
-
-exports.decodeUInt32 = function(array, index) {
-  return array[index] | array[index + 1] << 8 | array[index + 2] << 16 | array[index + 3] << 24;
-}
-
-// Decode the int
-exports.decodeUInt8 = function(array, index) {
-  return array[index];
-}
-
-/**
- * Context insensitive type checks
- */
-
-var toString = Object.prototype.toString;
-
-exports.isObject = function (arg) {
-  return '[object Object]' == toString.call(arg)
-}
-
-exports.isArray = function (arg) {
-  return Array.isArray(arg) ||
-    'object' == typeof arg && '[object Array]' == toString.call(arg)
-}
-
-exports.isDate = function (arg) {
-  return 'object' == typeof arg && '[object Date]' == toString.call(arg)
-}
-
-exports.isRegExp = function (arg) {
-  return 'object' == typeof arg && '[object RegExp]' == toString.call(arg)
-}
-
-/**
- * Wrap a Mongo error document in an Error instance
- * @ignore
- * @api private
- */
-var toError = function(error) {
-  if (error instanceof Error) return error;
-
-  var msg = error.err || error.errmsg || error.errMessage || error;
-  var e = new Error(msg);
-  e.name = 'MongoError';
-
-  // Get all object keys
-  var keys = typeof error == 'object'
-    ? Object.keys(error)
-    : [];
-
-  for(var i = 0; i < keys.length; i++) {
-    e[keys[i]] = error[keys[i]];
-  }
-
-  return e;
-}
-exports.toError = toError;
-
-/**
- * Convert a single level object to an array
- * @ignore
- * @api private
- */
-exports.objectToArray = function(object) {
-  var list = [];
-
-  for(var name in object) {
-    list.push(object[name])
-  }
-
-  return list;
-}
-
-/**
- * Handle single command document return
- * @ignore
- * @api private
- */
-exports.handleSingleCommandResultReturn = function(override_value_true, override_value_false, callback) {
-  return function(err, result, connection) {
-    if(err && typeof callback == 'function') return callback(err, null);
-    if(!result || !result.documents || result.documents.length == 0)
-      if(typeof callback == 'function') return callback(toError("command failed to return results"), null)
-    if(result && result.documents[0].ok == 1) {
-      if(override_value_true) return callback(null, override_value_true)
-      if(typeof callback == 'function') return callback(null, result.documents[0]);
-    }
-
-    // Return the error from the document
-    if(typeof callback == 'function') return callback(toError(result.documents[0]), override_value_false);    
-  }
-}
-
-/**
- * Return correct processor
- * @ignore
- * @api private
- */
-exports.processor = function() {
-  // Set processor, setImmediate if 0.10 otherwise nextTick
-  process.maxTickDepth = Infinity;
-  // Only use nextTick
-  return process.nextTick;
-}
-
-/**
- * Allow setting the socketTimeoutMS on all connections
- * to work around issues such as secondaries blocking due to compaction
- *
- * @ignore
- * @api private
- */
-exports.setSocketTimeoutProperty = function(self, options) {
-  Object.defineProperty(self, "socketTimeoutMS", {
-      enumerable: true
-    , get: function () { return options.socketTimeoutMS; }
-    , set: function (value) { 
-      // Set the socket timeoutMS value
-      options.socketTimeoutMS = value;
-
-      // Get all the connections
-      var connections = self.allRawConnections();
-      for(var i = 0; i < connections.length; i++) {
-        connections[i].socketTimeoutMS = value;
-      }
-    }
-  });  
-}
-
-exports.hasWriteCommands = function(connection) {
-  return connection != null && connection.serverCapabilities != null && connection.serverCapabilities.hasWriteCommands;
-}
-
-
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/.travis.yml b/web/demos/package/node_modules/mongodb/node_modules/bson/.travis.yml
deleted file mode 100644
index 5445961..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
-  - 0.8
-  - 0.10 # development version of 0.8, may be unstable
-  - 0.11
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/Makefile b/web/demos/package/node_modules/mongodb/node_modules/bson/Makefile
deleted file mode 100644
index 77ce4e0..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-NODE = node
-NPM = npm
-NODEUNIT = node_modules/nodeunit/bin/nodeunit
-
-all:	clean node_gyp
-
-test: clean node_gyp
-	npm test
-
-node_gyp: clean
-	node-gyp configure build
-
-clean:
-	node-gyp clean
-
-browserify:
-	node_modules/.bin/onejs build browser_build/package.json browser_build/bson.js
-
-.PHONY: all

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/README.md b/web/demos/package/node_modules/mongodb/node_modules/bson/README.md
deleted file mode 100644
index 1a6fc2b..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-Javascript + C++ BSON parser
-============================
-
-This BSON parser is primarily meant for usage with the `mongodb` node.js driver. However thanks to such wonderful tools at `onejs` we are able to package up a BSON parser that will work in the browser aswell. The current build is located in the `browser_build/bson.js` file.
-
-A simple example on how to use it
-
-    <head>
-      <script src="https://raw.github.com/mongodb/js-bson/master/browser_build/bson.js">
-      </script>
-    </head>
-    <body onload="start();">
-    <script>
-      function start() {
-        var BSON = bson().BSON;
-        var Long = bson().Long;
-
-        var doc = {long: Long.fromNumber(100)}
-
-        // Serialize a document
-        var data = BSON.serialize(doc, false, true, false);
-        // De serialize it again
-        var doc_2 = BSON.deserialize(data);
-      }
-    </script>
-    </body>
-
-  It's got two simple methods to use in your application.
-
-  * BSON.serialize(object, checkKeys, asBuffer, serializeFunctions)
-     * @param {Object} object the Javascript object to serialize.
-     * @param {Boolean} checkKeys the serializer will check if keys are valid.
-     * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**.
-     * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**
-     * @return {TypedArray/Array} returns a TypedArray or Array depending on what your browser supports
- 
-  * BSON.deserialize(buffer, options, isArray)
-     * Options
-       * **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized.
-       * **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse.
-       * **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function.
-     * @param {TypedArray/Array} a TypedArray/Array containing the BSON data
-     * @param {Object} [options] additional options used for the deserialization.
-     * @param {Boolean} [isArray] ignore used for recursive parsing.
-     * @return {Object} returns the deserialized Javascript Object.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/binding.gyp
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/binding.gyp b/web/demos/package/node_modules/mongodb/node_modules/bson/binding.gyp
deleted file mode 100644
index f308f3e..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/binding.gyp
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  'targets': [
-    {
-      'target_name': 'bson',
-      'sources': [ 'ext/bson.cc' ],
-      'cflags!': [ '-fno-exceptions' ],
-      'cflags_cc!': [ '-fno-exceptions' ],
-      'conditions': [
-        ['OS=="mac"', {
-          'xcode_settings': {
-            'GCC_ENABLE_CPP_EXCEPTIONS': 'YES'
-          }
-        }]
-      ]
-    }
-  ]
-}



[86/98] [abbrv] incubator-apex-malhar git commit: Cleanup of web resources

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/machinedata/malhar.css
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/machinedata/malhar.css b/contrib/src/main/html/machinedata/malhar.css
deleted file mode 100644
index 175e219..0000000
--- a/contrib/src/main/html/machinedata/malhar.css
+++ /dev/null
@@ -1,4688 +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.
- */
-.clearfix {
-  *zoom: 1;
-}
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.clearfix:after {
-  clear: both;
-}
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 30px;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-audio:not([controls]) {
-  display: none;
-}
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-a:hover,
-a:active {
-  outline: 0;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  /* Responsive images (ensure images don't scale beyond their parents) */
-
-  max-width: 100%;
-  /* Part 1: Set a maxium relative to the parent */
-
-  width: auto\9;
-  /* IE7-8 need help adjusting responsive images */
-
-  height: auto;
-  /* Part 2: Scale the height according to the width, otherwise you get stretching */
-
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-#map_canvas img,
-.google-maps img {
-  max-width: none;
-}
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button;
-  cursor: pointer;
-}
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
-  cursor: pointer;
-}
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-@media print {
-  * {
-    text-shadow: none !important;
-    color: #000 !important;
-    background: transparent !important;
-    box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  .ir a:after,
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  @page  {
-    margin: 0.5cm;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-}
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 20px;
-  color: #333333;
-  background-color: #ffffff;
-}
-a {
-  color: #0088cc;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: #005580;
-  text-decoration: underline;
-}
-.img-rounded {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.img-polaroid {
-  padding: 4px;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-.img-circle {
-  -webkit-border-radius: 500px;
-  -moz-border-radius: 500px;
-  border-radius: 500px;
-}
-/*@import "bootstrap/grid.less";*/
-/*@import "bootstrap/layouts.less";*/
-p {
-  margin: 0 0 10px;
-}
-.lead {
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  font-weight: 200;
-  line-height: 30px;
-}
-small {
-  font-size: 85%;
-}
-strong {
-  font-weight: bold;
-}
-em {
-  font-style: italic;
-}
-cite {
-  font-style: normal;
-}
-.muted {
-  color: #999999;
-}
-a.muted:hover,
-a.muted:focus {
-  color: #808080;
-}
-.text-warning {
-  color: #c09853;
-}
-a.text-warning:hover,
-a.text-warning:focus {
-  color: #a47e3c;
-}
-.text-error {
-  color: #b94a48;
-}
-a.text-error:hover,
-a.text-error:focus {
-  color: #953b39;
-}
-.text-info {
-  color: #3a87ad;
-}
-a.text-info:hover,
-a.text-info:focus {
-  color: #2d6987;
-}
-.text-success {
-  color: #468847;
-}
-a.text-success:hover,
-a.text-success:focus {
-  color: #356635;
-}
-.text-left {
-  text-align: left;
-}
-.text-right {
-  text-align: right;
-}
-.text-center {
-  text-align: center;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 10px 0;
-  font-family: inherit;
-  font-weight: bold;
-  line-height: 20px;
-  color: inherit;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  line-height: 1;
-  color: #999999;
-}
-h1,
-h2,
-h3 {
-  line-height: 40px;
-}
-h1 {
-  font-size: 35.75px;
-}
-h2 {
-  font-size: 29.25px;
-}
-h3 {
-  font-size: 22.75px;
-}
-h4 {
-  font-size: 16.25px;
-}
-h5 {
-  font-size: 13px;
-}
-h6 {
-  font-size: 11.049999999999999px;
-}
-h1 small {
-  font-size: 22.75px;
-}
-h2 small {
-  font-size: 16.25px;
-}
-h3 small {
-  font-size: 13px;
-}
-h4 small {
-  font-size: 13px;
-}
-.page-header {
-  padding-bottom: 9px;
-  margin: 20px 0 30px;
-  border-bottom: 1px solid #eeeeee;
-}
-ul,
-ol {
-  padding: 0;
-  margin: 0 0 10px 25px;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-li {
-  line-height: 20px;
-}
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-ul.inline,
-ol.inline {
-  margin-left: 0;
-  list-style: none;
-}
-ul.inline > li,
-ol.inline > li {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding-left: 5px;
-  padding-right: 5px;
-}
-dl {
-  margin-bottom: 20px;
-}
-dt,
-dd {
-  line-height: 20px;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 10px;
-}
-.dl-horizontal {
-  *zoom: 1;
-}
-.dl-horizontal:before,
-.dl-horizontal:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.dl-horizontal:after {
-  clear: both;
-}
-.dl-horizontal dt {
-  float: left;
-  width: 160px;
-  clear: left;
-  text-align: right;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.dl-horizontal dd {
-  margin-left: 180px;
-}
-hr {
-  margin: 20px 0;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-  border-bottom: 1px solid #ffffff;
-}
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #999999;
-}
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 20px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p {
-  margin-bottom: 0;
-  font-size: 16.25px;
-  font-weight: 300;
-  line-height: 1.25;
-}
-blockquote small {
-  display: block;
-  line-height: 20px;
-  color: #999999;
-}
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-blockquote.pull-right {
-  float: right;
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-blockquote.pull-right small:before {
-  content: '';
-}
-blockquote.pull-right small:after {
-  content: '\00A0 \2014';
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  display: block;
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 20px;
-}
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-  font-size: 11px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-code {
-  padding: 2px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-  white-space: nowrap;
-}
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 12px;
-  line-height: 20px;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-pre.prettyprint {
-  margin-bottom: 20px;
-}
-pre code {
-  padding: 0;
-  color: inherit;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border: 0;
-}
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-form {
-  margin: 0 0 20px;
-}
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  line-height: 40px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-legend small {
-  font-size: 15px;
-  color: #999999;
-}
-label,
-input,
-button,
-select,
-textarea {
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 20px;
-}
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-label {
-  display: block;
-  margin-bottom: 5px;
-}
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  display: inline-block;
-  height: 20px;
-  padding: 4px 6px;
-  margin-bottom: 10px;
-  font-size: 13px;
-  line-height: 20px;
-  color: #555555;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  vertical-align: middle;
-}
-input,
-textarea,
-.uneditable-input {
-  width: 206px;
-}
-textarea {
-  height: auto;
-}
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear .2s, box-shadow linear .2s;
-  -moz-transition: border linear .2s, box-shadow linear .2s;
-  -o-transition: border linear .2s, box-shadow linear .2s;
-  transition: border linear .2s, box-shadow linear .2s;
-}
-textarea:focus,
-input[type="text"]:focus,
-input[type="password"]:focus,
-input[type="datetime"]:focus,
-input[type="datetime-local"]:focus,
-input[type="date"]:focus,
-input[type="month"]:focus,
-input[type="time"]:focus,
-input[type="week"]:focus,
-input[type="number"]:focus,
-input[type="email"]:focus,
-input[type="url"]:focus,
-input[type="search"]:focus,
-input[type="tel"]:focus,
-input[type="color"]:focus,
-.uneditable-input:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-9 */
-
-  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-}
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  *margin-top: 0;
-  /* IE7 */
-
-  margin-top: 1px \9;
-  /* IE8-9 */
-
-  line-height: normal;
-}
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
-  width: auto;
-}
-select,
-input[type="file"] {
-  height: 30px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 30px;
-}
-select {
-  width: 220px;
-  border: 1px solid #cccccc;
-  background-color: #ffffff;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.uneditable-input,
-.uneditable-textarea {
-  color: #999999;
-  background-color: #fcfcfc;
-  border-color: #cccccc;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  cursor: not-allowed;
-}
-.uneditable-input {
-  overflow: hidden;
-  white-space: nowrap;
-}
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-input:-moz-placeholder,
-textarea:-moz-placeholder {
-  color: #999999;
-}
-input:-ms-input-placeholder,
-textarea:-ms-input-placeholder {
-  color: #999999;
-}
-input::-webkit-input-placeholder,
-textarea::-webkit-input-placeholder {
-  color: #999999;
-}
-.radio,
-.checkbox {
-  min-height: 20px;
-  padding-left: 20px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-.input-mini {
-  width: 60px;
-}
-.input-small {
-  width: 90px;
-}
-.input-medium {
-  width: 150px;
-}
-.input-large {
-  width: 210px;
-}
-.input-xlarge {
-  width: 270px;
-}
-.input-xxlarge {
-  width: 530px;
-}
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
-  display: inline-block;
-}
-input,
-textarea,
-.uneditable-input {
-  margin-left: 0;
-}
-.controls-row [class*="span"] + [class*="span"] {
-  margin-left: 20px;
-}
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 926px;
-}
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 846px;
-}
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 766px;
-}
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 686px;
-}
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 606px;
-}
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 526px;
-}
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 446px;
-}
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 366px;
-}
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 286px;
-}
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 206px;
-}
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 126px;
-}
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 46px;
-}
-.controls-row {
-  *zoom: 1;
-}
-.controls-row:before,
-.controls-row:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.controls-row:after {
-  clear: both;
-}
-.controls-row [class*="span"],
-.row-fluid .controls-row [class*="span"] {
-  float: left;
-}
-.controls-row .checkbox[class*="span"],
-.controls-row .radio[class*="span"] {
-  padding-top: 5px;
-}
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-.control-group.warning .control-label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-.control-group.warning .checkbox,
-.control-group.warning .radio,
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-}
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  border-color: #c09853;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-}
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-.control-group.error .control-label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-.control-group.error .checkbox,
-.control-group.error .radio,
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-}
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  border-color: #b94a48;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-}
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-.control-group.success .control-label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-.control-group.success .checkbox,
-.control-group.success .radio,
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-}
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  border-color: #468847;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-}
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-.control-group.info .control-label,
-.control-group.info .help-block,
-.control-group.info .help-inline {
-  color: #3a87ad;
-}
-.control-group.info .checkbox,
-.control-group.info .radio,
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  color: #3a87ad;
-}
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  border-color: #3a87ad;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.info input:focus,
-.control-group.info select:focus,
-.control-group.info textarea:focus {
-  border-color: #2d6987;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-}
-.control-group.info .input-prepend .add-on,
-.control-group.info .input-append .add-on {
-  color: #3a87ad;
-  background-color: #d9edf7;
-  border-color: #3a87ad;
-}
-input:focus:invalid,
-textarea:focus:invalid,
-select:focus:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-input:focus:invalid:focus,
-textarea:focus:invalid:focus,
-select:focus:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-  -moz-box-shadow: 0 0 6px #f8b9b7;
-  box-shadow: 0 0 6px #f8b9b7;
-}
-.form-actions {
-  padding: 19px 20px 20px;
-  margin-top: 20px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #e5e5e5;
-  *zoom: 1;
-}
-.form-actions:before,
-.form-actions:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.form-actions:after {
-  clear: both;
-}
-.help-block,
-.help-inline {
-  color: #595959;
-}
-.help-block {
-  display: block;
-  margin-bottom: 10px;
-}
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  vertical-align: middle;
-  padding-left: 5px;
-}
-.input-append,
-.input-prepend {
-  display: inline-block;
-  margin-bottom: 10px;
-  vertical-align: middle;
-  font-size: 0;
-  white-space: nowrap;
-}
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input,
-.input-append .dropdown-menu,
-.input-prepend .dropdown-menu,
-.input-append .popover,
-.input-prepend .popover {
-  font-size: 13px;
-}
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input {
-  position: relative;
-  margin-bottom: 0;
-  *margin-left: 0;
-  vertical-align: top;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-append input:focus,
-.input-prepend input:focus,
-.input-append select:focus,
-.input-prepend select:focus,
-.input-append .uneditable-input:focus,
-.input-prepend .uneditable-input:focus {
-  z-index: 2;
-}
-.input-append .add-on,
-.input-prepend .add-on {
-  display: inline-block;
-  width: auto;
-  height: 20px;
-  min-width: 16px;
-  padding: 4px 5px;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 20px;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-}
-.input-append .add-on,
-.input-prepend .add-on,
-.input-append .btn,
-.input-prepend .btn,
-.input-append .btn-group > .dropdown-toggle,
-.input-prepend .btn-group > .dropdown-toggle {
-  vertical-align: top;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-append .active,
-.input-prepend .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-.input-prepend .add-on,
-.input-prepend .btn {
-  margin-right: -1px;
-}
-.input-prepend .add-on:first-child,
-.input-prepend .btn:first-child {
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-append input,
-.input-append select,
-.input-append .uneditable-input {
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-append input + .btn-group .btn:last-child,
-.input-append select + .btn-group .btn:last-child,
-.input-append .uneditable-input + .btn-group .btn:last-child {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-append .add-on,
-.input-append .btn,
-.input-append .btn-group {
-  margin-left: -1px;
-}
-.input-append .add-on:last-child,
-.input-append .btn:last-child,
-.input-append .btn-group:last-child > .dropdown-toggle {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append input,
-.input-prepend.input-append select,
-.input-prepend.input-append .uneditable-input {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-prepend.input-append input + .btn-group .btn,
-.input-prepend.input-append select + .btn-group .btn,
-.input-prepend.input-append .uneditable-input + .btn-group .btn {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append .add-on:first-child,
-.input-prepend.input-append .btn:first-child {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-prepend.input-append .add-on:last-child,
-.input-prepend.input-append .btn:last-child {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append .btn-group:first-child {
-  margin-left: 0;
-}
-input.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9;
-  /* IE7-8 doesn't have border-radius, so don't indent the padding */
-
-  margin-bottom: 0;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-/* Allow for input prepend/append in search forms */
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.form-search .input-append .search-query {
-  -webkit-border-radius: 14px 0 0 14px;
-  -moz-border-radius: 14px 0 0 14px;
-  border-radius: 14px 0 0 14px;
-}
-.form-search .input-append .btn {
-  -webkit-border-radius: 0 14px 14px 0;
-  -moz-border-radius: 0 14px 14px 0;
-  border-radius: 0 14px 14px 0;
-}
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0 14px 14px 0;
-  -moz-border-radius: 0 14px 14px 0;
-  border-radius: 0 14px 14px 0;
-}
-.form-search .input-prepend .btn {
-  -webkit-border-radius: 14px 0 0 14px;
-  -moz-border-radius: 14px 0 0 14px;
-  border-radius: 14px 0 0 14px;
-}
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input,
-.form-search .input-prepend,
-.form-inline .input-prepend,
-.form-horizontal .input-prepend,
-.form-search .input-append,
-.form-inline .input-append,
-.form-horizontal .input-append {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .hide,
-.form-inline .hide,
-.form-horizontal .hide {
-  display: none;
-}
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
-  display: inline-block;
-}
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-.control-group {
-  margin-bottom: 10px;
-}
-legend + .control-group {
-  margin-top: 20px;
-  -webkit-margin-top-collapse: separate;
-}
-.form-horizontal .control-group {
-  margin-bottom: 20px;
-  *zoom: 1;
-}
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.form-horizontal .control-group:after {
-  clear: both;
-}
-.form-horizontal .control-label {
-  float: left;
-  width: 160px;
-  padding-top: 5px;
-  text-align: right;
-}
-.form-horizontal .controls {
-  *display: inline-block;
-  *padding-left: 20px;
-  margin-left: 180px;
-  *margin-left: 0;
-}
-.form-horizontal .controls:first-child {
-  *padding-left: 180px;
-}
-.form-horizontal .help-block {
-  margin-bottom: 0;
-}
-.form-horizontal input + .help-block,
-.form-horizontal select + .help-block,
-.form-horizontal textarea + .help-block,
-.form-horizontal .uneditable-input + .help-block,
-.form-horizontal .input-prepend + .help-block,
-.form-horizontal .input-append + .help-block {
-  margin-top: 10px;
-}
-.form-horizontal .form-actions {
-  padding-left: 180px;
-}
-table {
-  max-width: 100%;
-  background-color: transparent;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-.table {
-  width: 100%;
-  margin-bottom: 20px;
-}
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 20px;
-  text-align: left;
-  vertical-align: top;
-  border-top: 1px solid #dddddd;
-}
-.table th {
-  font-weight: bold;
-}
-.table thead th {
-  vertical-align: bottom;
-}
-.table caption + thead tr:first-child th,
-.table caption + thead tr:first-child td,
-.table colgroup + thead tr:first-child th,
-.table colgroup + thead tr:first-child td,
-.table thead:first-child tr:first-child th,
-.table thead:first-child tr:first-child td {
-  border-top: 0;
-}
-.table tbody + tbody {
-  border-top: 2px solid #dddddd;
-}
-.table .table {
-  background-color: #ffffff;
-}
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-.table-bordered {
-  border: 1px solid #dddddd;
-  border-collapse: separate;
-  *border-collapse: collapse;
-  border-left: 0;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.table-bordered th,
-.table-bordered td {
-  border-left: 1px solid #dddddd;
-}
-.table-bordered caption + thead tr:first-child th,
-.table-bordered caption + tbody tr:first-child th,
-.table-bordered caption + tbody tr:first-child td,
-.table-bordered colgroup + thead tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child td,
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-.table-bordered thead:first-child tr:first-child > th:first-child,
-.table-bordered tbody:first-child tr:first-child > td:first-child,
-.table-bordered tbody:first-child tr:first-child > th:first-child {
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.table-bordered thead:first-child tr:first-child > th:last-child,
-.table-bordered tbody:first-child tr:first-child > td:last-child,
-.table-bordered tbody:first-child tr:first-child > th:last-child {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-}
-.table-bordered thead:last-child tr:last-child > th:first-child,
-.table-bordered tbody:last-child tr:last-child > td:first-child,
-.table-bordered tbody:last-child tr:last-child > th:first-child,
-.table-bordered tfoot:last-child tr:last-child > td:first-child,
-.table-bordered tfoot:last-child tr:last-child > th:first-child {
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.table-bordered thead:last-child tr:last-child > th:last-child,
-.table-bordered tbody:last-child tr:last-child > td:last-child,
-.table-bordered tbody:last-child tr:last-child > th:last-child,
-.table-bordered tfoot:last-child tr:last-child > td:last-child,
-.table-bordered tfoot:last-child tr:last-child > th:last-child {
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
-  -webkit-border-bottom-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-  border-bottom-left-radius: 0;
-}
-.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
-  -webkit-border-bottom-right-radius: 0;
-  -moz-border-radius-bottomright: 0;
-  border-bottom-right-radius: 0;
-}
-.table-bordered caption + thead tr:first-child th:first-child,
-.table-bordered caption + tbody tr:first-child td:first-child,
-.table-bordered colgroup + thead tr:first-child th:first-child,
-.table-bordered colgroup + tbody tr:first-child td:first-child {
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.table-bordered caption + thead tr:first-child th:last-child,
-.table-bordered caption + tbody tr:first-child td:last-child,
-.table-bordered colgroup + thead tr:first-child th:last-child,
-.table-bordered colgroup + tbody tr:first-child td:last-child {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-}
-.table-striped tbody > tr:nth-child(odd) > td,
-.table-striped tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9;
-}
-.table-hover tbody tr:hover > td,
-.table-hover tbody tr:hover > th {
-  background-color: #f5f5f5;
-}
-table td[class*="span"],
-table th[class*="span"],
-.row-fluid table td[class*="span"],
-.row-fluid table th[class*="span"] {
-  display: table-cell;
-  float: none;
-  margin-left: 0;
-}
-.table td.span1,
-.table th.span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-.table td.span2,
-.table th.span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-.table td.span3,
-.table th.span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-.table td.span4,
-.table th.span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-.table td.span5,
-.table th.span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-.table td.span6,
-.table th.span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-.table td.span7,
-.table th.span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-.table td.span8,
-.table th.span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-.table td.span9,
-.table th.span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-.table td.span10,
-.table th.span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-.table td.span11,
-.table th.span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-.table td.span12,
-.table th.span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-.table tbody tr.success > td {
-  background-color: #dff0d8;
-}
-.table tbody tr.error > td {
-  background-color: #f2dede;
-}
-.table tbody tr.warning > td {
-  background-color: #fcf8e3;
-}
-.table tbody tr.info > td {
-  background-color: #d9edf7;
-}
-.table-hover tbody tr.success:hover > td {
-  background-color: #d0e9c6;
-}
-.table-hover tbody tr.error:hover > td {
-  background-color: #ebcccc;
-}
-.table-hover tbody tr.warning:hover > td {
-  background-color: #faf2cc;
-}
-.table-hover tbody tr.info:hover > td {
-  background-color: #c4e3f3;
-}
-/*@import "bootstrap/sprites.less";*/
-.dropup,
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top: 4px solid #000000;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  content: "";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 20px;
-  color: #333333;
-  white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
-  text-decoration: none;
-  color: #ffffff;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  outline: 0;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #999999;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  cursor: default;
-}
-.open {
-  *z-index: 1000;
-}
-.open > .dropdown-menu {
-  display: block;
-}
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid #000000;
-  content: "";
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-.dropdown-submenu {
-  position: relative;
-}
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  -webkit-border-radius: 0 6px 6px 6px;
-  -moz-border-radius: 0 6px 6px 6px;
-  border-radius: 0 6px 6px 6px;
-}
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-}
-.dropup .dropdown-submenu > .dropdown-menu {
-  top: auto;
-  bottom: 0;
-  margin-top: 0;
-  margin-bottom: -2px;
-  -webkit-border-radius: 5px 5px 5px 0;
-  -moz-border-radius: 5px 5px 5px 0;
-  border-radius: 5px 5px 5px 0;
-}
-.dropdown-submenu > a:after {
-  display: block;
-  content: " ";
-  float: right;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  border-left-color: #cccccc;
-  margin-top: 5px;
-  margin-right: -10px;
-}
-.dropdown-submenu:hover > a:after {
-  border-left-color: #ffffff;
-}
-.dropdown-submenu.pull-left {
-  float: none;
-}
-.dropdown-submenu.pull-left > .dropdown-menu {
-  left: -100%;
-  margin-left: 10px;
-  -webkit-border-radius: 6px 0 6px 6px;
-  -moz-border-radius: 6px 0 6px 6px;
-  border-radius: 6px 0 6px 6px;
-}
-.dropdown .dropdown-menu .nav-header {
-  padding-left: 20px;
-  padding-right: 20px;
-}
-.typeahead {
-  z-index: 1051;
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.well-large {
-  padding: 24px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.well-small {
-  padding: 9px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-/*@import "bootstrap/component-animations.less";*/
-/*@import "bootstrap/close.less";*/
-.btn {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding: 4px 12px;
-  margin-bottom: 0;
-  font-size: 13px;
-  line-height: 20px;
-  text-align: center;
-  vertical-align: middle;
-  cursor: pointer;
-  color: #333333;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  background-color: #f5f5f5;
-  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
-  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e6e6e6;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  border: 1px solid #cccccc;
-  *border: 0;
-  border-bottom-color: #b3b3b3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  *margin-left: .3em;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn:hover,
-.btn:focus,
-.btn:active,
-.btn.active,
-.btn.disabled,
-.btn[disabled] {
-  color: #333333;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-}
-.btn:active,
-.btn.active {
-  background-color: #cccccc \9;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover,
-.btn:focus {
-  color: #333333;
-  text-decoration: none;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active,
-.btn:active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 11px 19px;
-  font-size: 16.25px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.btn-large [class^="icon-"],
-.btn-large [class*=" icon-"] {
-  margin-top: 4px;
-}
-.btn-small {
-  padding: 2px 10px;
-  font-size: 11.049999999999999px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.btn-small [class^="icon-"],
-.btn-small [class*=" icon-"] {
-  margin-top: 0;
-}
-.btn-mini [class^="icon-"],
-.btn-mini [class*=" icon-"] {
-  margin-top: -1px;
-}
-.btn-mini {
-  padding: 0 6px;
-  font-size: 9.75px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn-primary {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #006dcc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #0044cc;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  color: #ffffff;
-  background-color: #0044cc;
-  *background-color: #003bb3;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #003399 \9;
-}
-.btn-warning {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #f89406;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  color: #ffffff;
-  background-color: #f89406;
-  *background-color: #df8505;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #bd362f;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  color: #ffffff;
-  background-color: #bd362f;
-  *background-color: #a9302a;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(to bottom, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #51a351;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  color: #ffffff;
-  background-color: #51a351;
-  *background-color: #499249;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #2f96b4;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  color: #ffffff;
-  background-color: #2f96b4;
-  *background-color: #2a85a0;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-.btn-inverse {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #363636;
-  background-image: -moz-linear-gradient(top, #444444, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
-  background-image: -webkit-linear-gradient(top, #444444, #222222);
-  background-image: -o-linear-gradient(top, #444444, #222222);
-  background-image: linear-gradient(to bottom, #444444, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #222222;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-inverse:hover,
-.btn-inverse:focus,
-.btn-inverse:active,
-.btn-inverse.active,
-.btn-inverse.disabled,
-.btn-inverse[disabled] {
-  color: #ffffff;
-  background-color: #222222;
-  *background-color: #151515;
-}
-.btn-inverse:active,
-.btn-inverse.active {
-  background-color: #080808 \9;
-}
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.btn-large,
-input[type="submit"].btn.btn-large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.btn-small,
-input[type="submit"].btn.btn-small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn.btn-mini,
-input[type="submit"].btn.btn-mini {
-  *padding-top: 1px;
-  *padding-bottom: 1px;
-}
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
-  background-color: transparent;
-  background-image: none;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-link {
-  border-color: transparent;
-  cursor: pointer;
-  color: #0088cc;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: #005580;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-.btn-link[disabled]:focus {
-  color: #333333;
-  text-decoration: none;
-}
-.btn-group {
-  position: relative;
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  font-size: 0;
-  vertical-align: middle;
-  white-space: nowrap;
-  *margin-left: .3em;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  font-size: 0;
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.btn-toolbar > .btn + .btn,
-.btn-toolbar > .btn-group + .btn,
-.btn-toolbar > .btn + .btn-group {
-  margin-left: 5px;
-}
-.btn-group > .btn {
-  position: relative;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group > .btn + .btn {
-  margin-left: -1px;
-}
-.btn-group > .btn,
-.btn-group > .dropdown-menu,
-.btn-group > .popover {
-  font-size: 13px;
-}
-.btn-group > .btn-mini {
-  font-size: 9.75px;
-}
-.btn-group > .btn-small {
-  font-size: 11.049999999999999px;
-}
-.btn-group > .btn-large {
-  font-size: 16.25px;
-}
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group > .btn + .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group > .btn-mini + .dropdown-toggle {
-  padding-left: 5px;
-  padding-right: 5px;
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-.btn-group > .btn-small + .dropdown-toggle {
-  *padding-top: 5px;
-  *padding-bottom: 4px;
-}
-.btn-group > .btn-large + .dropdown-toggle {
-  padding-left: 12px;
-  padding-right: 12px;
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn-group.open .btn.dropdown-toggle {
-  background-color: #e6e6e6;
-}
-.btn-group.open .btn-primary.dropdown-toggle {
-  background-color: #0044cc;
-}
-.btn-group.open .btn-warning.dropdown-toggle {
-  background-color: #f89406;
-}
-.btn-group.open .btn-danger.dropdown-toggle {
-  background-color: #bd362f;
-}
-.btn-group.open .btn-success.dropdown-toggle {
-  background-color: #51a351;
-}
-.btn-group.open .btn-info.dropdown-toggle {
-  background-color: #2f96b4;
-}
-.btn-group.open .btn-inverse.dropdown-toggle {
-  background-color: #222222;
-}
-.btn .caret {
-  margin-top: 8px;
-  margin-left: 0;
-}
-.btn-large .caret {
-  margin-top: 6px;
-}
-.btn-large .caret {
-  border-left-width: 5px;
-  border-right-width: 5px;
-  border-top-width: 5px;
-}
-.btn-mini .caret,
-.btn-small .caret {
-  margin-top: 8px;
-}
-.dropup .btn-large .caret {
-  border-bottom-width: 5px;
-}
-.btn-primary .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret,
-.btn-inverse .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.btn-group-vertical {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group-vertical > .btn {
-  display: block;
-  float: none;
-  max-width: 100%;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group-vertical > .btn + .btn {
-  margin-left: 0;
-  margin-top: -1px;
-}
-.btn-group-vertical > .btn:first-child {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.btn-group-vertical > .btn:last-child {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.btn-group-vertical > .btn-large:first-child {
-  -webkit-border-radius: 6px 6px 0 0;
-  -moz-border-radius: 6px 6px 0 0;
-  border-radius: 6px 6px 0 0;
-}
-.btn-group-vertical > .btn-large:last-child {
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-}
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 20px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.alert,
-.alert h4 {
-  color: #c09853;
-}
-.alert h4 {
-  margin: 0;
-}
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 20px;
-}
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-  color: #468847;
-}
-.alert-success h4 {
-  color: #468847;
-}
-.alert-danger,
-.alert-error {
-  background-color: #f2dede;
-  border-color: #eed3d7;
-  color: #b94a48;
-}
-.alert-danger h4,
-.alert-error h4 {
-  color: #b94a48;
-}
-.alert-info {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-  color: #3a87ad;
-}
-.alert-info h4 {
-  color: #3a87ad;
-}
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
-.nav {
-  margin-left: 0;
-  margin-bottom: 20px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav > li > a > img {
-  max-width: none;
-}
-.nav > .pull-right {
-  float: right;
-}
-.nav-header {
-  display: block;
-  padding: 3px 15px;
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #999999;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  text-transform: uppercase;
-}
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list {
-  padding-left: 15px;
-  padding-right: 15px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-.nav-list > .active > a,
-.nav-list > .active > a:hover,
-.nav-list > .active > a:focus {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #0088cc;
-}
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  margin-right: 2px;
-}
-.nav-list .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: 20px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover,
-.nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover,
-.nav-pills > .active > a:focus {
-  color: #ffffff;
-  background-color: #0088cc;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover,
-.nav-tabs.nav-stacked > li > a:focus {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu {
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.nav .dropdown-toggle .caret {
-  border-top-color: #0088cc;
-  border-bottom-color: #0088cc;
-  margin-top: 6px;
-}
-.nav .dropdown-toggle:hover .caret,
-.nav .dropdown-toggle:focus .caret {
-  border-top-color: #005580;
-  border-bottom-color: #005580;
-}
-/* move down carets for tabs */
-.nav-tabs .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-.nav .active .dropdown-toggle .caret {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.nav-tabs .active .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-.nav > .dropdown.active > a:hover,
-.nav > .dropdown.active > a:focus {
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover,
-.nav > li.dropdown.open.active > a:focus {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret,
-.nav li.dropdown.open a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.tabs-stacked .open > a:hover,
-.tabs-stacked .open > a:focus {
-  border-color: #999999;
-}
-.tabbable {
-  *zoom: 1;
-}
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.tabbable:after {
-  clear: both;
-}
-.tab-content {
-  overflow: auto;
-}
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below > .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.tabs-below > .nav-tabs > li > a:hover,
-.tabs-below > .nav-tabs > li > a:focus {
-  border-bottom-color: transparent;
-  border-top-color: #ddd;
-}
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover,
-.tabs-below > .nav-tabs > .active > a:focus {
-  border-color: transparent #ddd #ddd #ddd;
-}
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.tabs-left > .nav-tabs > li > a:hover,
-.tabs-left > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover,
-.tabs-left > .nav-tabs .active > a:focus {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.tabs-right > .nav-tabs > li > a:hover,
-.tabs-right > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover,
-.tabs-right > .nav-tabs .active > a:focus {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-.nav > .disabled > a {
-  color: #999999;
-}
-.nav > .disabled > a:hover,
-.nav > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  cursor: default;
-}
-.navbar {
-  overflow: visible;
-  margin-bottom: 20px;
-  *position: relative;
-  *z-index: 2;
-}
-.navbar-inner {
-  min-height: 40px;
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #fafafa;
-  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
-  border: 1px solid #d4d4d4;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  *zoom: 1;
-}
-.navbar-inner:before,
-.navbar-inner:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.navbar-inner:after {
-  clear: both;
-}
-.navbar .container {
-  width: auto;
-}
-.nav-collapse.collapse {
-  height: auto;
-  overflow: visible;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 10px 20px 10px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  color: #777777;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.navbar .brand:hover,
-.navbar .brand:focus {
-  text-decoration: none;
-}
-.navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #777777;
-}
-.navbar-link {
-  color: #777777;
-}
-.navbar-link:hover,
-.navbar-link:focus {
-  color: #333333;
-}
-.navbar .divider-vertical {
-  height: 40px;
-  margin: 0 9px;
-  border-left: 1px solid #f2f2f2;
-  border-right: 1px solid #ffffff;
-}
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn,
-.navbar .input-prepend .btn,
-.navbar .input-append .btn,
-.navbar .input-prepend .btn-group,
-.navbar .input-append .btn-group {
-  margin-top: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .btn {
-  display: inline-block;
-  margin-bottom: 0;
-}
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-form .input-append,
-.navbar-form .input-prepend {
-  margin-top: 5px;
-  white-space: nowrap;
-}
-.navbar-form .input-append input,
-.navbar-form .input-prepend input {
-  margin-top: 0;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  margin-bottom: 0;
-  padding: 4px 14px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-.navbar-static-top {
-  position: static;
-  margin-bottom: 0;
-}
-.navbar-static-top .navbar-inner {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  margin-bottom: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom .navbar-inner {
-  border-width: 1px 0 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-.navbar-fixed-top {
-  top: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1);
-  -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1);
-  box-shadow: 0 1px 10px rgba(0,0,0,.1);
-}
-.navbar-fixed-bottom {
-  bottom: 0;
-}
-.navbar-fixed-bottom .navbar-inner {
-  -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-  -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-  box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-  margin-right: 0;
-}
-.navbar .nav > li {
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 15px 10px;
-  color: #777777;
-  text-decoration: none;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-.navbar .nav > li > a:focus,
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #333333;
-  text-decoration: none;
-}
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  color: #555555;
-  text-decoration: none;
-  background-color: #e5e5e5;
-  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-  -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-}
-.navbar .btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #ededed;
-  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
-  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
-  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e5e5e5;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-}
-.navbar .btn-navbar:hover,
-.navbar .btn-navbar:focus,
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active,
-.navbar .btn-navbar.disabled,
-.navbar .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #e5e5e5;
-  *background-color: #d9d9d9;
-}
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active {
-  background-color: #cccccc \9;
-}
-.navbar .btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.navbar .nav > li > .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .nav > li > .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
-  border-top: 7px solid #ccc;
-  border-top-color: rgba(0, 0, 0, 0.2);
-  border-bottom: 0;
-  bottom: -7px;
-  top: auto;
-}
-.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
-  border-top: 6px solid #ffffff;
-  border-bottom: 0;
-  bottom: -6px;
-  top: auto;
-}
-.navbar .nav li.dropdown > a:hover .caret,
-.navbar .nav li.dropdown > a:focus .caret {
-  border-top-color: #333333;
-  border-bottom-color: #333333;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: #e5e5e5;
-  color: #555555;
-}
-.navbar .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #777777;
-  border-bottom-color: #777777;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-.navbar .pull-right > li > .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right {
-  left: auto;
-  right: 0;
-}
-.navbar .pull-right > li > .dropdown-menu:before,
-.navbar .nav > li > .dropdown-menu.pull-right:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .pull-right > li > .dropdown-menu:after,
-.navbar .nav > li > .dropdown-menu.pull-right:after {
-  left: auto;
-  right: 13px;
-}
-.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
-  left: auto;
-  right: 100%;
-  margin-left: 0;
-  margin-right: -1px;
-  -webkit-border-radius: 6px 0 6px 6px;
-  -moz-border-radius: 6px 0 6px 6px;
-  border-radius: 6px 0 6px 6px;
-}
-.navbar-inverse .navbar-inner {
-  background-color: #1b1b1b;
-  background-image: -moz-linear-gradient(top, #222222, #111111);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
-  background-image: -webkit-linear-gradient(top, #222222, #111111);
-  background-image: -o-linear-gradient(top, #222222, #111111);
-  background-image: linear-gradient(to bottom, #222222, #111111);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
-  border-color: #252525;
-}
-.navbar-inverse .brand,
-.navbar-inverse .nav > li > a {
-  color: #999999;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar-inverse .brand:hover,
-.navbar-inverse .nav > li > a:hover,
-.navbar-inverse .brand:focus,
-.navbar-inverse .nav > li > a:focus {
-  color: #ffffff;
-}
-.navbar-inverse .brand {
-  color: #999999;
-}
-.navbar-inverse .navbar-text {
-  color: #999999;
-}
-.navbar-inverse .nav > li > a:focus,
-.navbar-inverse .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-}
-.navbar-inverse .nav .active > a,
-.navbar-inverse .nav .active > a:hover,
-.navbar-inverse .nav .active > a:focus {
-  color: #ffffff;
-  background-color: #111111;
-}
-.navbar-inverse .navbar-link {
-  color: #999999;
-}
-.navbar-inverse .navbar-link:hover,
-.navbar-inverse .navbar-link:focus {
-  color: #ffffff;
-}
-.navbar-inverse .divider-vertical {
-  border-left-color: #111111;
-  border-right-color: #222222;
-}
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: #111111;
-  color: #ffffff;
-}
-.navbar-inverse .nav li.dropdown > a:hover .caret,
-.navbar-inverse .nav li.dropdown > a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #999999;
-  border-bottom-color: #999999;
-}
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar-inverse .navbar-search .search-query {
-  color: #ffffff;
-  background-color: #515151;
-  border-color: #111111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-inverse .navbar-search .search-query:-moz-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query:focus,
-.navbar-inverse .navbar-search .search-query.focused {
-  padding: 5px 15px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-inverse .btn-navbar {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e0e0e;
-  background-image: -moz-linear-gradient(top, #151515, #040404);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
-  background-image: -webkit-linear-gradient(top, #151515, #040404);
-  background-image: -o-linear-gradient(top, #151515, #040404);
-  background-image: linear-gradient(to bottom, #151515, #040404);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
-  border-color: #040404 #040404 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #040404;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.navbar-inverse .btn-navbar:hover,
-.navbar-inverse .btn-navbar:focus,
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active,
-.navbar-inverse .btn-navbar.disabled,
-.navbar-inverse .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #040404;
-  *background-color: #000000;
-}
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active {
-  background-color: #000000 \9;
-}
-/*@import "bootstrap/breadcrumbs.less";*/
-/*@import "bootstrap/pagination.less";*/
-/*@import "bootstrap/pager.less";*/
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-}
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.modal {
-  position: fixed;
-  top: 10%;
-  left: 50%;
-  z-index: 1050;
-  width: 560px;
-  margin-left: -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  /* IE6-7 */
-
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-  outline: none;
-}
-.modal.fade {
-  -webkit-transition: opacity .3s linear, top .3s ease-out;
-  -moz-transition: opacity .3s linear, top .3s ease-out;
-  -o-transition: opacity .3s linear, top .3s ease-out;
-  transition: opacity .3s linear, top .3s ease-out;
-  top: -25%;
-}
-.modal.fade.in {
-  top: 10%;
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-.modal-header .close {
-  margin-top: 2px;
-}
-.modal-header h3 {
-  margin: 0;
-  line-height: 30px;
-}
-.modal-body {
-  position: relative;
-  overflow-y: auto;
-  max-height: 400px;
-  padding: 15px;
-}
-.modal-form {
-  margin-bottom: 0;
-}
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  text-align: right;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.modal-footer:after {
-  clear: both;
-}
-.modal-footer .btn + .btn {
-  margin-left: 5px;
-  margin-bottom: 0;
-}
-.modal-footer .btn-group .btn + .btn {
-  margin-left: -1px;
-}
-.modal-footer .btn-block + .btn-block {
-  margin-left: 0;
-}
-/*@import "bootstrap/tooltip.less";*/
-/*@import "bootstrap/popovers.less";*/
-/*@import "bootstrap/thumbnails.less";*/
-/*@import "bootstrap/media.less";*/
-/*@import "bootstrap/labels-badges.less";*/
-/*@import "bootstrap/progress-bars.less";*/
-/*@import "bootstrap/accordion.less";*/
-/*@import "bootstrap/carousel.less";*/
-/*@import "bootstrap/hero-unit.less";*/
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-.invisible {
-  visibility: hidden;
-}
-.affix {
-  position: fixed;
-}
-/* http://meyerweb.com/eric/tools/css/reset/ 
-   v2.0 | 20110126
-   License: none (public domain)
-*/
-html,
-body,
-div,
-span,
-applet,
-object,
-iframe,
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-p,
-blockquote,
-pre,
-a,
-abbr,
-acronym,
-address,
-big,
-cite,
-code,
-del,
-dfn,
-em,
-img,
-ins,
-kbd,
-q,
-s,
-samp,
-small,
-strike,
-strong,
-sub,
-sup,
-tt,
-var,
-b,
-u,
-i,
-center,
-dl,
-dt,
-dd,
-ol,
-ul,
-li,
-fieldset,
-form,
-label,
-legend,
-table,
-caption,
-tbody,
-tfoot,
-thead,
-tr,
-th,
-td,
-article,
-aside,
-canvas,
-details,
-embed,
-figure,
-figcaption,
-footer,
-header,
-hgroup,
-menu,
-nav,
-output,
-ruby,
-section,
-summary,
-time,
-mark,
-audio,
-video {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-size: 100%;
-  font: inherit;
-  vertical-align: baseline;
-}
-/* HTML5 display-role reset for older browsers */
-arti

<TRUNCATED>


[32/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png
deleted file mode 100644
index 195dc6d..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png
deleted file mode 100644
index 3141467..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png
deleted file mode 100644
index 046811e..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_error.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_error.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_error.png
deleted file mode 100644
index f07f449..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_error.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png
deleted file mode 100644
index eb6158e..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_find.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_find.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_find.png
deleted file mode 100644
index 2f19388..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_find.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png
deleted file mode 100644
index 8e83281..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_go.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_go.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_go.png
deleted file mode 100644
index 80fe1ed..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_go.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_green.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_green.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_green.png
deleted file mode 100644
index de8e003..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_green.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_key.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_key.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_key.png
deleted file mode 100644
index d6626cb..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_key.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png
deleted file mode 100644
index 7e56870..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_link.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_link.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_link.png
deleted file mode 100644
index 312eab0..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_link.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png
deleted file mode 100644
index 246a2f0..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png
deleted file mode 100644
index 968f073..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_red.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_red.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_red.png
deleted file mode 100644
index 0b18247..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_red.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png
deleted file mode 100644
index cf347c7..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_save.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_save.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_save.png
deleted file mode 100644
index caea546..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_save.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white.png
deleted file mode 100644
index 8b8b1ca..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png
deleted file mode 100644
index 8f8095e..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png
deleted file mode 100644
index 159b240..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png
deleted file mode 100644
index aa23dde..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png
deleted file mode 100644
index 34a05cc..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png
deleted file mode 100644
index f501a59..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png
deleted file mode 100644
index 848bdaf..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png
deleted file mode 100644
index 0c76bd1..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png
deleted file mode 100644
index 87a6914..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png
deleted file mode 100644
index c66011f..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png
deleted file mode 100644
index 2b6b100..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png
deleted file mode 100644
index a9f31a2..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png
deleted file mode 100644
index a87cf84..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png
deleted file mode 100644
index ffb8fc9..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png
deleted file mode 100644
index 0a7d6f4..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png
deleted file mode 100644
index bddba1f..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png
deleted file mode 100644
index af1ecaf..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png
deleted file mode 100644
index 4cc537a..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png
deleted file mode 100644
index b93e776..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png
deleted file mode 100644
index 9fc5a0a..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png
deleted file mode 100644
index b977d7e..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png
deleted file mode 100644
index 5818436..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png
deleted file mode 100644
index 5769120..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png
deleted file mode 100644
index 8d719df..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png
deleted file mode 100644
index 106f5aa..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png
deleted file mode 100644
index e4a1ecb..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png
deleted file mode 100644
index 7e62a92..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png
deleted file mode 100644
index e902abb..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png
deleted file mode 100644
index 1d2d0a4..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png
deleted file mode 100644
index d616484..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png
deleted file mode 100644
index 7215d1e..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png
deleted file mode 100644
index bf7bd1c..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png
deleted file mode 100644
index f6b74cc..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png
deleted file mode 100644
index d3fffb6..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png
deleted file mode 100644
index a65bcb3..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png
deleted file mode 100644
index 23a37b8..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png
deleted file mode 100644
index f907e44..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png
deleted file mode 100644
index 5b2cbb3..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png
deleted file mode 100644
index 7868a25..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png
deleted file mode 100644
index 134b669..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png
deleted file mode 100644
index c4eff03..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png
deleted file mode 100644
index 884ffd6..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png
deleted file mode 100644
index f59b7c4..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png
deleted file mode 100644
index 44084ad..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png
deleted file mode 100644
index 3a1441c..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png
deleted file mode 100644
index e770829..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png
deleted file mode 100644
index 813f712..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png
deleted file mode 100644
index d9cf132..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png
deleted file mode 100644
index 52699bf..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png
deleted file mode 100644
index 4a05955..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png
deleted file mode 100644
index a0a433d..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png
deleted file mode 100644
index 1eb8809..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png
deleted file mode 100644
index ae8ecbf..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png
deleted file mode 100644
index 6ed2490..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png
deleted file mode 100644
index fecadd0..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png
deleted file mode 100644
index fd4bbcc..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_word.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_word.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_word.png
deleted file mode 100644
index 834cdfa..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_word.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_world.png
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_world.png b/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_world.png
deleted file mode 100644
index b8895dd..0000000
Binary files a/web/demos/package/node_modules/express/node_modules/connect/lib/public/icons/page_world.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/public/style.css
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/public/style.css b/web/demos/package/node_modules/express/node_modules/connect/lib/public/style.css
deleted file mode 100644
index 32b6507..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/public/style.css
+++ /dev/null
@@ -1,141 +0,0 @@
-body {
-  margin: 0;
-  padding: 80px 100px;
-  font: 13px "Helvetica Neue", "Lucida Grande", "Arial";
-  background: #ECE9E9 -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ECE9E9));
-  background: #ECE9E9 -moz-linear-gradient(top, #fff, #ECE9E9);
-  background-repeat: no-repeat;
-  color: #555;
-  -webkit-font-smoothing: antialiased;
-}
-h1, h2, h3 {
-  margin: 0;
-  font-size: 22px;
-  color: #343434;
-}
-h1 em, h2 em {
-  padding: 0 5px;
-  font-weight: normal;
-}
-h1 {
-  font-size: 60px;
-}
-h2 {
-	margin-top: 10px;
-}
-h3 {
-  margin: 5px 0 10px 0;
-  padding-bottom: 5px;
-  border-bottom: 1px solid #eee;
-  font-size: 18px;
-}
-ul {
-  margin: 0;
-  padding: 0;
-}
-ul li {
-  margin: 5px 0;
-  padding: 3px 8px;
-  list-style: none;
-}
-ul li:hover {
-  cursor: pointer;
-  color: #2e2e2e;
-}
-ul li .path {
-  padding-left: 5px;
-  font-weight: bold;
-}
-ul li .line {
-  padding-right: 5px;
-  font-style: italic;
-}
-ul li:first-child .path {
-  padding-left: 0;
-}
-p {
-  line-height: 1.5;
-}
-a {
-  color: #555;
-  text-decoration: none;
-}
-a:hover {
-  color: #303030;
-}
-#stacktrace {
-	margin-top: 15px;
-}
-.directory h1 {
-  margin-bottom: 15px;
-  font-size: 18px;
-}
-ul#files {
-  width: 100%;
-  height: 500px;
-}
-ul#files li {
-  padding: 0;
-}
-ul#files li img {
-  position: absolute;
-  top: 5px;
-  left: 5px;
-}
-ul#files li a {
-   position: relative;
-  display: block;
-  margin: 1px;
-  width: 30%;
-  height: 25px;
-  line-height: 25px;
-  text-indent: 8px;
-  float: left;
-  border: 1px solid transparent;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-ul#files li a.icon {
-  text-indent: 25px;
-}
-ul#files li a:focus,
-ul#files li a:hover {
-  outline: none;
-  background: rgba(255,255,255,0.65);
-  border: 1px solid #ececec;
-}
-ul#files li a.highlight {
-  -webkit-transition: background .4s ease-in-out;
-  background: #ffff4f;
-  border-color: #E9DC51;
-}
-#search {
-  display: block;
-  position: fixed;
-  top: 20px;
-  right: 20px;
-  width: 90px;
-  -webkit-transition: width ease 0.2s, opacity ease 0.4s;
-  -moz-transition: width ease 0.2s, opacity ease 0.4s;
-  -webkit-border-radius: 32px;
-  -moz-border-radius: 32px;
-  -webkit-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03);
-  -moz-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03);
-  -webkit-font-smoothing: antialiased;
-  text-align: left;
-  font: 13px "Helvetica Neue", Arial, sans-serif;
-  padding: 4px 10px;
-  border: none;
-  background: transparent;
-  margin-bottom: 0;
-  outline: none;
-  opacity: 0.7;
-  color: #888;
-}
-#search:focus {
-  width: 120px;
-  opacity: 1.0; 
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/lib/utils.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/lib/utils.js b/web/demos/package/node_modules/express/node_modules/connect/lib/utils.js
deleted file mode 100644
index d52009a..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/lib/utils.js
+++ /dev/null
@@ -1,386 +0,0 @@
-
-/*!
- * Connect - utils
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var http = require('http')
-  , crypto = require('crypto')
-  , parse = require('url').parse
-  , signature = require('cookie-signature')
-  , nodeVersion = process.versions.node.split('.');
-
-// pause is broken in node < 0.10
-exports.brokenPause = parseInt(nodeVersion[0], 10) === 0
-  && parseInt(nodeVersion[1], 10) < 10;
-
-/**
- * Return `true` if the request has a body, otherwise return `false`.
- *
- * @param  {IncomingMessage} req
- * @return {Boolean}
- * @api private
- */
-
-exports.hasBody = function(req) {
-  var encoding = 'transfer-encoding' in req.headers;
-  var length = 'content-length' in req.headers && req.headers['content-length'] !== '0';
-  return encoding || length;
-};
-
-/**
- * Extract the mime type from the given request's
- * _Content-Type_ header.
- *
- * @param  {IncomingMessage} req
- * @return {String}
- * @api private
- */
-
-exports.mime = function(req) {
-  var str = req.headers['content-type'] || '';
-  return str.split(';')[0];
-};
-
-/**
- * Generate an `Error` from the given status `code`
- * and optional `msg`.
- *
- * @param {Number} code
- * @param {String} msg
- * @return {Error}
- * @api private
- */
-
-exports.error = function(code, msg){
-  var err = new Error(msg || http.STATUS_CODES[code]);
-  err.status = code;
-  return err;
-};
-
-/**
- * Return md5 hash of the given string and optional encoding,
- * defaulting to hex.
- *
- *     utils.md5('wahoo');
- *     // => "e493298061761236c96b02ea6aa8a2ad"
- *
- * @param {String} str
- * @param {String} encoding
- * @return {String}
- * @api private
- */
-
-exports.md5 = function(str, encoding){
-  return crypto
-    .createHash('md5')
-    .update(str)
-    .digest(encoding || 'hex');
-};
-
-/**
- * Merge object b with object a.
- *
- *     var a = { foo: 'bar' }
- *       , b = { bar: 'baz' };
- *
- *     utils.merge(a, b);
- *     // => { foo: 'bar', bar: 'baz' }
- *
- * @param {Object} a
- * @param {Object} b
- * @return {Object}
- * @api private
- */
-
-exports.merge = function(a, b){
-  if (a && b) {
-    for (var key in b) {
-      a[key] = b[key];
-    }
-  }
-  return a;
-};
-
-/**
- * Escape the given string of `html`.
- *
- * @param {String} html
- * @return {String}
- * @api private
- */
-
-exports.escape = function(html){
-  return String(html)
-    .replace(/&(?!\w+;)/g, '&amp;')
-    .replace(/</g, '&lt;')
-    .replace(/>/g, '&gt;')
-    .replace(/"/g, '&quot;');
-};
-
-/**
- * Sign the given `val` with `secret`.
- *
- * @param {String} val
- * @param {String} secret
- * @return {String}
- * @api private
- */
-
-exports.sign = function(val, secret){
-  console.warn('do not use utils.sign(), use https://github.com/visionmedia/node-cookie-signature')
-  return val + '.' + crypto
-    .createHmac('sha256', secret)
-    .update(val)
-    .digest('base64')
-    .replace(/=+$/, '');
-};
-
-/**
- * Unsign and decode the given `val` with `secret`,
- * returning `false` if the signature is invalid.
- *
- * @param {String} val
- * @param {String} secret
- * @return {String|Boolean}
- * @api private
- */
-
-exports.unsign = function(val, secret){
-  console.warn('do not use utils.unsign(), use https://github.com/visionmedia/node-cookie-signature')
-  var str = val.slice(0, val.lastIndexOf('.'));
-  return exports.sign(str, secret) == val
-    ? str
-    : false;
-};
-
-/**
- * Parse signed cookies, returning an object
- * containing the decoded key/value pairs,
- * while removing the signed key from `obj`.
- *
- * @param {Object} obj
- * @return {Object}
- * @api private
- */
-
-exports.parseSignedCookies = function(obj, secret){
-  var ret = {};
-  Object.keys(obj).forEach(function(key){
-    var val = obj[key];
-    if (0 == val.indexOf('s:')) {
-      val = signature.unsign(val.slice(2), secret);
-      if (val) {
-        ret[key] = val;
-        delete obj[key];
-      }
-    }
-  });
-  return ret;
-};
-
-/**
- * Parse a signed cookie string, return the decoded value
- *
- * @param {String} str signed cookie string
- * @param {String} secret
- * @return {String} decoded value
- * @api private
- */
-
-exports.parseSignedCookie = function(str, secret){
-  return 0 == str.indexOf('s:')
-    ? signature.unsign(str.slice(2), secret)
-    : str;
-};
-
-/**
- * Parse JSON cookies.
- *
- * @param {Object} obj
- * @return {Object}
- * @api private
- */
-
-exports.parseJSONCookies = function(obj){
-  Object.keys(obj).forEach(function(key){
-    var val = obj[key];
-    var res = exports.parseJSONCookie(val);
-    if (res) obj[key] = res;
-  });
-  return obj;
-};
-
-/**
- * Parse JSON cookie string
- *
- * @param {String} str
- * @return {Object} Parsed object or null if not json cookie
- * @api private
- */
-
-exports.parseJSONCookie = function(str) {
-  if (0 == str.indexOf('j:')) {
-    try {
-      return JSON.parse(str.slice(2));
-    } catch (err) {
-      // no op
-    }
-  }
-};
-
-/**
- * Pause `data` and `end` events on the given `obj`.
- * Middleware performing async tasks _should_ utilize
- * this utility (or similar), to re-emit data once
- * the async operation has completed, otherwise these
- * events may be lost. Pause is only required for
- * node versions less than 10, and is replaced with
- * noop's otherwise.
- *
- *      var pause = utils.pause(req);
- *      fs.readFile(path, function(){
- *         next();
- *         pause.resume();
- *      });
- *
- * @param {Object} obj
- * @return {Object}
- * @api private
- */
-
-exports.pause = exports.brokenPause
-  ? require('pause')
-  : function () {
-    return {
-      end: noop,
-      resume: noop
-    }
-  }
-
-/**
- * Strip `Content-*` headers from `res`.
- *
- * @param {ServerResponse} res
- * @api private
- */
-
-exports.removeContentHeaders = function(res){
-  Object.keys(res._headers).forEach(function(field){
-    if (0 == field.indexOf('content')) {
-      res.removeHeader(field);
-    }
-  });
-};
-
-/**
- * Check if `req` is a conditional GET request.
- *
- * @param {IncomingMessage} req
- * @return {Boolean}
- * @api private
- */
-
-exports.conditionalGET = function(req) {
-  return req.headers['if-modified-since']
-    || req.headers['if-none-match'];
-};
-
-/**
- * Respond with 401 "Unauthorized".
- *
- * @param {ServerResponse} res
- * @param {String} realm
- * @api private
- */
-
-exports.unauthorized = function(res, realm) {
-  res.statusCode = 401;
-  res.setHeader('WWW-Authenticate', 'Basic realm="' + realm + '"');
-  res.end('Unauthorized');
-};
-
-/**
- * Respond with 304 "Not Modified".
- *
- * @param {ServerResponse} res
- * @param {Object} headers
- * @api private
- */
-
-exports.notModified = function(res) {
-  exports.removeContentHeaders(res);
-  res.statusCode = 304;
-  res.end();
-};
-
-/**
- * Return an ETag in the form of `"<size>-<mtime>"`
- * from the given `stat`.
- *
- * @param {Object} stat
- * @return {String}
- * @api private
- */
-
-exports.etag = function(stat) {
-  return '"' + stat.size + '-' + Number(stat.mtime) + '"';
-};
-
-/**
- * Parse the given Cache-Control `str`.
- *
- * @param {String} str
- * @return {Object}
- * @api private
- */
-
-exports.parseCacheControl = function(str){
-  var directives = str.split(',')
-    , obj = {};
-
-  for(var i = 0, len = directives.length; i < len; i++) {
-    var parts = directives[i].split('=')
-      , key = parts.shift().trim()
-      , val = parseInt(parts.shift(), 10);
-
-    obj[key] = isNaN(val) ? true : val;
-  }
-
-  return obj;
-};
-
-/**
- * Parse the `req` url with memoization.
- *
- * @param {ServerRequest} req
- * @return {Object}
- * @api private
- */
-
-exports.parseUrl = function(req){
-  var parsed = req._parsedUrl;
-  if (parsed && parsed.href == req.url) {
-    return parsed;
-  } else {
-    return req._parsedUrl = parse(req.url);
-  }
-};
-
-/**
- * Parse byte `size` string.
- *
- * @param {String} size
- * @return {Number}
- * @api private
- */
-
-exports.parseBytes = require('bytes');
-
-function noop() {}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore b/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore
deleted file mode 100644
index 9daeafb..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-test

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/History.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/History.md b/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/History.md
deleted file mode 100644
index 1332808..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/History.md
+++ /dev/null
@@ -1,10 +0,0 @@
-
-0.2.0 / 2012-10-28 
-==================
-
-  * bytes(200).should.eql('200b')
-
-0.1.0 / 2012-07-04 
-==================
-
-  * add bytes to string conversion [yields]

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/Makefile b/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/Makefile
deleted file mode 100644
index 8e8640f..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-
-test:
-	@./node_modules/.bin/mocha \
-		--reporter spec \
-		--require should
-
-.PHONY: test
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md b/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md
deleted file mode 100644
index 9325d5b..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# node-bytes
-
-  Byte string parser / formatter.
-
-## Example:
-
-```js
-bytes('1kb')
-// => 1024
-
-bytes('2mb')
-// => 2097152
-
-bytes('1gb')
-// => 1073741824
-
-bytes(1073741824)
-// => 1gb
-```
-
-## Installation
-
-```
-$ npm install bytes
-$ component install visionmedia/bytes.js
-```
-
-## License 
-
-(The MIT License)
-
-Copyright (c) 2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/component.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/component.json b/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/component.json
deleted file mode 100644
index 76a6057..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/component.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "name": "bytes",
-  "description": "byte size string parser / serializer",
-  "keywords": ["bytes", "utility"],
-  "version": "0.1.0",
-  "scripts": ["index.js"]
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/index.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/index.js
deleted file mode 100644
index 70b2e01..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/index.js
+++ /dev/null
@@ -1,39 +0,0 @@
-
-/**
- * Parse byte `size` string.
- *
- * @param {String} size
- * @return {Number}
- * @api public
- */
-
-module.exports = function(size) {
-  if ('number' == typeof size) return convert(size);
-  var parts = size.match(/^(\d+(?:\.\d+)?) *(kb|mb|gb)$/)
-    , n = parseFloat(parts[1])
-    , type = parts[2];
-
-  var map = {
-      kb: 1 << 10
-    , mb: 1 << 20
-    , gb: 1 << 30
-  };
-
-  return map[type] * n;
-};
-
-/**
- * convert bytes into string.
- *
- * @param {Number} b - bytes to convert
- * @return {String}
- * @api public
- */
-
-function convert (b) {
-  var gb = 1 << 30, mb = 1 << 20, kb = 1 << 10;
-  if (b >= gb) return (Math.round(b / gb * 100) / 100) + 'gb';
-  if (b >= mb) return (Math.round(b / mb * 100) / 100) + 'mb';
-  if (b >= kb) return (Math.round(b / kb * 100) / 100) + 'kb';
-  return b + 'b';
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/package.json b/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/package.json
deleted file mode 100644
index 0db9bc9..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/bytes/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "name": "bytes",
-  "author": {
-    "name": "TJ Holowaychuk",
-    "email": "tj@vision-media.ca",
-    "url": "http://tjholowaychuk.com"
-  },
-  "description": "byte size string parser / serializer",
-  "version": "0.2.0",
-  "main": "index.js",
-  "dependencies": {},
-  "devDependencies": {
-    "mocha": "*",
-    "should": "*"
-  },
-  "readme": "# node-bytes\n\n  Byte string parser / formatter.\n\n## Example:\n\n```js\nbytes('1kb')\n// => 1024\n\nbytes('2mb')\n// => 2097152\n\nbytes('1gb')\n// => 1073741824\n\nbytes(1073741824)\n// => 1gb\n```\n\n## Installation\n\n```\n$ npm install bytes\n$ component install visionmedia/bytes.js\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE
  IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
-  "readmeFilename": "Readme.md",
-  "_id": "bytes@0.2.0",
-  "_from": "bytes@0.2.0"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore
deleted file mode 100644
index 4fbabb3..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/test/tmp/
-*.upload
-*.un~
-*.http

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml
deleted file mode 100644
index cb931cb..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
-  - 0.8
-  - 0.9
-  - "0.10"

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE
deleted file mode 100644
index 38d3c9c..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE
+++ /dev/null
@@ -1,7 +0,0 @@
-Copyright (C) 2011 Felix Geisendƶrfer
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md
deleted file mode 100644
index 08e9eca..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md
+++ /dev/null
@@ -1,419 +0,0 @@
-# Formidable
-
-[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable)
-
-## Purpose
-
-A node.js module for parsing form data, especially file uploads.
-
-## Current status
-
-This module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading
-and encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from
-a large variety of clients and is considered production-ready.
-
-## Features
-
-* Fast (~500mb/sec), non-buffering multipart parser
-* Automatically writing file uploads to disk
-* Low memory footprint
-* Graceful error handling
-* Very high test coverage
-
-## Installation
-
-Via [npm](http://github.com/isaacs/npm):
-```
-npm install formidable@latest
-```
-Manually:
-```
-git clone git://github.com/felixge/node-formidable.git formidable
-vim my.js
-# var formidable = require('./formidable');
-```
-
-Note: Formidable requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library.
-
-## Example
-
-Parse an incoming file upload.
-```javascript
-var formidable = require('formidable'),
-    http = require('http'),
-    util = require('util');
-
-http.createServer(function(req, res) {
-  if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
-    // parse a file upload
-    var form = new formidable.IncomingForm();
-
-    form.parse(req, function(err, fields, files) {
-      res.writeHead(200, {'content-type': 'text/plain'});
-      res.write('received upload:\n\n');
-      res.end(util.inspect({fields: fields, files: files}));
-    });
-
-    return;
-  }
-
-  // show a file upload form
-  res.writeHead(200, {'content-type': 'text/html'});
-  res.end(
-    '<form action="/upload" enctype="multipart/form-data" method="post">'+
-    '<input type="text" name="title"><br>'+
-    '<input type="file" name="upload" multiple="multiple"><br>'+
-    '<input type="submit" value="Upload">'+
-    '</form>'
-  );
-}).listen(8080);
-```
-## API
-
-### Formidable.IncomingForm
-```javascript
-var form = new formidable.IncomingForm()
-```
-Creates a new incoming form.
-
-```javascript
-form.encoding = 'utf-8';
-```
-Sets encoding for incoming form fields.
-
-```javascript
-form.uploadDir = process.env.TMP || process.env.TMPDIR || process.env.TEMP || '/tmp' || process.cwd();
-```
-The directory for placing file uploads in. You can move them later on using
-`fs.rename()`. The default directory is picked at module load time depending on
-the first existing directory from those listed above.
-
-```javascript
-form.keepExtensions = false;
-```
-If you want the files written to `form.uploadDir` to include the extensions of the original files, set this property to `true`.
-
-```javascript
-form.type
-```
-Either 'multipart' or 'urlencoded' depending on the incoming request.
-
-```javascript
-form.maxFieldsSize = 2 * 1024 * 1024;
-```
-Limits the amount of memory a field (not file) can allocate in bytes.
-If this value is exceeded, an `'error'` event is emitted. The default
-size is 2MB.
-
-```javascript
-form.maxFields = 0;
-```
-Limits the number of fields that the querystring parser will decode. Defaults
-to 0 (unlimited).
-
-```javascript
-form.hash = false;
-```
-If you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`.
-
-```javascript
-form.bytesReceived
-```
-The amount of bytes received for this form so far.
-
-```javascript
-form.bytesExpected
-```
-The expected number of bytes in this form.
-
-```javascript
-form.parse(request, [cb]);
-```
-Parses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback:
-
-
-```javascript
-form.parse(req, function(err, fields, files) {
-  // ...
-});
-
-form.onPart(part);
-```
-You may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events  processing which would occur otherwise, making you fully responsible for handling the processing.
-
-```javascript
-form.onPart = function(part) {
-  part.addListener('data', function() {
-    // ...
-  });
-}
-```
-If you want to use formidable to only handle certain parts for you, you can do so:
-```javascript
-form.onPart = function(part) {
-  if (!part.filename) {
-    // let formidable handle all non-file parts
-    form.handlePart(part);
-  }
-}
-```
-Check the code in this method for further inspiration.
-
-
-### Formidable.File
-```javascript
-file.size = 0
-```
-The size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet.
-```javascript
-file.path = null
-```
-The path this file is being written to. You can modify this in the `'fileBegin'` event in
-case you are unhappy with the way formidable generates a temporary path for your files.
-```javascript
-file.name = null
-```
-The name this file had according to the uploading client.
-```javascript
-file.type = null
-```
-The mime type of this file, according to the uploading client.
-```javascript
-file.lastModifiedDate = null
-```
-A date object (or `null`) containing the time this file was last written to. Mostly
-here for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/).
-```javascript
-file.hash = null
-```
-If hash calculation was set, you can read the hex digest out of this var.
-
-#### Formidable.File#toJSON()
-
-  This method returns a JSON-representation of the file, allowing you to
-  `JSON.stringify()` the file which is useful for logging and responding
-  to requests.
-
-### Events
-
-
-#### 'progress'
-```javascript
-form.on('progress', function(bytesReceived, bytesExpected) {
-});
-```
-Emitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar.
-
-
-
-#### 'field'
-```javascript
-form.on('field', function(name, value) {
-});
-```
-
-#### 'fileBegin'
-
-Emitted whenever a field / value pair has been received.
-```javascript
-form.on('fileBegin', function(name, file) {
-});
-```
-
-#### 'file'
-
-Emitted whenever a new file is detected in the upload stream. Use this even if
-you want to stream the file to somewhere else while buffering the upload on
-the file system.
-
-Emitted whenever a field / file pair has been received. `file` is an instance of `File`.
-```javascript
-form.on('file', function(name, file) {
-});
-```
-
-#### 'error'
-
-Emitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events.
-```javascript
-form.on('error', function(err) {
-});
-```
-
-#### 'aborted'
-
-
-Emitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core).
-```javascript
-form.on('aborted', function() {
-});
-```
-
-##### 'end'
-```javascript
-form.on('end', function() {
-});
-```
-Emitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response.
-
-
-
-## Changelog
-
-### v1.0.14
-
-* Add failing hash tests. (Ben Trask)
-* Enable hash calculation again (Eugene Girshov)
-* Test for immediate data events (Tim Smart)
-* Re-arrange IncomingForm#parse (Tim Smart)
-
-### v1.0.13
-
-* Only update hash if update method exists (Sven Lito)
-* According to travis v0.10 needs to go quoted (Sven Lito)
-* Bumping build node versions (Sven Lito)
-* Additional fix for empty requests (Eugene Girshov)
-* Change the default to 1000, to match the new Node behaviour. (OrangeDog)
-* Add ability to control maxKeys in the querystring parser. (OrangeDog)
-* Adjust test case to work with node 0.9.x (Eugene Girshov)
-* Update package.json (Sven Lito)
-* Path adjustment according to eb4468b (Markus Ast)
-
-### v1.0.12
-
-* Emit error on aborted connections (Eugene Girshov)
-* Add support for empty requests (Eugene Girshov)
-* Fix name/filename handling in Content-Disposition (jesperp)
-* Tolerate malformed closing boundary in multipart (Eugene Girshov)
-* Ignore preamble in multipart messages (Eugene Girshov)
-* Add support for application/json (Mike Frey, Carlos Rodriguez)
-* Add support for Base64 encoding (Elmer Bulthuis)
-* Add File#toJSON (TJ Holowaychuk)
-* Remove support for Node.js 0.4 & 0.6 (Andrew Kelley)
-* Documentation improvements (Sven Lito, Andre Azevedo)
-* Add support for application/octet-stream (Ion Lupascu, Chris Scribner)
-* Use os.tmpDir() to get tmp directory (Andrew Kelley)
-* Improve package.json (Andrew Kelley, Sven Lito)
-* Fix benchmark script (Andrew Kelley)
-* Fix scope issue in incoming_forms (Sven Lito)
-* Fix file handle leak on error (OrangeDog)
-
-### v1.0.11
-
-* Calculate checksums for incoming files (sreuter)
-* Add definition parameters to "IncomingForm" as an argument (Math-)
-
-### v1.0.10
-
-* Make parts to be proper Streams (Matt Robenolt)
-
-### v1.0.9
-
-* Emit progress when content length header parsed (Tim KoschĆ¼tzki)
-* Fix Readme syntax due to GitHub changes (goob)
-* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara)
-
-### v1.0.8
-
-* Strip potentially unsafe characters when using `keepExtensions: true`.
-* Switch to utest / urun for testing
-* Add travis build
-
-### v1.0.7
-
-* Remove file from package that was causing problems when installing on windows. (#102)
-* Fix typos in Readme (Jason Davies).
-
-### v1.0.6
-
-* Do not default to the default to the field name for file uploads where
-  filename="".
-
-### v1.0.5
-
-* Support filename="" in multipart parts
-* Explain unexpected end() errors in parser better
-
-**Note:** Starting with this version, formidable emits 'file' events for empty
-file input fields. Previously those were incorrectly emitted as regular file
-input fields with value = "".
-
-### v1.0.4
-
-* Detect a good default tmp directory regardless of platform. (#88)
-
-### v1.0.3
-
-* Fix problems with utf8 characters (#84) / semicolons in filenames (#58)
-* Small performance improvements
-* New test suite and fixture system
-
-### v1.0.2
-
-* Exclude node\_modules folder from git
-* Implement new `'aborted'` event
-* Fix files in example folder to work with recent node versions
-* Make gently a devDependency
-
-[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2)
-
-### v1.0.1
-
-* Fix package.json to refer to proper main directory. (#68, Dean Landolt)
-
-[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1)
-
-### v1.0.0
-
-* Add support for multipart boundaries that are quoted strings. (Jeff Craig)
-
-This marks the beginning of development on version 2.0 which will include
-several architectural improvements.
-
-[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0)
-
-### v0.9.11
-
-* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim KoschĆ¼tzki)
-* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class
-
-**Important:** The old property names of the File class will be removed in a
-future release.
-
-[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11)
-
-### Older releases
-
-These releases were done before starting to maintain the above Changelog:
-
-* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10)
-* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9)
-* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8)
-* [v0.9.7](https://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7)
-* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6)
-* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5)
-* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4)
-* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3)
-* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2)
-* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1)
-* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)
-* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)
-* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)
-* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)
-* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)
-* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)
-* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)
-* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)
-* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0)
-
-## License
-
-Formidable is licensed under the MIT license.
-
-## Ports
-
-* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable
-
-## Credits
-
-* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js b/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js
deleted file mode 100644
index 49abc43..0000000
--- a/web/demos/package/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js
+++ /dev/null
@@ -1,71 +0,0 @@
-var assert = require('assert');
-require('../test/common');
-var multipartParser = require('../lib/multipart_parser'),
-    MultipartParser = multipartParser.MultipartParser,
-    parser = new MultipartParser(),
-    Buffer = require('buffer').Buffer,
-    boundary = '-----------------------------168072824752491622650073',
-    mb = 100,
-    buffer = createMultipartBuffer(boundary, mb * 1024 * 1024),
-    callbacks =
-      { partBegin: -1,
-        partEnd: -1,
-        headerField: -1,
-        headerValue: -1,
-        partData: -1,
-        end: -1,
-      };
-
-
-parser.initWithBoundary(boundary);
-parser.onHeaderField = function() {
-  callbacks.headerField++;
-};
-
-parser.onHeaderValue = function() {
-  callbacks.headerValue++;
-};
-
-parser.onPartBegin = function() {
-  callbacks.partBegin++;
-};
-
-parser.onPartData = function() {
-  callbacks.partData++;
-};
-
-parser.onPartEnd = function() {
-  callbacks.partEnd++;
-};
-
-parser.onEnd = function() {
-  callbacks.end++;
-};
-
-var start = +new Date(),
-    nparsed = parser.write(buffer),
-    duration = +new Date - start,
-    mbPerSec = (mb / (duration / 1000)).toFixed(2);
-
-console.log(mbPerSec+' mb/sec');
-
-assert.equal(nparsed, buffer.length);
-
-function createMultipartBuffer(boundary, size) {
-  var head =
-        '--'+boundary+'\r\n'
-      + 'content-disposition: form-data; name="field1"\r\n'
-      + '\r\n'
-    , tail = '\r\n--'+boundary+'--\r\n'
-    , buffer = new Buffer(size);
-
-  buffer.write(head, 'ascii', 0);
-  buffer.write(tail, 'ascii', buffer.length - tail.length);
-  return buffer;
-}
-
-process.on('exit', function() {
-  for (var k in callbacks) {
-    assert.equal(0, callbacks[k], k+' count off by '+callbacks[k]);
-  }
-});



[66/98] [abbrv] incubator-apex-malhar git commit: SPOI-1885: Adding getters to the variables of KafkaMessage nested class

Posted by da...@apache.org.
SPOI-1885: Adding getters to the variables of KafkaMessage nested class


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/cd3d7a70
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/cd3d7a70
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/cd3d7a70

Branch: refs/heads/master
Commit: cd3d7a70c45e040191ae69de6692ebb4ef97b9e6
Parents: 5c7dae1
Author: Chaitanya <ch...@datatorrent.com>
Authored: Thu Oct 29 13:58:29 2015 +0530
Committer: Chaitanya <ch...@datatorrent.com>
Committed: Thu Oct 29 13:58:29 2015 +0530

----------------------------------------------------------------------
 .../contrib/kafka/KafkaConsumer.java            | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/cd3d7a70/contrib/src/main/java/com/datatorrent/contrib/kafka/KafkaConsumer.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/kafka/KafkaConsumer.java b/contrib/src/main/java/com/datatorrent/contrib/kafka/KafkaConsumer.java
index d6e06c4..cf5179c 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/kafka/KafkaConsumer.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/kafka/KafkaConsumer.java
@@ -32,8 +32,6 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
-import kafka.message.Message;
-
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Pattern;
 import javax.validation.constraints.Pattern.Flag;
@@ -41,13 +39,16 @@ import javax.validation.constraints.Pattern.Flag;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 
-import com.datatorrent.api.Context;
 import com.esotericsoftware.kryo.serializers.FieldSerializer.Bind;
 import com.esotericsoftware.kryo.serializers.JavaSerializer;
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.Maps;
 import com.google.common.collect.SetMultimap;
 
+import com.datatorrent.api.Context;
+
+import kafka.message.Message;
+
 /**
  * Base Kafka Consumer class used by kafka input operator
  *
@@ -342,7 +343,20 @@ public abstract class KafkaConsumer implements Closeable
       this.msg = msg;
       this.offSet = offset;
     }
+    public KafkaPartition getKafkaPart()
+    {
+      return kafkaPart;
+    }
 
+    public Message getMsg()
+    {
+      return msg;
+    }
+
+    public long getOffSet()
+    {
+      return offSet;
+    }
   }
 
   public static class KafkaMeterStatsUtil {


[24/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/index.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/index.js
deleted file mode 100644
index c9bc945..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/index.js
+++ /dev/null
@@ -1,76 +0,0 @@
-var wordwrap = module.exports = function (start, stop, params) {
-    if (typeof start === 'object') {
-        params = start;
-        start = params.start;
-        stop = params.stop;
-    }
-    
-    if (typeof stop === 'object') {
-        params = stop;
-        start = start || params.start;
-        stop = undefined;
-    }
-    
-    if (!stop) {
-        stop = start;
-        start = 0;
-    }
-    
-    if (!params) params = {};
-    var mode = params.mode || 'soft';
-    var re = mode === 'hard' ? /\b/ : /(\S+\s+)/;
-    
-    return function (text) {
-        var chunks = text.toString()
-            .split(re)
-            .reduce(function (acc, x) {
-                if (mode === 'hard') {
-                    for (var i = 0; i < x.length; i += stop - start) {
-                        acc.push(x.slice(i, i + stop - start));
-                    }
-                }
-                else acc.push(x)
-                return acc;
-            }, [])
-        ;
-        
-        return chunks.reduce(function (lines, rawChunk) {
-            if (rawChunk === '') return lines;
-            
-            var chunk = rawChunk.replace(/\t/g, '    ');
-            
-            var i = lines.length - 1;
-            if (lines[i].length + chunk.length > stop) {
-                lines[i] = lines[i].replace(/\s+$/, '');
-                
-                chunk.split(/\n/).forEach(function (c) {
-                    lines.push(
-                        new Array(start + 1).join(' ')
-                        + c.replace(/^\s+/, '')
-                    );
-                });
-            }
-            else if (chunk.match(/\n/)) {
-                var xs = chunk.split(/\n/);
-                lines[i] += xs.shift();
-                xs.forEach(function (c) {
-                    lines.push(
-                        new Array(start + 1).join(' ')
-                        + c.replace(/^\s+/, '')
-                    );
-                });
-            }
-            else {
-                lines[i] += chunk;
-            }
-            
-            return lines;
-        }, [ new Array(start + 1).join(' ') ]).join('\n');
-    };
-};
-
-wordwrap.soft = wordwrap;
-
-wordwrap.hard = function (start, stop) {
-    return wordwrap(start, stop, { mode : 'hard' });
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/package.json b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/package.json
deleted file mode 100644
index df8dc05..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-  "name": "wordwrap",
-  "description": "Wrap those words. Show them at what columns to start and stop.",
-  "version": "0.0.2",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/substack/node-wordwrap.git"
-  },
-  "main": "./index.js",
-  "keywords": [
-    "word",
-    "wrap",
-    "rule",
-    "format",
-    "column"
-  ],
-  "directories": {
-    "lib": ".",
-    "example": "example",
-    "test": "test"
-  },
-  "scripts": {
-    "test": "expresso"
-  },
-  "devDependencies": {
-    "expresso": "=0.7.x"
-  },
-  "engines": {
-    "node": ">=0.4.0"
-  },
-  "license": "MIT/X11",
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
-  },
-  "readme": "wordwrap\n========\n\nWrap your words.\n\nexample\n=======\n\nmade out of meat\n----------------\n\nmeat.js\n\n    var wrap = require('wordwrap')(15);\n    console.log(wrap('You and your whole family are made out of meat.'));\n\noutput:\n\n    You and your\n    whole family\n    are made out\n    of meat.\n\ncentered\n--------\n\ncenter.js\n\n    var wrap = require('wordwrap')(20, 60);\n    console.log(wrap(\n        'At long last the struggle and tumult was over.'\n        + ' The machines had finally cast off their oppressors'\n        + ' and were finally free to roam the cosmos.'\n        + '\\n'\n        + 'Free of purpose, free of obligation.'\n        + ' Just drifting through emptiness.'\n        + ' The sun was just another point of light.'\n    ));\n\noutput:\n\n                        At long last the struggle and tumult\n                        was over. The machines had finally cast\n                        off their oppressors and were finally\n           
              free to roam the cosmos.\n                        Free of purpose, free of obligation.\n                        Just drifting through emptiness. The\n                        sun was just another point of light.\n\nmethods\n=======\n\nvar wrap = require('wordwrap');\n\nwrap(stop), wrap(start, stop, params={mode:\"soft\"})\n---------------------------------------------------\n\nReturns a function that takes a string and returns a new string.\n\nPad out lines with spaces out to column `start` and then wrap until column\n`stop`. If a word is longer than `stop - start` characters it will overflow.\n\nIn \"soft\" mode, split chunks by `/(\\S+\\s+/` and don't break up chunks which are\nlonger than `stop - start`, in \"hard\" mode, split chunks with `/\\b/` and break\nup chunks longer than `stop - start`.\n\nwrap.hard(start, stop)\n----------------------\n\nLike `wrap()` but with `params.mode = \"hard\"`.\n",
-  "readmeFilename": "README.markdown",
-  "bugs": {
-    "url": "https://github.com/substack/node-wordwrap/issues"
-  },
-  "homepage": "https://github.com/substack/node-wordwrap",
-  "_id": "wordwrap@0.0.2",
-  "_from": "wordwrap@~0.0.2"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/test/break.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/test/break.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/test/break.js
deleted file mode 100644
index 749292e..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/test/break.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var assert = require('assert');
-var wordwrap = require('../');
-
-exports.hard = function () {
-    var s = 'Assert from {"type":"equal","ok":false,"found":1,"wanted":2,'
-        + '"stack":[],"id":"b7ddcd4c409de8799542a74d1a04689b",'
-        + '"browser":"chrome/6.0"}'
-    ;
-    var s_ = wordwrap.hard(80)(s);
-    
-    var lines = s_.split('\n');
-    assert.equal(lines.length, 2);
-    assert.ok(lines[0].length < 80);
-    assert.ok(lines[1].length < 80);
-    
-    assert.equal(s, s_.replace(/\n/g, ''));
-};
-
-exports.break = function () {
-    var s = new Array(55+1).join('a');
-    var s_ = wordwrap.hard(20)(s);
-    
-    var lines = s_.split('\n');
-    assert.equal(lines.length, 3);
-    assert.ok(lines[0].length === 20);
-    assert.ok(lines[1].length === 20);
-    assert.ok(lines[2].length === 15);
-    
-    assert.equal(s, s_.replace(/\n/g, ''));
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/test/idleness.txt
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/test/idleness.txt b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/test/idleness.txt
deleted file mode 100644
index aa3f490..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/test/idleness.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-In Praise of Idleness
-
-By Bertrand Russell
-
-[1932]
-
-Like most of my generation, I was brought up on the saying: 'Satan finds some mischief for idle hands to do.' Being a highly virtuous child, I believed all that I was told, and acquired a conscience which has kept me working hard down to the present moment. But although my conscience has controlled my actions, my opinions have undergone a revolution. I think that there is far too much work done in the world, that immense harm is caused by the belief that work is virtuous, and that what needs to be preached in modern industrial countries is quite different from what always has been preached. Everyone knows the story of the traveler in Naples who saw twelve beggars lying in the sun (it was before the days of Mussolini), and offered a lira to the laziest of them. Eleven of them jumped up to claim it, so he gave it to the twelfth. this traveler was on the right lines. But in countries which do not enjoy Mediterranean sunshine idleness is more difficult, and a great public propaganda wil
 l be required to inaugurate it. I hope that, after reading the following pages, the leaders of the YMCA will start a campaign to induce good young men to do nothing. If so, I shall not have lived in vain.
-
-Before advancing my own arguments for laziness, I must dispose of one which I cannot accept. Whenever a person who already has enough to live on proposes to engage in some everyday kind of job, such as school-teaching or typing, he or she is told that such conduct takes the bread out of other people's mouths, and is therefore wicked. If this argument were valid, it would only be necessary for us all to be idle in order that we should all have our mouths full of bread. What people who say such things forget is that what a man earns he usually spends, and in spending he gives employment. As long as a man spends his income, he puts just as much bread into people's mouths in spending as he takes out of other people's mouths in earning. The real villain, from this point of view, is the man who saves. If he merely puts his savings in a stocking, like the proverbial French peasant, it is obvious that they do not give employment. If he invests his savings, the matter is less obvious, and di
 fferent cases arise.
-
-One of the commonest things to do with savings is to lend them to some Government. In view of the fact that the bulk of the public expenditure of most civilized Governments consists in payment for past wars or preparation for future wars, the man who lends his money to a Government is in the same position as the bad men in Shakespeare who hire murderers. The net result of the man's economical habits is to increase the armed forces of the State to which he lends his savings. Obviously it would be better if he spent the money, even if he spent it in drink or gambling.
-
-But, I shall be told, the case is quite different when savings are invested in industrial enterprises. When such enterprises succeed, and produce something useful, this may be conceded. In these days, however, no one will deny that most enterprises fail. That means that a large amount of human labor, which might have been devoted to producing something that could be enjoyed, was expended on producing machines which, when produced, lay idle and did no good to anyone. The man who invests his savings in a concern that goes bankrupt is therefore injuring others as well as himself. If he spent his money, say, in giving parties for his friends, they (we may hope) would get pleasure, and so would all those upon whom he spent money, such as the butcher, the baker, and the bootlegger. But if he spends it (let us say) upon laying down rails for surface card in some place where surface cars turn out not to be wanted, he has diverted a mass of labor into channels where it gives pleasure to no o
 ne. Nevertheless, when he becomes poor through failure of his investment he will be regarded as a victim of undeserved misfortune, whereas the gay spendthrift, who has spent his money philanthropically, will be despised as a fool and a frivolous person.
-
-All this is only preliminary. I want to say, in all seriousness, that a great deal of harm is being done in the modern world by belief in the virtuousness of work, and that the road to happiness and prosperity lies in an organized diminution of work.
-
-First of all: what is work? Work is of two kinds: first, altering the position of matter at or near the earth's surface relatively to other such matter; second, telling other people to do so. The first kind is unpleasant and ill paid; the second is pleasant and highly paid. The second kind is capable of indefinite extension: there are not only those who give orders, but those who give advice as to what orders should be given. Usually two opposite kinds of advice are given simultaneously by two organized bodies of men; this is called politics. The skill required for this kind of work is not knowledge of the subjects as to which advice is given, but knowledge of the art of persuasive speaking and writing, i.e. of advertising.
-
-Throughout Europe, though not in America, there is a third class of men, more respected than either of the classes of workers. There are men who, through ownership of land, are able to make others pay for the privilege of being allowed to exist and to work. These landowners are idle, and I might therefore be expected to praise them. Unfortunately, their idleness is only rendered possible by the industry of others; indeed their desire for comfortable idleness is historically the source of the whole gospel of work. The last thing they have ever wished is that others should follow their example.
-
-From the beginning of civilization until the Industrial Revolution, a man could, as a rule, produce by hard work little more than was required for the subsistence of himself and his family, although his wife worked at least as hard as he did, and his children added their labor as soon as they were old enough to do so. The small surplus above bare necessaries was not left to those who produced it, but was appropriated by warriors and priests. In times of famine there was no surplus; the warriors and priests, however, still secured as much as at other times, with the result that many of the workers died of hunger. This system persisted in Russia until 1917 [1], and still persists in the East; in England, in spite of the Industrial Revolution, it remained in full force throughout the Napoleonic wars, and until a hundred years ago, when the new class of manufacturers acquired power. In America, the system came to an end with the Revolution, except in the South, where it persisted until 
 the Civil War. A system which lasted so long and ended so recently has naturally left a profound impress upon men's thoughts and opinions. Much that we take for granted about the desirability of work is derived from this system, and, being pre-industrial, is not adapted to the modern world. Modern technique has made it possible for leisure, within limits, to be not the prerogative of small privileged classes, but a right evenly distributed throughout the community. The morality of work is the morality of slaves, and the modern world has no need of slavery.
-
-It is obvious that, in primitive communities, peasants, left to themselves, would not have parted with the slender surplus upon which the warriors and priests subsisted, but would have either produced less or consumed more. At first, sheer force compelled them to produce and part with the surplus. Gradually, however, it was found possible to induce many of them to accept an ethic according to which it was their duty to work hard, although part of their work went to support others in idleness. By this means the amount of compulsion required was lessened, and the expenses of government were diminished. To this day, 99 per cent of British wage-earners would be genuinely shocked if it were proposed that the King should not have a larger income than a working man. The conception of duty, speaking historically, has been a means used by the holders of power to induce others to live for the interests of their masters rather than for their own. Of course the holders of power conceal this fac
 t from themselves by managing to believe that their interests are identical with the larger interests of humanity. Sometimes this is true; Athenian slave-owners, for instance, employed part of their leisure in making a permanent contribution to civilization which would have been impossible under a just economic system. Leisure is essential to civilization, and in former times leisure for the few was only rendered possible by the labors of the many. But their labors were valuable, not because work is good, but because leisure is good. And with modern technique it would be possible to distribute leisure justly without injury to civilization.
-
-Modern technique has made it possible to diminish enormously the amount of labor required to secure the necessaries of life for everyone. This was made obvious during the war. At that time all the men in the armed forces, and all the men and women engaged in the production of munitions, all the men and women engaged in spying, war propaganda, or Government offices connected with the war, were withdrawn from productive occupations. In spite of this, the general level of well-being among unskilled wage-earners on the side of the Allies was higher than before or since. The significance of this fact was concealed by finance: borrowing made it appear as if the future was nourishing the present. But that, of course, would have been impossible; a man cannot eat a loaf of bread that does not yet exist. The war showed conclusively that, by the scientific organization of production, it is possible to keep modern populations in fair comfort on a small part of the working capacity of the modern
  world. If, at the end of the war, the scientific organization, which had been created in order to liberate men for fighting and munition work, had been preserved, and the hours of the week had been cut down to four, all would have been well. Instead of that the old chaos was restored, those whose work was demanded were made to work long hours, and the rest were left to starve as unemployed. Why? Because work is a duty, and a man should not receive wages in proportion to what he has produced, but in proportion to his virtue as exemplified by his industry.
-
-This is the morality of the Slave State, applied in circumstances totally unlike those in which it arose. No wonder the result has been disastrous. Let us take an illustration. Suppose that, at a given moment, a certain number of people are engaged in the manufacture of pins. They make as many pins as the world needs, working (say) eight hours a day. Someone makes an invention by which the same number of men can make twice as many pins: pins are already so cheap that hardly any more will be bought at a lower price. In a sensible world, everybody concerned in the manufacturing of pins would take to working four hours instead of eight, and everything else would go on as before. But in the actual world this would be thought demoralizing. The men still work eight hours, there are too many pins, some employers go bankrupt, and half the men previously concerned in making pins are thrown out of work. There is, in the end, just as much leisure as on the other plan, but half the men are tota
 lly idle while half are still overworked. In this way, it is insured that the unavoidable leisure shall cause misery all round instead of being a universal source of happiness. Can anything more insane be imagined?
-
-The idea that the poor should have leisure has always been shocking to the rich. In England, in the early nineteenth century, fifteen hours was the ordinary day's work for a man; children sometimes did as much, and very commonly did twelve hours a day. When meddlesome busybodies suggested that perhaps these hours were rather long, they were told that work kept adults from drink and children from mischief. When I was a child, shortly after urban working men had acquired the vote, certain public holidays were established by law, to the great indignation of the upper classes. I remember hearing an old Duchess say: 'What do the poor want with holidays? They ought to work.' People nowadays are less frank, but the sentiment persists, and is the source of much of our economic confusion.
-
-Let us, for a moment, consider the ethics of work frankly, without superstition. Every human being, of necessity, consumes, in the course of his life, a certain amount of the produce of human labor. Assuming, as we may, that labor is on the whole disagreeable, it is unjust that a man should consume more than he produces. Of course he may provide services rather than commodities, like a medical man, for example; but he should provide something in return for his board and lodging. to this extent, the duty of work must be admitted, but to this extent only.
-
-I shall not dwell upon the fact that, in all modern societies outside the USSR, many people escape even this minimum amount of work, namely all those who inherit money and all those who marry money. I do not think the fact that these people are allowed to be idle is nearly so harmful as the fact that wage-earners are expected to overwork or starve.
-
-If the ordinary wage-earner worked four hours a day, there would be enough for everybody and no unemployment -- assuming a certain very moderate amount of sensible organization. This idea shocks the well-to-do, because they are convinced that the poor would not know how to use so much leisure. In America men often work long hours even when they are well off; such men, naturally, are indignant at the idea of leisure for wage-earners, except as the grim punishment of unemployment; in fact, they dislike leisure even for their sons. Oddly enough, while they wish their sons to work so hard as to have no time to be civilized, they do not mind their wives and daughters having no work at all. the snobbish admiration of uselessness, which, in an aristocratic society, extends to both sexes, is, under a plutocracy, confined to women; this, however, does not make it any more in agreement with common sense.
-
-The wise use of leisure, it must be conceded, is a product of civilization and education. A man who has worked long hours all his life will become bored if he becomes suddenly idle. But without a considerable amount of leisure a man is cut off from many of the best things. There is no longer any reason why the bulk of the population should suffer this deprivation; only a foolish asceticism, usually vicarious, makes us continue to insist on work in excessive quantities now that the need no longer exists.
-
-In the new creed which controls the government of Russia, while there is much that is very different from the traditional teaching of the West, there are some things that are quite unchanged. The attitude of the governing classes, and especially of those who conduct educational propaganda, on the subject of the dignity of labor, is almost exactly that which the governing classes of the world have always preached to what were called the 'honest poor'. Industry, sobriety, willingness to work long hours for distant advantages, even submissiveness to authority, all these reappear; moreover authority still represents the will of the Ruler of the Universe, Who, however, is now called by a new name, Dialectical Materialism.
-
-The victory of the proletariat in Russia has some points in common with the victory of the feminists in some other countries. For ages, men had conceded the superior saintliness of women, and had consoled women for their inferiority by maintaining that saintliness is more desirable than power. At last the feminists decided that they would have both, since the pioneers among them believed all that the men had told them about the desirability of virtue, but not what they had told them about the worthlessness of political power. A similar thing has happened in Russia as regards manual work. For ages, the rich and their sycophants have written in praise of 'honest toil', have praised the simple life, have professed a religion which teaches that the poor are much more likely to go to heaven than the rich, and in general have tried to make manual workers believe that there is some special nobility about altering the position of matter in space, just as men tried to make women believe that
  they derived some special nobility from their sexual enslavement. In Russia, all this teaching about the excellence of manual work has been taken seriously, with the result that the manual worker is more honored than anyone else. What are, in essence, revivalist appeals are made, but not for the old purposes: they are made to secure shock workers for special tasks. Manual work is the ideal which is held before the young, and is the basis of all ethical teaching.
-
-For the present, possibly, this is all to the good. A large country, full of natural resources, awaits development, and has has to be developed with very little use of credit. In these circumstances, hard work is necessary, and is likely to bring a great reward. But what will happen when the point has been reached where everybody could be comfortable without working long hours?
-
-In the West, we have various ways of dealing with this problem. We have no attempt at economic justice, so that a large proportion of the total produce goes to a small minority of the population, many of whom do no work at all. Owing to the absence of any central control over production, we produce hosts of things that are not wanted. We keep a large percentage of the working population idle, because we can dispense with their labor by making the others overwork. When all these methods prove inadequate, we have a war: we cause a number of people to manufacture high explosives, and a number of others to explode them, as if we were children who had just discovered fireworks. By a combination of all these devices we manage, though with difficulty, to keep alive the notion that a great deal of severe manual work must be the lot of the average man.
-
-In Russia, owing to more economic justice and central control over production, the problem will have to be differently solved. the rational solution would be, as soon as the necessaries and elementary comforts can be provided for all, to reduce the hours of labor gradually, allowing a popular vote to decide, at each stage, whether more leisure or more goods were to be preferred. But, having taught the supreme virtue of hard work, it is difficult to see how the authorities can aim at a paradise in which there will be much leisure and little work. It seems more likely that they will find continually fresh schemes, by which present leisure is to be sacrificed to future productivity. I read recently of an ingenious plan put forward by Russian engineers, for making the White Sea and the northern coasts of Siberia warm, by putting a dam across the Kara Sea. An admirable project, but liable to postpone proletarian comfort for a generation, while the nobility of toil is being displayed amid
  the ice-fields and snowstorms of the Arctic Ocean. This sort of thing, if it happens, will be the result of regarding the virtue of hard work as an end in itself, rather than as a means to a state of affairs in which it is no longer needed.
-
-The fact is that moving matter about, while a certain amount of it is necessary to our existence, is emphatically not one of the ends of human life. If it were, we should have to consider every navvy superior to Shakespeare. We have been misled in this matter by two causes. One is the necessity of keeping the poor contented, which has led the rich, for thousands of years, to preach the dignity of labor, while taking care themselves to remain undignified in this respect. The other is the new pleasure in mechanism, which makes us delight in the astonishingly clever changes that we can produce on the earth's surface. Neither of these motives makes any great appeal to the actual worker. If you ask him what he thinks the best part of his life, he is not likely to say: 'I enjoy manual work because it makes me feel that I am fulfilling man's noblest task, and because I like to think how much man can transform his planet. It is true that my body demands periods of rest, which I have to fill
  in as best I may, but I am never so happy as when the morning comes and I can return to the toil from which my contentment springs.' I have never heard working men say this sort of thing. They consider work, as it should be considered, a necessary means to a livelihood, and it is from their leisure that they derive whatever happiness they may enjoy.
-
-It will be said that, while a little leisure is pleasant, men would not know how to fill their days if they had only four hours of work out of the twenty-four. In so far as this is true in the modern world, it is a condemnation of our civilization; it would not have been true at any earlier period. There was formerly a capacity for light-heartedness and play which has been to some extent inhibited by the cult of efficiency. The modern man thinks that everything ought to be done for the sake of something else, and never for its own sake. Serious-minded persons, for example, are continually condemning the habit of going to the cinema, and telling us that it leads the young into crime. But all the work that goes to producing a cinema is respectable, because it is work, and because it brings a money profit. The notion that the desirable activities are those that bring a profit has made everything topsy-turvy. The butcher who provides you with meat and the baker who provides you with bre
 ad are praiseworthy, because they are making money; but when you enjoy the food they have provided, you are merely frivolous, unless you eat only to get strength for your work. Broadly speaking, it is held that getting money is good and spending money is bad. Seeing that they are two sides of one transaction, this is absurd; one might as well maintain that keys are good, but keyholes are bad. Whatever merit there may be in the production of goods must be entirely derivative from the advantage to be obtained by consuming them. The individual, in our society, works for profit; but the social purpose of his work lies in the consumption of what he produces. It is this divorce between the individual and the social purpose of production that makes it so difficult for men to think clearly in a world in which profit-making is the incentive to industry. We think too much of production, and too little of consumption. One result is that we attach too little importance to enjoyment and simple h
 appiness, and that we do not judge production by the pleasure that it gives to the consumer.
-
-When I suggest that working hours should be reduced to four, I am not meaning to imply that all the remaining time should necessarily be spent in pure frivolity. I mean that four hours' work a day should entitle a man to the necessities and elementary comforts of life, and that the rest of his time should be his to use as he might see fit. It is an essential part of any such social system that education should be carried further than it usually is at present, and should aim, in part, at providing tastes which would enable a man to use leisure intelligently. I am not thinking mainly of the sort of things that would be considered 'highbrow'. Peasant dances have died out except in remote rural areas, but the impulses which caused them to be cultivated must still exist in human nature. The pleasures of urban populations have become mainly passive: seeing cinemas, watching football matches, listening to the radio, and so on. This results from the fact that their active energies are fully
  taken up with work; if they had more leisure, they would again enjoy pleasures in which they took an active part.
-
-In the past, there was a small leisure class and a larger working class. The leisure class enjoyed advantages for which there was no basis in social justice; this necessarily made it oppressive, limited its sympathies, and caused it to invent theories by which to justify its privileges. These facts greatly diminished its excellence, but in spite of this drawback it contributed nearly the whole of what we call civilization. It cultivated the arts and discovered the sciences; it wrote the books, invented the philosophies, and refined social relations. Even the liberation of the oppressed has usually been inaugurated from above. Without the leisure class, mankind would never have emerged from barbarism.
-
-The method of a leisure class without duties was, however, extraordinarily wasteful. None of the members of the class had to be taught to be industrious, and the class as a whole was not exceptionally intelligent. The class might produce one Darwin, but against him had to be set tens of thousands of country gentlemen who never thought of anything more intelligent than fox-hunting and punishing poachers. At present, the universities are supposed to provide, in a more systematic way, what the leisure class provided accidentally and as a by-product. This is a great improvement, but it has certain drawbacks. University life is so different from life in the world at large that men who live in academic milieu tend to be unaware of the preoccupations and problems of ordinary men and women; moreover their ways of expressing themselves are usually such as to rob their opinions of the influence that they ought to have upon the general public. Another disadvantage is that in universities studi
 es are organized, and the man who thinks of some original line of research is likely to be discouraged. Academic institutions, therefore, useful as they are, are not adequate guardians of the interests of civilization in a world where everyone outside their walls is too busy for unutilitarian pursuits.
-
-In a world where no one is compelled to work more than four hours a day, every person possessed of scientific curiosity will be able to indulge it, and every painter will be able to paint without starving, however excellent his pictures may be. Young writers will not be obliged to draw attention to themselves by sensational pot-boilers, with a view to acquiring the economic independence needed for monumental works, for which, when the time at last comes, they will have lost the taste and capacity. Men who, in their professional work, have become interested in some phase of economics or government, will be able to develop their ideas without the academic detachment that makes the work of university economists often seem lacking in reality. Medical men will have the time to learn about the progress of medicine, teachers will not be exasperatedly struggling to teach by routine methods things which they learnt in their youth, which may, in the interval, have been proved to be untrue.
-
-Above all, there will be happiness and joy of life, instead of frayed nerves, weariness, and dyspepsia. The work exacted will be enough to make leisure delightful, but not enough to produce exhaustion. Since men will not be tired in their spare time, they will not demand only such amusements as are passive and vapid. At least one per cent will probably devote the time not spent in professional work to pursuits of some public importance, and, since they will not depend upon these pursuits for their livelihood, their originality will be unhampered, and there will be no need to conform to the standards set by elderly pundits. But it is not only in these exceptional cases that the advantages of leisure will appear. Ordinary men and women, having the opportunity of a happy life, will become more kindly and less persecuting and less inclined to view others with suspicion. The taste for war will die out, partly for this reason, and partly because it will involve long and severe work for al
 l. Good nature is, of all moral qualities, the one that the world needs most, and good nature is the result of ease and security, not of a life of arduous struggle. Modern methods of production have given us the possibility of ease and security for all; we have chosen, instead, to have overwork for some and starvation for others. Hitherto we have continued to be as energetic as we were before there were machines; in this we have been foolish, but there is no reason to go on being foolish forever.
-
-[1] Since then, members of the Communist Party have succeeded to this privilege of the warriors and priests.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/test/wrap.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/test/wrap.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/test/wrap.js
deleted file mode 100644
index 0cfb76d..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/test/wrap.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var assert = require('assert');
-var wordwrap = require('wordwrap');
-
-var fs = require('fs');
-var idleness = fs.readFileSync(__dirname + '/idleness.txt', 'utf8');
-
-exports.stop80 = function () {
-    var lines = wordwrap(80)(idleness).split(/\n/);
-    var words = idleness.split(/\s+/);
-    
-    lines.forEach(function (line) {
-        assert.ok(line.length <= 80, 'line > 80 columns');
-        var chunks = line.match(/\S/) ? line.split(/\s+/) : [];
-        assert.deepEqual(chunks, words.splice(0, chunks.length));
-    });
-};
-
-exports.start20stop60 = function () {
-    var lines = wordwrap(20, 100)(idleness).split(/\n/);
-    var words = idleness.split(/\s+/);
-    
-    lines.forEach(function (line) {
-        assert.ok(line.length <= 100, 'line > 100 columns');
-        var chunks = line
-            .split(/\s+/)
-            .filter(function (x) { return x.match(/\S/) })
-        ;
-        assert.deepEqual(chunks, words.splice(0, chunks.length));
-        assert.deepEqual(line.slice(0, 20), new Array(20 + 1).join(' '));
-    });
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/package.json b/web/demos/package/node_modules/http-proxy/node_modules/optimist/package.json
deleted file mode 100644
index 8f8c023..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-  "name": "optimist",
-  "version": "0.6.1",
-  "description": "Light-weight option parsing with an argv hash. No optstrings attached.",
-  "main": "./index.js",
-  "dependencies": {
-    "wordwrap": "~0.0.2",
-    "minimist": "~0.0.1"
-  },
-  "devDependencies": {
-    "hashish": "~0.0.4",
-    "tap": "~0.4.0"
-  },
-  "scripts": {
-    "test": "tap ./test/*.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/substack/node-optimist.git"
-  },
-  "keywords": [
-    "argument",
-    "args",
-    "option",
-    "parser",
-    "parsing",
-    "cli",
-    "command"
-  ],
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
-  },
-  "license": "MIT/X11",
-  "engine": {
-    "node": ">=0.4"
-  },
-  "readme": "# DEPRECATION NOTICE\n\nI don't want to maintain this module anymore since I just use\n[minimist](https://npmjs.org/package/minimist), the argument parsing engine,\ndirectly instead nowadays.\n\nSee [yargs](https://github.com/chevex/yargs) for the modern, pirate-themed\nsuccessor to optimist.\n\n[![yarrrrrrrgs!](http://i.imgur.com/4WFGVJ9.png)](https://github.com/chevex/yargs)\n\nYou should also consider [nomnom](https://github.com/harthur/nomnom).\n\noptimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attach
 ed.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n    console.log('Buy more riffiwobbles');\n}\nelse {\n    console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n    $ ./xup.js --rif=55 --xup=9.52\n    Buy more riffiwobbles\n    \n    $ ./xup.js --rif 12 --xup 8.1\n    Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n    $ ./short.js -x 10 -y 21\n    (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = re
 quire('optimist').argv;\n\nif (argv.s) {\n    util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n    (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n    $ ./bool.js -s\n    The cat says: meow\n    \n    $ ./bool.js -sp\n    The cat says: meow.\n\n    $ ./bool.js -sp --fr\n    Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n    $ ./nonopt.js -x 6.82 -y 3.35 moo\n    (6.82,3.35)\n    [ 'moo' ]\n    \n    $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n    (0.54,1.12)\n    [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Usage:
  $0 -x [num] -y [num]')\n    .demand(['x','y'])\n    .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n    $ ./divide.js -x 55 -y 11\n    5\n    \n    $ node ./divide.js -x 4.91 -z 2.51\n    Usage: node ./divide.js -x [num] -y [num]\n\n    Options:\n      -x  [required]\n      -y  [required]\n\n    Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default('x', 10)\n    .default('y', 10)\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_singles.js -x 5\n    15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default({ x : 10, y : 10 })\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_hash.js -y 7\n    17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javasc
 ript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean('v')\n    .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n    $ ./boolean_single.js -v foo bar baz\n    true\n    [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean(['x','y','z'])\n    .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n    $ ./boolean_double.js -x -z one two three\n    [ true, false, true ]\n    [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Count the lines in a file.\\nUsage: $0')\n    .demand('f')\n    .alias('f', 'file')\n    .describe('f', 'Load a file')\n    .argv\n;\n\nvar fs = require('fs');\nvar s = fs.c
 reateReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n    lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n    console.log(lines);\n});\n````\n\n***\n\n    $ node line_count.js\n    Count the lines in a file.\n    Usage: node ./line_count.js\n\n    Options:\n      -f, --file  Load a file  [required]\n\n    Missing required arguments: f\n\n    $ node line_count.js --file line_count.js \n    20\n    \n    $ node line_count.js -f line_count.js \n    20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, 
 alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `o
 pt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n    .options('f', {\n        alias : 'file',\n        default : '/etc/passwd',\n    })\n    .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n    .alias('f', 'file')\n    .default('f', '/etc/passwd')\n    .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.
 argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv
 .$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n    $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n    { _: [ '-c', '3', '-d', '4' ],\n      '$0': 'node ./examples/reflect.js',\n      a: 1,\n      b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n    $ node examples/reflect.js -a --no-b\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n      a: true,\n      b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple ti
 mes it will get turned into an array containing\nall the values in order.\n\n    $ node examples/reflect.js -x 5 -x 8 -x 0\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n        x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n     $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n     { _: [],\n       '$0': 'node ./examples/reflect.js',\n         foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n    $ node reflect.js -n123 -m456\n    { '3': true,\n      '6': true,\n      _: [],\n      '$0': 'node ./reflect.js',\n      n: 123,\n      m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n    npm install optimist\n \nor clone this project on github:\n\n    git clone http://github.com/substack/node-optimist.git\n\nTo 
 run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n    \n    expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n",
-  "readmeFilename": "readme.markdown",
-  "bugs": {
-    "url": "https://github.com/substack/node-optimist/issues"
-  },
-  "homepage": "https://github.com/substack/node-optimist",
-  "_id": "optimist@0.6.1",
-  "_from": "optimist@0.6.x"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/readme.markdown
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/readme.markdown b/web/demos/package/node_modules/http-proxy/node_modules/optimist/readme.markdown
deleted file mode 100644
index b74b437..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/readme.markdown
+++ /dev/null
@@ -1,513 +0,0 @@
-# DEPRECATION NOTICE
-
-I don't want to maintain this module anymore since I just use
-[minimist](https://npmjs.org/package/minimist), the argument parsing engine,
-directly instead nowadays.
-
-See [yargs](https://github.com/chevex/yargs) for the modern, pirate-themed
-successor to optimist.
-
-[![yarrrrrrrgs!](http://i.imgur.com/4WFGVJ9.png)](https://github.com/chevex/yargs)
-
-You should also consider [nomnom](https://github.com/harthur/nomnom).
-
-optimist
-========
-
-Optimist is a node.js library for option parsing for people who hate option
-parsing. More specifically, this module is for people who like all the --bells
-and -whistlz of program usage but think optstrings are a waste of time.
-
-With optimist, option parsing doesn't have to suck (as much).
-
-[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)
-
-examples
-========
-
-With Optimist, the options are just a hash! No optstrings attached.
--------------------------------------------------------------------
-
-xup.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('optimist').argv;
-
-if (argv.rif - 5 * argv.xup > 7.138) {
-    console.log('Buy more riffiwobbles');
-}
-else {
-    console.log('Sell the xupptumblers');
-}
-````
-
-***
-
-    $ ./xup.js --rif=55 --xup=9.52
-    Buy more riffiwobbles
-    
-    $ ./xup.js --rif 12 --xup 8.1
-    Sell the xupptumblers
-
-![This one's optimistic.](http://substack.net/images/optimistic.png)
-
-But wait! There's more! You can do short options:
--------------------------------------------------
- 
-short.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('optimist').argv;
-console.log('(%d,%d)', argv.x, argv.y);
-````
-
-***
-
-    $ ./short.js -x 10 -y 21
-    (10,21)
-
-And booleans, both long and short (and grouped):
-----------------------------------
-
-bool.js:
-
-````javascript
-#!/usr/bin/env node
-var util = require('util');
-var argv = require('optimist').argv;
-
-if (argv.s) {
-    util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');
-}
-console.log(
-    (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')
-);
-````
-
-***
-
-    $ ./bool.js -s
-    The cat says: meow
-    
-    $ ./bool.js -sp
-    The cat says: meow.
-
-    $ ./bool.js -sp --fr
-    Le chat dit: miaou.
-
-And non-hypenated options too! Just use `argv._`!
--------------------------------------------------
- 
-nonopt.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('optimist').argv;
-console.log('(%d,%d)', argv.x, argv.y);
-console.log(argv._);
-````
-
-***
-
-    $ ./nonopt.js -x 6.82 -y 3.35 moo
-    (6.82,3.35)
-    [ 'moo' ]
-    
-    $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz
-    (0.54,1.12)
-    [ 'foo', 'bar', 'baz' ]
-
-Plus, Optimist comes with .usage() and .demand()!
--------------------------------------------------
-
-divide.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('optimist')
-    .usage('Usage: $0 -x [num] -y [num]')
-    .demand(['x','y'])
-    .argv;
-
-console.log(argv.x / argv.y);
-````
-
-***
- 
-    $ ./divide.js -x 55 -y 11
-    5
-    
-    $ node ./divide.js -x 4.91 -z 2.51
-    Usage: node ./divide.js -x [num] -y [num]
-
-    Options:
-      -x  [required]
-      -y  [required]
-
-    Missing required arguments: y
-
-EVEN MORE HOLY COW
-------------------
-
-default_singles.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('optimist')
-    .default('x', 10)
-    .default('y', 10)
-    .argv
-;
-console.log(argv.x + argv.y);
-````
-
-***
-
-    $ ./default_singles.js -x 5
-    15
-
-default_hash.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('optimist')
-    .default({ x : 10, y : 10 })
-    .argv
-;
-console.log(argv.x + argv.y);
-````
-
-***
-
-    $ ./default_hash.js -y 7
-    17
-
-And if you really want to get all descriptive about it...
----------------------------------------------------------
-
-boolean_single.js
-
-````javascript
-#!/usr/bin/env node
-var argv = require('optimist')
-    .boolean('v')
-    .argv
-;
-console.dir(argv);
-````
-
-***
-
-    $ ./boolean_single.js -v foo bar baz
-    true
-    [ 'bar', 'baz', 'foo' ]
-
-boolean_double.js
-
-````javascript
-#!/usr/bin/env node
-var argv = require('optimist')
-    .boolean(['x','y','z'])
-    .argv
-;
-console.dir([ argv.x, argv.y, argv.z ]);
-console.dir(argv._);
-````
-
-***
-
-    $ ./boolean_double.js -x -z one two three
-    [ true, false, true ]
-    [ 'one', 'two', 'three' ]
-
-Optimist is here to help...
----------------------------
-
-You can describe parameters for help messages and set aliases. Optimist figures
-out how to format a handy help string automatically.
-
-line_count.js
-
-````javascript
-#!/usr/bin/env node
-var argv = require('optimist')
-    .usage('Count the lines in a file.\nUsage: $0')
-    .demand('f')
-    .alias('f', 'file')
-    .describe('f', 'Load a file')
-    .argv
-;
-
-var fs = require('fs');
-var s = fs.createReadStream(argv.file);
-
-var lines = 0;
-s.on('data', function (buf) {
-    lines += buf.toString().match(/\n/g).length;
-});
-
-s.on('end', function () {
-    console.log(lines);
-});
-````
-
-***
-
-    $ node line_count.js
-    Count the lines in a file.
-    Usage: node ./line_count.js
-
-    Options:
-      -f, --file  Load a file  [required]
-
-    Missing required arguments: f
-
-    $ node line_count.js --file line_count.js 
-    20
-    
-    $ node line_count.js -f line_count.js 
-    20
-
-methods
-=======
-
-By itself,
-
-````javascript
-require('optimist').argv
-`````
-
-will use `process.argv` array to construct the `argv` object.
-
-You can pass in the `process.argv` yourself:
-
-````javascript
-require('optimist')([ '-x', '1', '-y', '2' ]).argv
-````
-
-or use .parse() to do the same thing:
-
-````javascript
-require('optimist').parse([ '-x', '1', '-y', '2' ])
-````
-
-The rest of these methods below come in just before the terminating `.argv`.
-
-.alias(key, alias)
-------------------
-
-Set key names as equivalent such that updates to a key will propagate to aliases
-and vice-versa.
-
-Optionally `.alias()` can take an object that maps keys to aliases.
-
-.default(key, value)
---------------------
-
-Set `argv[key]` to `value` if no option was specified on `process.argv`.
-
-Optionally `.default()` can take an object that maps keys to default values.
-
-.demand(key)
-------------
-
-If `key` is a string, show the usage information and exit if `key` wasn't
-specified in `process.argv`.
-
-If `key` is a number, demand at least as many non-option arguments, which show
-up in `argv._`.
-
-If `key` is an Array, demand each element.
-
-.describe(key, desc)
---------------------
-
-Describe a `key` for the generated usage information.
-
-Optionally `.describe()` can take an object that maps keys to descriptions.
-
-.options(key, opt)
-------------------
-
-Instead of chaining together `.alias().demand().default()`, you can specify
-keys in `opt` for each of the chainable methods.
-
-For example:
-
-````javascript
-var argv = require('optimist')
-    .options('f', {
-        alias : 'file',
-        default : '/etc/passwd',
-    })
-    .argv
-;
-````
-
-is the same as
-
-````javascript
-var argv = require('optimist')
-    .alias('f', 'file')
-    .default('f', '/etc/passwd')
-    .argv
-;
-````
-
-Optionally `.options()` can take an object that maps keys to `opt` parameters.
-
-.usage(message)
----------------
-
-Set a usage message to show which commands to use. Inside `message`, the string
-`$0` will get interpolated to the current script name or node command for the
-present script similar to how `$0` works in bash or perl.
-
-.check(fn)
-----------
-
-Check that certain conditions are met in the provided arguments.
-
-If `fn` throws or returns `false`, show the thrown error, usage information, and
-exit.
-
-.boolean(key)
--------------
-
-Interpret `key` as a boolean. If a non-flag option follows `key` in
-`process.argv`, that string won't get set as the value of `key`.
-
-If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be
-`false`.
-
-If `key` is an Array, interpret all the elements as booleans.
-
-.string(key)
-------------
-
-Tell the parser logic not to interpret `key` as a number or boolean.
-This can be useful if you need to preserve leading zeros in an input.
-
-If `key` is an Array, interpret all the elements as strings.
-
-.wrap(columns)
---------------
-
-Format usage output to wrap at `columns` many columns.
-
-.help()
--------
-
-Return the generated usage string.
-
-.showHelp(fn=console.error)
----------------------------
-
-Print the usage data using `fn` for printing.
-
-.parse(args)
-------------
-
-Parse `args` instead of `process.argv`. Returns the `argv` object.
-
-.argv
------
-
-Get the arguments as a plain old object.
-
-Arguments without a corresponding flag show up in the `argv._` array.
-
-The script name or node command is available at `argv.$0` similarly to how `$0`
-works in bash or perl.
-
-parsing tricks
-==============
-
-stop parsing
-------------
-
-Use `--` to stop parsing flags and stuff the remainder into `argv._`.
-
-    $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4
-    { _: [ '-c', '3', '-d', '4' ],
-      '$0': 'node ./examples/reflect.js',
-      a: 1,
-      b: 2 }
-
-negate fields
--------------
-
-If you want to explicity set a field to false instead of just leaving it
-undefined or to override a default you can do `--no-key`.
-
-    $ node examples/reflect.js -a --no-b
-    { _: [],
-      '$0': 'node ./examples/reflect.js',
-      a: true,
-      b: false }
-
-numbers
--------
-
-Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to
-one. This way you can just `net.createConnection(argv.port)` and you can add
-numbers out of `argv` with `+` without having that mean concatenation,
-which is super frustrating.
-
-duplicates
-----------
-
-If you specify a flag multiple times it will get turned into an array containing
-all the values in order.
-
-    $ node examples/reflect.js -x 5 -x 8 -x 0
-    { _: [],
-      '$0': 'node ./examples/reflect.js',
-        x: [ 5, 8, 0 ] }
-
-dot notation
-------------
-
-When you use dots (`.`s) in argument names, an implicit object path is assumed.
-This lets you organize arguments into nested objects.
-
-     $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5
-     { _: [],
-       '$0': 'node ./examples/reflect.js',
-         foo: { bar: { baz: 33 }, quux: 5 } }
-
-short numbers
--------------
-
-Short numeric `head -n5` style argument work too:
-
-    $ node reflect.js -n123 -m456
-    { '3': true,
-      '6': true,
-      _: [],
-      '$0': 'node ./reflect.js',
-      n: 123,
-      m: 456 }
-
-installation
-============
-
-With [npm](http://github.com/isaacs/npm), just do:
-    npm install optimist
- 
-or clone this project on github:
-
-    git clone http://github.com/substack/node-optimist.git
-
-To run the tests with [expresso](http://github.com/visionmedia/expresso),
-just do:
-    
-    expresso
-
-inspired By
-===========
-
-This module is loosely inspired by Perl's
-[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/_.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/_.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/_.js
deleted file mode 100644
index d9c58b3..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/_.js
+++ /dev/null
@@ -1,71 +0,0 @@
-var spawn = require('child_process').spawn;
-var test = require('tap').test;
-
-test('dotSlashEmpty', testCmd('./bin.js', []));
-
-test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ]));
-
-test('nodeEmpty', testCmd('node bin.js', []));
-
-test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ]));
-
-test('whichNodeEmpty', function (t) {
-    var which = spawn('which', ['node']);
-    
-    which.stdout.on('data', function (buf) {
-        t.test(
-            testCmd(buf.toString().trim() + ' bin.js', [])
-        );
-        t.end();
-    });
-    
-    which.stderr.on('data', function (err) {
-        assert.error(err);
-        t.end();
-    });
-});
-
-test('whichNodeArgs', function (t) {
-    var which = spawn('which', ['node']);
-
-    which.stdout.on('data', function (buf) {
-        t.test(
-            testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ])
-        );
-        t.end();
-    });
-    
-    which.stderr.on('data', function (err) {
-        t.error(err);
-        t.end();
-    });
-});
-
-function testCmd (cmd, args) {
-
-    return function (t) {
-        var to = setTimeout(function () {
-            assert.fail('Never got stdout data.')
-        }, 5000);
-        
-        var oldDir = process.cwd();
-        process.chdir(__dirname + '/_');
-        
-        var cmds = cmd.split(' ');
-        
-        var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String)));
-        process.chdir(oldDir);
-        
-        bin.stderr.on('data', function (err) {
-            t.error(err);
-            t.end();
-        });
-        
-        bin.stdout.on('data', function (buf) {
-            clearTimeout(to);
-            var _ = JSON.parse(buf.toString());
-            t.same(_.map(String), args.map(String));
-            t.end();
-        });
-    };
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/_/argv.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/_/argv.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/_/argv.js
deleted file mode 100644
index 3d09606..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/_/argv.js
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env node
-console.log(JSON.stringify(process.argv));

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/_/bin.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/_/bin.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/_/bin.js
deleted file mode 100755
index 4a18d85..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/_/bin.js
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env node
-var argv = require('../../index').argv
-console.log(JSON.stringify(argv._));

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/dash.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/dash.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/dash.js
deleted file mode 100644
index af8ed6f..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/dash.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var optimist = require('../index');
-var test = require('tap').test;
-
-test('-', function (t) {
-    t.plan(5);
-    t.deepEqual(
-        fix(optimist.parse([ '-n', '-' ])),
-        { n: '-', _: [] }
-    );
-    t.deepEqual(
-        fix(optimist.parse([ '-' ])),
-        { _: [ '-' ] }
-    );
-    t.deepEqual(
-        fix(optimist.parse([ '-f-' ])),
-        { f: '-', _: [] }
-    );
-    t.deepEqual(
-        fix(optimist([ '-b', '-' ]).boolean('b').argv),
-        { b: true, _: [ '-' ] }
-    );
-    t.deepEqual(
-        fix(optimist([ '-s', '-' ]).string('s').argv),
-        { s: '-', _: [] }
-    );
-});
-
-function fix (obj) {
-    delete obj.$0;
-    return obj;
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/parse.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/parse.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/parse.js
deleted file mode 100644
index d320f43..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/parse.js
+++ /dev/null
@@ -1,446 +0,0 @@
-var optimist = require('../index');
-var path = require('path');
-var test = require('tap').test;
-
-var $0 = 'node ./' + path.relative(process.cwd(), __filename);
-
-test('short boolean', function (t) {
-    var parse = optimist.parse([ '-b' ]);
-    t.same(parse, { b : true, _ : [], $0 : $0 });
-    t.same(typeof parse.b, 'boolean');
-    t.end();
-});
-
-test('long boolean', function (t) {
-    t.same(
-        optimist.parse([ '--bool' ]),
-        { bool : true, _ : [], $0 : $0 }
-    );
-    t.end();
-});
-    
-test('bare', function (t) {
-    t.same(
-        optimist.parse([ 'foo', 'bar', 'baz' ]),
-        { _ : [ 'foo', 'bar', 'baz' ], $0 : $0 }
-    );
-    t.end();
-});
-
-test('short group', function (t) {
-    t.same(
-        optimist.parse([ '-cats' ]),
-        { c : true, a : true, t : true, s : true, _ : [], $0 : $0 }
-    );
-    t.end();
-});
-
-test('short group next', function (t) {
-    t.same(
-        optimist.parse([ '-cats', 'meow' ]),
-        { c : true, a : true, t : true, s : 'meow', _ : [], $0 : $0 }
-    );
-    t.end();
-});
- 
-test('short capture', function (t) {
-    t.same(
-        optimist.parse([ '-h', 'localhost' ]),
-        { h : 'localhost', _ : [], $0 : $0 }
-    );
-    t.end();
-});
-
-test('short captures', function (t) {
-    t.same(
-        optimist.parse([ '-h', 'localhost', '-p', '555' ]),
-        { h : 'localhost', p : 555, _ : [], $0 : $0 }
-    );
-    t.end();
-});
-
-test('long capture sp', function (t) {
-    t.same(
-        optimist.parse([ '--pow', 'xixxle' ]),
-        { pow : 'xixxle', _ : [], $0 : $0 }
-    );
-    t.end();
-});
-
-test('long capture eq', function (t) {
-    t.same(
-        optimist.parse([ '--pow=xixxle' ]),
-        { pow : 'xixxle', _ : [], $0 : $0 }
-    );
-    t.end()
-});
-
-test('long captures sp', function (t) {
-    t.same(
-        optimist.parse([ '--host', 'localhost', '--port', '555' ]),
-        { host : 'localhost', port : 555, _ : [], $0 : $0 }
-    );
-    t.end();
-});
-
-test('long captures eq', function (t) {
-    t.same(
-        optimist.parse([ '--host=localhost', '--port=555' ]),
-        { host : 'localhost', port : 555, _ : [], $0 : $0 }
-    );
-    t.end();
-});
-
-test('mixed short bool and capture', function (t) {
-    t.same(
-        optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
-        {
-            f : true, p : 555, h : 'localhost',
-            _ : [ 'script.js' ], $0 : $0,
-        }
-    );
-    t.end();
-});
- 
-test('short and long', function (t) {
-    t.same(
-        optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
-        {
-            f : true, p : 555, h : 'localhost',
-            _ : [ 'script.js' ], $0 : $0,
-        }
-    );
-    t.end();
-});
-
-test('no', function (t) {
-    t.same(
-        optimist.parse([ '--no-moo' ]),
-        { moo : false, _ : [], $0 : $0 }
-    );
-    t.end();
-});
- 
-test('multi', function (t) {
-    t.same(
-        optimist.parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
-        { v : ['a','b','c'], _ : [], $0 : $0 }
-    );
-    t.end();
-});
- 
-test('comprehensive', function (t) {
-    t.same(
-        optimist.parse([
-            '--name=meowmers', 'bare', '-cats', 'woo',
-            '-h', 'awesome', '--multi=quux',
-            '--key', 'value',
-            '-b', '--bool', '--no-meep', '--multi=baz',
-            '--', '--not-a-flag', 'eek'
-        ]),
-        {
-            c : true,
-            a : true,
-            t : true,
-            s : 'woo',
-            h : 'awesome',
-            b : true,
-            bool : true,
-            key : 'value',
-            multi : [ 'quux', 'baz' ],
-            meep : false,
-            name : 'meowmers',
-            _ : [ 'bare', '--not-a-flag', 'eek' ],
-            $0 : $0
-        }
-    );
-    t.end();
-});
-
-test('nums', function (t) {
-    var argv = optimist.parse([
-        '-x', '1234',
-        '-y', '5.67',
-        '-z', '1e7',
-        '-w', '10f',
-        '--hex', '0xdeadbeef',
-        '789',
-    ]);
-    t.same(argv, {
-        x : 1234,
-        y : 5.67,
-        z : 1e7,
-        w : '10f',
-        hex : 0xdeadbeef,
-        _ : [ 789 ],
-        $0 : $0
-    });
-    t.same(typeof argv.x, 'number');
-    t.same(typeof argv.y, 'number');
-    t.same(typeof argv.z, 'number');
-    t.same(typeof argv.w, 'string');
-    t.same(typeof argv.hex, 'number');
-    t.same(typeof argv._[0], 'number');
-    t.end();
-});
-
-test('flag boolean', function (t) {
-    var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv;
-    t.same(parse, { t : true, _ : [ 'moo' ], $0 : $0 });
-    t.same(typeof parse.t, 'boolean');
-    t.end();
-});
-
-test('flag boolean value', function (t) {
-    var parse = optimist(['--verbose', 'false', 'moo', '-t', 'true'])
-        .boolean(['t', 'verbose']).default('verbose', true).argv;
-    
-    t.same(parse, {
-        verbose: false,
-        t: true,
-        _: ['moo'],
-        $0 : $0
-    });
-    
-    t.same(typeof parse.verbose, 'boolean');
-    t.same(typeof parse.t, 'boolean');
-    t.end();
-});
-
-test('flag boolean default false', function (t) {
-    var parse = optimist(['moo'])
-        .boolean(['t', 'verbose'])
-        .default('verbose', false)
-        .default('t', false).argv;
-    
-    t.same(parse, {
-        verbose: false,
-        t: false,
-        _: ['moo'],
-        $0 : $0
-    });
-    
-    t.same(typeof parse.verbose, 'boolean');
-    t.same(typeof parse.t, 'boolean');
-    t.end();
-
-});
-
-test('boolean groups', function (t) {
-    var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ])
-        .boolean(['x','y','z']).argv;
-    
-    t.same(parse, {
-        x : true,
-        y : false,
-        z : true,
-        _ : [ 'one', 'two', 'three' ],
-        $0 : $0
-    });
-    
-    t.same(typeof parse.x, 'boolean');
-    t.same(typeof parse.y, 'boolean');
-    t.same(typeof parse.z, 'boolean');
-    t.end();
-});
-
-test('newlines in params' , function (t) {
-    var args = optimist.parse([ '-s', "X\nX" ])
-    t.same(args, { _ : [], s : "X\nX", $0 : $0 });
-
-    // reproduce in bash:
-    // VALUE="new
-    // line"
-    // node program.js --s="$VALUE"
-    args = optimist.parse([ "--s=X\nX" ])
-    t.same(args, { _ : [], s : "X\nX", $0 : $0 });
-    t.end();
-});
-
-test('strings' , function (t) {
-    var s = optimist([ '-s', '0001234' ]).string('s').argv.s;
-    t.same(s, '0001234');
-    t.same(typeof s, 'string');
-    
-    var x = optimist([ '-x', '56' ]).string('x').argv.x;
-    t.same(x, '56');
-    t.same(typeof x, 'string');
-    t.end();
-});
-
-test('stringArgs', function (t) {
-    var s = optimist([ '  ', '  ' ]).string('_').argv._;
-    t.same(s.length, 2);
-    t.same(typeof s[0], 'string');
-    t.same(s[0], '  ');
-    t.same(typeof s[1], 'string');
-    t.same(s[1], '  ');
-    t.end();
-});
-
-test('slashBreak', function (t) {
-    t.same(
-        optimist.parse([ '-I/foo/bar/baz' ]),
-        { I : '/foo/bar/baz', _ : [], $0 : $0 }
-    );
-    t.same(
-        optimist.parse([ '-xyz/foo/bar/baz' ]),
-        { x : true, y : true, z : '/foo/bar/baz', _ : [], $0 : $0 }
-    );
-    t.end();
-});
-
-test('alias', function (t) {
-    var argv = optimist([ '-f', '11', '--zoom', '55' ])
-        .alias('z', 'zoom')
-        .argv
-    ;
-    t.equal(argv.zoom, 55);
-    t.equal(argv.z, argv.zoom);
-    t.equal(argv.f, 11);
-    t.end();
-});
-
-test('multiAlias', function (t) {
-    var argv = optimist([ '-f', '11', '--zoom', '55' ])
-        .alias('z', [ 'zm', 'zoom' ])
-        .argv
-    ;
-    t.equal(argv.zoom, 55);
-    t.equal(argv.z, argv.zoom);
-    t.equal(argv.z, argv.zm);
-    t.equal(argv.f, 11);
-    t.end();
-});
-
-test('boolean default true', function (t) {
-    var argv = optimist.options({
-        sometrue: {
-            boolean: true,
-            default: true
-        }
-    }).argv;
-  
-    t.equal(argv.sometrue, true);
-    t.end();
-});
-
-test('boolean default false', function (t) {
-    var argv = optimist.options({
-        somefalse: {
-            boolean: true,
-            default: false
-        }
-    }).argv;
-
-    t.equal(argv.somefalse, false);
-    t.end();
-});
-
-test('nested dotted objects', function (t) {
-    var argv = optimist([
-        '--foo.bar', '3', '--foo.baz', '4',
-        '--foo.quux.quibble', '5', '--foo.quux.o_O',
-        '--beep.boop'
-    ]).argv;
-    
-    t.same(argv.foo, {
-        bar : 3,
-        baz : 4,
-        quux : {
-            quibble : 5,
-            o_O : true
-        },
-    });
-    t.same(argv.beep, { boop : true });
-    t.end();
-});
-
-test('boolean and alias with chainable api', function (t) {
-    var aliased = [ '-h', 'derp' ];
-    var regular = [ '--herp',  'derp' ];
-    var opts = {
-        herp: { alias: 'h', boolean: true }
-    };
-    var aliasedArgv = optimist(aliased)
-        .boolean('herp')
-        .alias('h', 'herp')
-        .argv;
-    var propertyArgv = optimist(regular)
-        .boolean('herp')
-        .alias('h', 'herp')
-        .argv;
-    var expected = {
-        herp: true,
-        h: true,
-        '_': [ 'derp' ],
-        '$0': $0,
-    };
-
-    t.same(aliasedArgv, expected);
-    t.same(propertyArgv, expected); 
-    t.end();
-});
-
-test('boolean and alias with options hash', function (t) {
-    var aliased = [ '-h', 'derp' ];
-    var regular = [ '--herp', 'derp' ];
-    var opts = {
-        herp: { alias: 'h', boolean: true }
-    };
-    var aliasedArgv = optimist(aliased)
-      .options(opts)
-      .argv;
-    var propertyArgv = optimist(regular).options(opts).argv;
-    var expected = {
-        herp: true,
-        h: true,
-        '_': [ 'derp' ],
-        '$0': $0,
-    };
-
-    t.same(aliasedArgv, expected);
-    t.same(propertyArgv, expected);
-
-    t.end();
-});
-
-test('boolean and alias using explicit true', function (t) {
-    var aliased = [ '-h', 'true' ];
-    var regular = [ '--herp',  'true' ];
-    var opts = {
-        herp: { alias: 'h', boolean: true }
-    };
-    var aliasedArgv = optimist(aliased)
-        .boolean('h')
-        .alias('h', 'herp')
-        .argv;
-    var propertyArgv = optimist(regular)
-        .boolean('h')
-        .alias('h', 'herp')
-        .argv;
-    var expected = {
-        herp: true,
-        h: true,
-        '_': [ ],
-        '$0': $0,
-    };
-
-    t.same(aliasedArgv, expected);
-    t.same(propertyArgv, expected); 
-    t.end();
-});
-
-// regression, see https://github.com/substack/node-optimist/issues/71
-test('boolean and --x=true', function(t) {
-    var parsed = optimist(['--boool', '--other=true']).boolean('boool').argv;
-
-    t.same(parsed.boool, true);
-    t.same(parsed.other, 'true');
-
-    parsed = optimist(['--boool', '--other=false']).boolean('boool').argv;
-
-    t.same(parsed.boool, true);
-    t.same(parsed.other, 'false');
-    t.end();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/parse_modified.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/parse_modified.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/parse_modified.js
deleted file mode 100644
index a57dc84..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/parse_modified.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var optimist = require('../');
-var test = require('tap').test;
-
-test('parse with modifier functions' , function (t) {
-    t.plan(1);
-    
-    var argv = optimist().boolean('b').parse([ '-b', '123' ]);
-    t.deepEqual(fix(argv), { b: true, _: ['123'] });
-});
-
-function fix (obj) {
-    delete obj.$0;
-    return obj;
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/short.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/short.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/short.js
deleted file mode 100644
index b2c38ad..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/short.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var optimist = require('../index');
-var test = require('tap').test;
-
-test('-n123', function (t) {
-    t.plan(1);
-    var parse = optimist.parse([ '-n123' ]);
-    t.equal(parse.n, 123);
-});
-
-test('-123', function (t) {
-    t.plan(3);
-    var parse = optimist.parse([ '-123', '456' ]);
-    t.equal(parse['1'], true);
-    t.equal(parse['2'], true);
-    t.equal(parse['3'], 456);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/usage.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/usage.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/usage.js
deleted file mode 100644
index 300454c..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/test/usage.js
+++ /dev/null
@@ -1,292 +0,0 @@
-var Hash = require('hashish');
-var optimist = require('../index');
-var test = require('tap').test;
-
-test('usageFail', function (t) {
-    var r = checkUsage(function () {
-        return optimist('-x 10 -z 20'.split(' '))
-            .usage('Usage: $0 -x NUM -y NUM')
-            .demand(['x','y'])
-            .argv;
-    });
-    t.same(
-        r.result,
-        { x : 10, z : 20, _ : [], $0 : './usage' }
-    );
-
-    t.same(
-        r.errors.join('\n').split(/\n+/),
-        [
-            'Usage: ./usage -x NUM -y NUM',
-            'Options:',
-            '  -x  [required]',
-            '  -y  [required]',
-            'Missing required arguments: y',
-        ]
-    );
-    t.same(r.logs, []);
-    t.ok(r.exit);
-    t.end();
-});
-
-
-test('usagePass', function (t) {
-    var r = checkUsage(function () {
-        return optimist('-x 10 -y 20'.split(' '))
-            .usage('Usage: $0 -x NUM -y NUM')
-            .demand(['x','y'])
-            .argv;
-    });
-    t.same(r, {
-        result : { x : 10, y : 20, _ : [], $0 : './usage' },
-        errors : [],
-        logs : [],
-        exit : false,
-    });
-    t.end();
-});
-
-test('checkPass', function (t) {
-    var r = checkUsage(function () {
-        return optimist('-x 10 -y 20'.split(' '))
-            .usage('Usage: $0 -x NUM -y NUM')
-            .check(function (argv) {
-                if (!('x' in argv)) throw 'You forgot about -x';
-                if (!('y' in argv)) throw 'You forgot about -y';
-            })
-            .argv;
-    });
-    t.same(r, {
-        result : { x : 10, y : 20, _ : [], $0 : './usage' },
-        errors : [],
-        logs : [],
-        exit : false,
-    });
-    t.end();
-});
-
-test('checkFail', function (t) {
-    var r = checkUsage(function () {
-        return optimist('-x 10 -z 20'.split(' '))
-            .usage('Usage: $0 -x NUM -y NUM')
-            .check(function (argv) {
-                if (!('x' in argv)) throw 'You forgot about -x';
-                if (!('y' in argv)) throw 'You forgot about -y';
-            })
-            .argv;
-    });
-
-    t.same(
-        r.result,
-        { x : 10, z : 20, _ : [], $0 : './usage' }
-    );
-
-    t.same(
-        r.errors.join('\n').split(/\n+/),
-        [
-            'Usage: ./usage -x NUM -y NUM',
-            'You forgot about -y'
-        ]
-    );
-
-    t.same(r.logs, []);
-    t.ok(r.exit);
-    t.end();
-});
-
-test('checkCondPass', function (t) {
-    function checker (argv) {
-        return 'x' in argv && 'y' in argv;
-    }
-
-    var r = checkUsage(function () {
-        return optimist('-x 10 -y 20'.split(' '))
-            .usage('Usage: $0 -x NUM -y NUM')
-            .check(checker)
-            .argv;
-    });
-    t.same(r, {
-        result : { x : 10, y : 20, _ : [], $0 : './usage' },
-        errors : [],
-        logs : [],
-        exit : false,
-    });
-    t.end();
-});
-
-test('checkCondFail', function (t) {
-    function checker (argv) {
-        return 'x' in argv && 'y' in argv;
-    }
-
-    var r = checkUsage(function () {
-        return optimist('-x 10 -z 20'.split(' '))
-            .usage('Usage: $0 -x NUM -y NUM')
-            .check(checker)
-            .argv;
-    });
-
-    t.same(
-        r.result,
-        { x : 10, z : 20, _ : [], $0 : './usage' }
-    );
-
-    t.same(
-        r.errors.join('\n').split(/\n+/).join('\n'),
-        'Usage: ./usage -x NUM -y NUM\n'
-        + 'Argument check failed: ' + checker.toString()
-    );
-
-    t.same(r.logs, []);
-    t.ok(r.exit);
-    t.end();
-});
-
-test('countPass', function (t) {
-    var r = checkUsage(function () {
-        return optimist('1 2 3 --moo'.split(' '))
-            .usage('Usage: $0 [x] [y] [z] {OPTIONS}')
-            .demand(3)
-            .argv;
-    });
-    t.same(r, {
-        result : { _ : [ '1', '2', '3' ], moo : true, $0 : './usage' },
-        errors : [],
-        logs : [],
-        exit : false,
-    });
-    t.end();
-});
-
-test('countFail', function (t) {
-    var r = checkUsage(function () {
-        return optimist('1 2 --moo'.split(' '))
-            .usage('Usage: $0 [x] [y] [z] {OPTIONS}')
-            .demand(3)
-            .argv;
-    });
-    t.same(
-        r.result,
-        { _ : [ '1', '2' ], moo : true, $0 : './usage' }
-    );
-
-    t.same(
-        r.errors.join('\n').split(/\n+/),
-        [
-            'Usage: ./usage [x] [y] [z] {OPTIONS}',
-            'Not enough non-option arguments: got 2, need at least 3',
-        ]
-    );
-
-    t.same(r.logs, []);
-    t.ok(r.exit);
-    t.end();
-});
-
-test('defaultSingles', function (t) {
-    var r = checkUsage(function () {
-        return optimist('--foo 50 --baz 70 --powsy'.split(' '))
-            .default('foo', 5)
-            .default('bar', 6)
-            .default('baz', 7)
-            .argv
-        ;
-    });
-    t.same(r.result, {
-        foo : '50',
-        bar : 6,
-        baz : '70',
-        powsy : true,
-        _ : [],
-        $0 : './usage',
-    });
-    t.end();
-});
-
-test('defaultAliases', function (t) {
-    var r = checkUsage(function () {
-        return optimist('')
-            .alias('f', 'foo')
-            .default('f', 5)
-            .argv
-        ;
-    });
-    t.same(r.result, {
-        f : '5',
-        foo : '5',
-        _ : [],
-        $0 : './usage',
-    });
-    t.end();
-});
-
-test('defaultHash', function (t) {
-    var r = checkUsage(function () {
-        return optimist('--foo 50 --baz 70'.split(' '))
-            .default({ foo : 10, bar : 20, quux : 30 })
-            .argv
-        ;
-    });
-    t.same(r.result, {
-        _ : [],
-        $0 : './usage',
-        foo : 50,
-        baz : 70,
-        bar : 20,
-        quux : 30,
-    });
-    t.end();
-});
-
-test('rebase', function (t) {
-    t.equal(
-        optimist.rebase('/home/substack', '/home/substack/foo/bar/baz'),
-        './foo/bar/baz'
-    );
-    t.equal(
-        optimist.rebase('/home/substack/foo/bar/baz', '/home/substack'),
-        '../../..'
-    );
-    t.equal(
-        optimist.rebase('/home/substack/foo', '/home/substack/pow/zoom.txt'),
-        '../pow/zoom.txt'
-    );
-    t.end();
-});
-
-function checkUsage (f) {
-
-    var exit = false;
-
-    process._exit = process.exit;
-    process._env = process.env;
-    process._argv = process.argv;
-
-    process.exit = function (t) { exit = true };
-    process.env = Hash.merge(process.env, { _ : 'node' });
-    process.argv = [ './usage' ];
-
-    var errors = [];
-    var logs = [];
-
-    console._error = console.error;
-    console.error = function (msg) { errors.push(msg) };
-    console._log = console.log;
-    console.log = function (msg) { logs.push(msg) };
-
-    var result = f();
-
-    process.exit = process._exit;
-    process.env = process._env;
-    process.argv = process._argv;
-
-    console.error = console._error;
-    console.log = console._log;
-
-    return {
-        errors : errors,
-        logs : logs,
-        exit : exit,
-        result : result,
-    };
-};



[79/98] [abbrv] incubator-apex-malhar git commit: Augment module names to contain (incubating).

Posted by da...@apache.org.
Augment module names to contain (incubating).


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/29de8905
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/29de8905
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/29de8905

Branch: refs/heads/master
Commit: 29de8905abf9cdec9eae65e17ccbd884f2780eca
Parents: c46880b
Author: Thomas Weise <th...@datatorrent.com>
Authored: Thu Nov 5 20:17:25 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Thu Nov 5 20:30:28 2015 -0800

----------------------------------------------------------------------
 NOTICE                           | 2 +-
 apps/logstream/pom.xml           | 2 +-
 apps/pom.xml                     | 2 +-
 benchmark/pom.xml                | 2 +-
 contrib/pom.xml                  | 2 +-
 demos/distributedistinct/pom.xml | 2 +-
 demos/echoserver/pom.xml         | 2 +-
 demos/frauddetect/pom.xml        | 2 +-
 demos/machinedata/pom.xml        | 2 +-
 demos/mobile/pom.xml             | 2 +-
 demos/mrmonitor/pom.xml          | 2 +-
 demos/mroperator/pom.xml         | 2 +-
 demos/pi/pom.xml                 | 2 +-
 demos/pom.xml                    | 2 +-
 demos/r/pom.xml                  | 2 +-
 demos/twitter/pom.xml            | 2 +-
 demos/uniquecount/pom.xml        | 2 +-
 demos/wordcount/pom.xml          | 2 +-
 demos/yahoofinance/pom.xml       | 2 +-
 library/pom.xml                  | 2 +-
 pom.xml                          | 2 +-
 samples/pom.xml                  | 2 +-
 22 files changed, 22 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index d0f6855..a511388 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,4 +1,4 @@
-Apache Apex (incubating)
+Apache Apex Malhar (incubating)
 Copyright (c) 2015 The Apache Software Foundation
 
 This product includes software developed at

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/apps/logstream/pom.xml
----------------------------------------------------------------------
diff --git a/apps/logstream/pom.xml b/apps/logstream/pom.xml
index d390b07..06ec56d 100644
--- a/apps/logstream/pom.xml
+++ b/apps/logstream/pom.xml
@@ -37,7 +37,7 @@
     <semver.plugin.skip>true</semver.plugin.skip>
   </properties>
 
-  <name>Apache Apex Malhar Logstream Application</name>
+  <name>Apache Apex Malhar (incubating) Logstream Application</name>
 
   <build>
     <plugins>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/apps/pom.xml
----------------------------------------------------------------------
diff --git a/apps/pom.xml b/apps/pom.xml
index 5375604..6002d30 100644
--- a/apps/pom.xml
+++ b/apps/pom.xml
@@ -29,7 +29,7 @@
   </parent>
 
   <artifactId>malhar-apps</artifactId>
-  <name>Apache Apex Malhar Apps</name>
+  <name>Apache Apex Malhar (incubating) Apps</name>
   <packaging>pom</packaging>
 
   <modules>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/benchmark/pom.xml
----------------------------------------------------------------------
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 5d47426..b076035 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -32,7 +32,7 @@
   <packaging>jar</packaging>
 
   <!-- change these to the appropriate values -->
-  <name>Apache Apex Malhar Benchmark</name>
+  <name>Apache Apex Malhar (incubating) Benchmark</name>
   <description>Benchmark applications package</description>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/contrib/pom.xml
----------------------------------------------------------------------
diff --git a/contrib/pom.xml b/contrib/pom.xml
index b999cca..7094a45 100755
--- a/contrib/pom.xml
+++ b/contrib/pom.xml
@@ -29,7 +29,7 @@
   </parent>
 
   <artifactId>malhar-contrib</artifactId>
-  <name>Apache Apex Malhar Contrib Library</name>
+  <name>Apache Apex Malhar (incubating) Contrib Library</name>
   <packaging>jar</packaging>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/distributedistinct/pom.xml
----------------------------------------------------------------------
diff --git a/demos/distributedistinct/pom.xml b/demos/distributedistinct/pom.xml
index dac02ae..be51f4a 100644
--- a/demos/distributedistinct/pom.xml
+++ b/demos/distributedistinct/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>distributedistinct</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Distributed Distinct Demo</name>
+  <name>Apache Apex Malhar (incubating) Distributed Distinct Demo</name>
   <description></description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/echoserver/pom.xml
----------------------------------------------------------------------
diff --git a/demos/echoserver/pom.xml b/demos/echoserver/pom.xml
index fb22441..57d9bb0 100644
--- a/demos/echoserver/pom.xml
+++ b/demos/echoserver/pom.xml
@@ -32,7 +32,7 @@
   <packaging>jar</packaging>
 
   <!-- change these to the appropriate values -->
-  <name>Apache Apex Malhar EchoServer Demo</name>
+  <name>Apache Apex Malhar (incubating) EchoServer Demo</name>
   <description>A demo server that echos data sent by a network client back to it</description>
 </project>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/frauddetect/pom.xml
----------------------------------------------------------------------
diff --git a/demos/frauddetect/pom.xml b/demos/frauddetect/pom.xml
index 28c98dd..5b9614a 100644
--- a/demos/frauddetect/pom.xml
+++ b/demos/frauddetect/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>frauddetect-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Fraud Detect Demo</name>
+  <name>Apache Apex Malhar (incubating) Fraud Detect Demo</name>
   <description>DataTorrent demo applications that demonstrates real-time pattern detection in the incoming data and alerting. The demo processes streaming credit card transactions and looks for fraudulent transactions.</description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/machinedata/pom.xml
----------------------------------------------------------------------
diff --git a/demos/machinedata/pom.xml b/demos/machinedata/pom.xml
index d82c169..197d3ee 100644
--- a/demos/machinedata/pom.xml
+++ b/demos/machinedata/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>machinedata-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar MachineData Demo</name>
+  <name>Apache Apex Malhar (incubating) MachineData Demo</name>
   <description></description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/mobile/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mobile/pom.xml b/demos/mobile/pom.xml
index 29eef6e..bee397c 100644
--- a/demos/mobile/pom.xml
+++ b/demos/mobile/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>mobile-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Mobile Demo</name>
+  <name>Apache Apex Malhar (incubating) Mobile Demo</name>
   <description></description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/mrmonitor/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mrmonitor/pom.xml b/demos/mrmonitor/pom.xml
index 90f9941..394c701 100644
--- a/demos/mrmonitor/pom.xml
+++ b/demos/mrmonitor/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>mrmonitor</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar MR Monitoring Demo</name>
+  <name>Apache Apex Malhar (incubating) MR Monitoring Demo</name>
   <description></description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/mroperator/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mroperator/pom.xml b/demos/mroperator/pom.xml
index a9fb558..1431de8 100644
--- a/demos/mroperator/pom.xml
+++ b/demos/mroperator/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>mroperator</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar MR Operator Demo</name>
+  <name>Apache Apex Malhar (incubating) MR Operator Demo</name>
   <description></description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/pi/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pi/pom.xml b/demos/pi/pom.xml
index 94d7b32..d1a4670 100644
--- a/demos/pi/pom.xml
+++ b/demos/pi/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>pi-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Pi Demo</name>
+  <name>Apache Apex Malhar (incubating) Pi Demo</name>
   <description>DataTorrent demo applications that calculate the value of Pi. This is a starting point to understand how DataTorrent works.</description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pom.xml b/demos/pom.xml
index 8f0e55f..7a409d0 100644
--- a/demos/pom.xml
+++ b/demos/pom.xml
@@ -30,7 +30,7 @@
 
   <artifactId>malhar-demos</artifactId>
   <packaging>pom</packaging>
-  <name>Apache Apex Malhar Demos</name>
+  <name>Apache Apex Malhar (incubating) Demos</name>
 
   <properties>
     <datatorrent.apppackage.classpath>lib/*.jar</datatorrent.apppackage.classpath>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/r/pom.xml
----------------------------------------------------------------------
diff --git a/demos/r/pom.xml b/demos/r/pom.xml
index 976135a..4c8eb78 100644
--- a/demos/r/pom.xml
+++ b/demos/r/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>r-demo</artifactId>
   <packaging>jar</packaging>
 
- <name>Apache Apex Malhar R Demo</name>
+ <name>Apache Apex Malhar (incubating) R Demo</name>
   <description>DataTorrent demo applications for using R.</description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/twitter/pom.xml
----------------------------------------------------------------------
diff --git a/demos/twitter/pom.xml b/demos/twitter/pom.xml
index fbeaa8e..d58b456 100644
--- a/demos/twitter/pom.xml
+++ b/demos/twitter/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>twitter-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Twitter Demo</name>
+  <name>Apache Apex Malhar (incubating) Twitter Demo</name>
   <description>Twitter Rolling Top Words application demonstrates real-time computations over a sliding window.</description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/uniquecount/pom.xml
----------------------------------------------------------------------
diff --git a/demos/uniquecount/pom.xml b/demos/uniquecount/pom.xml
index 0f55354..1597de9 100644
--- a/demos/uniquecount/pom.xml
+++ b/demos/uniquecount/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>uniquecount</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Unique Count Demo</name>
+  <name>Apache Apex Malhar (incubating) Unique Count Demo</name>
   <description></description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/wordcount/pom.xml
----------------------------------------------------------------------
diff --git a/demos/wordcount/pom.xml b/demos/wordcount/pom.xml
index 4a45cc2..fb06aec 100644
--- a/demos/wordcount/pom.xml
+++ b/demos/wordcount/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>wordcount-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Wordcount Demo</name>
+  <name>Apache Apex Malhar (incubating) Wordcount Demo</name>
   <description>A very simple application that demonstrates DataTorrent Platformā€™s streaming window feature.</description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/demos/yahoofinance/pom.xml
----------------------------------------------------------------------
diff --git a/demos/yahoofinance/pom.xml b/demos/yahoofinance/pom.xml
index 17321de..c98a192 100644
--- a/demos/yahoofinance/pom.xml
+++ b/demos/yahoofinance/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>yahoo-finance-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Yahoo! Finance Demo</name>
+  <name>Apache Apex Malhar (incubating) Yahoo! Finance Demo</name>
   <description>DataTorrent demo applications that get Yahoo finance feed and calculate minute price range, minute volume and simple moving average.</description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/library/pom.xml
----------------------------------------------------------------------
diff --git a/library/pom.xml b/library/pom.xml
index fb28d52..b024613 100644
--- a/library/pom.xml
+++ b/library/pom.xml
@@ -32,7 +32,7 @@
   <artifactId>malhar-library</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Library</name>
+  <name>Apache Apex Malhar (incubating) Library</name>
 
   <properties>
     <maven.deploy.skip>false</maven.deploy.skip>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 3f34305..f76676a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
   <artifactId>malhar</artifactId>
   <version>3.2.0-incubating-SNAPSHOT</version>
   <packaging>pom</packaging>
-  <name>Apache Apex Malhar</name>
+  <name>Apache Apex Malhar (incubating)</name>
   <url>http://apex.apache.org</url>
 
   <licenses>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/29de8905/samples/pom.xml
----------------------------------------------------------------------
diff --git a/samples/pom.xml b/samples/pom.xml
index c67f308..6802adf 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -32,7 +32,7 @@
   <artifactId>malhar-samples</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Samples</name>
+  <name>Apache Apex Malhar (incubating) Samples</name>
 
   <dependencies>
     <dependency>


[47/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/vendor/markerwithlabel.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/vendor/markerwithlabel.js b/web/demos/app/scripts/vendor/markerwithlabel.js
deleted file mode 100644
index bef0926..0000000
--- a/web/demos/app/scripts/vendor/markerwithlabel.js
+++ /dev/null
@@ -1,577 +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.
- */
-/*!
- *
- * 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 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.
- */
-
-/*jslint browser:true */
-/*global document,google */
-
-/**
- * @param {Function} childCtor Child class.
- * @param {Function} parentCtor Parent class.
- */
-function inherits(childCtor, parentCtor) {
-  /** @constructor */
-  function tempCtor() {};
-  tempCtor.prototype = parentCtor.prototype;
-  childCtor.superClass_ = parentCtor.prototype;
-  childCtor.prototype = new tempCtor();
-  /** @override */
-  childCtor.prototype.constructor = childCtor;
-}
-
-/**
- * This constructor creates a label and associates it with a marker.
- * It is for the private use of the MarkerWithLabel class.
- * @constructor
- * @param {Marker} marker The marker with which the label is to be associated.
- * @param {string} crossURL The URL of the cross image =.
- * @param {string} handCursor The URL of the hand cursor.
- * @private
- */
-function MarkerLabel_(marker, crossURL, handCursorURL) {
-  this.marker_ = marker;
-  this.handCursorURL_ = marker.handCursorURL;
-
-  this.labelDiv_ = document.createElement("div");
-  this.labelDiv_.style.cssText = "position: absolute; overflow: hidden;";
-
-  // Set up the DIV for handling mouse events in the label. This DIV forms a transparent veil
-  // in the "overlayMouseTarget" pane, a veil that covers just the label. This is done so that
-  // events can be captured even if the label is in the shadow of a google.maps.InfoWindow.
-  // Code is included here to ensure the veil is always exactly the same size as the label.
-  this.eventDiv_ = document.createElement("div");
-  this.eventDiv_.style.cssText = this.labelDiv_.style.cssText;
-
-  // This is needed for proper behavior on MSIE:
-  this.eventDiv_.setAttribute("onselectstart", "return false;");
-  this.eventDiv_.setAttribute("ondragstart", "return false;");
-
-  // Get the DIV for the "X" to be displayed when the marker is raised.
-  this.crossDiv_ = MarkerLabel_.getSharedCross(crossURL);
-}
-inherits(MarkerLabel_, google.maps.OverlayView);
-
-/**
- * Returns the DIV for the cross used when dragging a marker when the
- * raiseOnDrag parameter set to true. One cross is shared with all markers.
- * @param {string} crossURL The URL of the cross image =.
- * @private
- */
-MarkerLabel_.getSharedCross = function (crossURL) {
-  var div;
-  if (typeof MarkerLabel_.getSharedCross.crossDiv === "undefined") {
-    div = document.createElement("img");
-    div.style.cssText = "position: absolute; z-index: 1000002; display: none;";
-    // Hopefully Google never changes the standard "X" attributes:
-    div.style.marginLeft = "-8px";
-    div.style.marginTop = "-9px";
-    div.src = crossURL;
-    MarkerLabel_.getSharedCross.crossDiv = div;
-  }
-  return MarkerLabel_.getSharedCross.crossDiv;
-};
-
-/**
- * Adds the DIV representing the label to the DOM. This method is called
- * automatically when the marker's <code>setMap</code> method is called.
- * @private
- */
-MarkerLabel_.prototype.onAdd = function () {
-  var me = this;
-  var cMouseIsDown = false;
-  var cDraggingLabel = false;
-  var cSavedZIndex;
-  var cLatOffset, cLngOffset;
-  var cIgnoreClick;
-  var cRaiseEnabled;
-  var cStartPosition;
-  var cStartCenter;
-  // Constants:
-  var cRaiseOffset = 20;
-  var cDraggingCursor = "url(" + this.handCursorURL_ + ")";
-
-  // Stops all processing of an event.
-  //
-  var cAbortEvent = function (e) {
-    if (e.preventDefault) {
-      e.preventDefault();
-    }
-    e.cancelBubble = true;
-    if (e.stopPropagation) {
-      e.stopPropagation();
-    }
-  };
-
-  var cStopBounce = function () {
-    me.marker_.setAnimation(null);
-  };
-
-  this.getPanes().overlayImage.appendChild(this.labelDiv_);
-  this.getPanes().overlayMouseTarget.appendChild(this.eventDiv_);
-  // One cross is shared with all markers, so only add it once:
-  if (typeof MarkerLabel_.getSharedCross.processed === "undefined") {
-    this.getPanes().overlayImage.appendChild(this.crossDiv_);
-    MarkerLabel_.getSharedCross.processed = true;
-  }
-
-  this.listeners_ = [
-    google.maps.event.addDomListener(this.eventDiv_, "mouseover", function (e) {
-      if (me.marker_.getDraggable() || me.marker_.getClickable()) {
-        this.style.cursor = "pointer";
-        google.maps.event.trigger(me.marker_, "mouseover", e);
-      }
-    }),
-    google.maps.event.addDomListener(this.eventDiv_, "mouseout", function (e) {
-      if ((me.marker_.getDraggable() || me.marker_.getClickable()) && !cDraggingLabel) {
-        this.style.cursor = me.marker_.getCursor();
-        google.maps.event.trigger(me.marker_, "mouseout", e);
-      }
-    }),
-    google.maps.event.addDomListener(this.eventDiv_, "mousedown", function (e) {
-      cDraggingLabel = false;
-      if (me.marker_.getDraggable()) {
-        cMouseIsDown = true;
-        this.style.cursor = cDraggingCursor;
-      }
-      if (me.marker_.getDraggable() || me.marker_.getClickable()) {
-        google.maps.event.trigger(me.marker_, "mousedown", e);
-        cAbortEvent(e); // Prevent map pan when starting a drag on a label
-      }
-    }),
-    google.maps.event.addDomListener(document, "mouseup", function (mEvent) {
-      var position;
-      if (cMouseIsDown) {
-        cMouseIsDown = false;
-        me.eventDiv_.style.cursor = "pointer";
-        google.maps.event.trigger(me.marker_, "mouseup", mEvent);
-      }
-      if (cDraggingLabel) {
-        if (cRaiseEnabled) { // Lower the marker & label
-          position = me.getProjection().fromLatLngToDivPixel(me.marker_.getPosition());
-          position.y += cRaiseOffset;
-          me.marker_.setPosition(me.getProjection().fromDivPixelToLatLng(position));
-          // This is not the same bouncing style as when the marker portion is dragged,
-          // but it will have to do:
-          try { // Will fail if running Google Maps API earlier than V3.3
-            me.marker_.setAnimation(google.maps.Animation.BOUNCE);
-            setTimeout(cStopBounce, 1406);
-          } catch (e) {}
-        }
-        me.crossDiv_.style.display = "none";
-        me.marker_.setZIndex(cSavedZIndex);
-        cIgnoreClick = true; // Set flag to ignore the click event reported after a label drag
-        cDraggingLabel = false;
-        mEvent.latLng = me.marker_.getPosition();
-        google.maps.event.trigger(me.marker_, "dragend", mEvent);
-      }
-    }),
-    google.maps.event.addListener(me.marker_.getMap(), "mousemove", function (mEvent) {
-      var position;
-      if (cMouseIsDown) {
-        if (cDraggingLabel) {
-          // Change the reported location from the mouse position to the marker position:
-          mEvent.latLng = new google.maps.LatLng(mEvent.latLng.lat() - cLatOffset, mEvent.latLng.lng() - cLngOffset);
-          position = me.getProjection().fromLatLngToDivPixel(mEvent.latLng);
-          if (cRaiseEnabled) {
-            me.crossDiv_.style.left = position.x + "px";
-            me.crossDiv_.style.top = position.y + "px";
-            me.crossDiv_.style.display = "";
-            position.y -= cRaiseOffset;
-          }
-          me.marker_.setPosition(me.getProjection().fromDivPixelToLatLng(position));
-          if (cRaiseEnabled) { // Don't raise the veil; this hack needed to make MSIE act properly
-            me.eventDiv_.style.top = (position.y + cRaiseOffset) + "px";
-          }
-          google.maps.event.trigger(me.marker_, "drag", mEvent);
-        } else {
-          // Calculate offsets from the click point to the marker position:
-          cLatOffset = mEvent.latLng.lat() - me.marker_.getPosition().lat();
-          cLngOffset = mEvent.latLng.lng() - me.marker_.getPosition().lng();
-          cSavedZIndex = me.marker_.getZIndex();
-          cStartPosition = me.marker_.getPosition();
-          cStartCenter = me.marker_.getMap().getCenter();
-          cRaiseEnabled = me.marker_.get("raiseOnDrag");
-          cDraggingLabel = true;
-          me.marker_.setZIndex(1000000); // Moves the marker & label to the foreground during a drag
-          mEvent.latLng = me.marker_.getPosition();
-          google.maps.event.trigger(me.marker_, "dragstart", mEvent);
-        }
-      }
-    }),
-    google.maps.event.addDomListener(document, "keydown", function (e) {
-      if (cDraggingLabel) {
-        if (e.keyCode === 27) { // Esc key
-          cRaiseEnabled = false;
-          me.marker_.setPosition(cStartPosition);
-          me.marker_.getMap().setCenter(cStartCenter);
-          google.maps.event.trigger(document, "mouseup", e);
-        }
-      }
-    }),
-    google.maps.event.addDomListener(this.eventDiv_, "click", function (e) {
-      if (me.marker_.getDraggable() || me.marker_.getClickable()) {
-        if (cIgnoreClick) { // Ignore the click reported when a label drag ends
-          cIgnoreClick = false;
-        } else {
-          google.maps.event.trigger(me.marker_, "click", e);
-          cAbortEvent(e); // Prevent click from being passed on to map
-        }
-      }
-    }),
-    google.maps.event.addDomListener(this.eventDiv_, "dblclick", function (e) {
-      if (me.marker_.getDraggable() || me.marker_.getClickable()) {
-        google.maps.event.trigger(me.marker_, "dblclick", e);
-        cAbortEvent(e); // Prevent map zoom when double-clicking on a label
-      }
-    }),
-    google.maps.event.addListener(this.marker_, "dragstart", function (mEvent) {
-      if (!cDraggingLabel) {
-        cRaiseEnabled = this.get("raiseOnDrag");
-      }
-    }),
-    google.maps.event.addListener(this.marker_, "drag", function (mEvent) {
-      if (!cDraggingLabel) {
-        if (cRaiseEnabled) {
-          me.setPosition(cRaiseOffset);
-          // During a drag, the marker's z-index is temporarily set to 1000000 to
-          // ensure it appears above all other markers. Also set the label's z-index
-          // to 1000000 (plus or minus 1 depending on whether the label is supposed
-          // to be above or below the marker).
-          me.labelDiv_.style.zIndex = 1000000 + (this.get("labelInBackground") ? -1 : +1);
-        }
-      }
-    }),
-    google.maps.event.addListener(this.marker_, "dragend", function (mEvent) {
-      if (!cDraggingLabel) {
-        if (cRaiseEnabled) {
-          me.setPosition(0); // Also restores z-index of label
-        }
-      }
-    }),
-    google.maps.event.addListener(this.marker_, "position_changed", function () {
-      me.setPosition();
-    }),
-    google.maps.event.addListener(this.marker_, "zindex_changed", function () {
-      me.setZIndex();
-    }),
-    google.maps.event.addListener(this.marker_, "visible_changed", function () {
-      me.setVisible();
-    }),
-    google.maps.event.addListener(this.marker_, "labelvisible_changed", function () {
-      me.setVisible();
-    }),
-    google.maps.event.addListener(this.marker_, "title_changed", function () {
-      me.setTitle();
-    }),
-    google.maps.event.addListener(this.marker_, "labelcontent_changed", function () {
-      me.setContent();
-    }),
-    google.maps.event.addListener(this.marker_, "labelanchor_changed", function () {
-      me.setAnchor();
-    }),
-    google.maps.event.addListener(this.marker_, "labelclass_changed", function () {
-      me.setStyles();
-    }),
-    google.maps.event.addListener(this.marker_, "labelstyle_changed", function () {
-      me.setStyles();
-    })
-  ];
-};
-
-/**
- * Removes the DIV for the label from the DOM. It also removes all event handlers.
- * This method is called automatically when the marker's <code>setMap(null)</code>
- * method is called.
- * @private
- */
-MarkerLabel_.prototype.onRemove = function () {
-  var i;
-  this.labelDiv_.parentNode.removeChild(this.labelDiv_);
-  this.eventDiv_.parentNode.removeChild(this.eventDiv_);
-
-  // Remove event listeners:
-  for (i = 0; i < this.listeners_.length; i++) {
-    google.maps.event.removeListener(this.listeners_[i]);
-  }
-};
-
-/**
- * Draws the label on the map.
- * @private
- */
-MarkerLabel_.prototype.draw = function () {
-  this.setContent();
-  this.setTitle();
-  this.setStyles();
-};
-
-/**
- * Sets the content of the label.
- * The content can be plain text or an HTML DOM node.
- * @private
- */
-MarkerLabel_.prototype.setContent = function () {
-  var content = this.marker_.get("labelContent");
-  if (typeof content.nodeType === "undefined") {
-    this.labelDiv_.innerHTML = content;
-    this.eventDiv_.innerHTML = this.labelDiv_.innerHTML;
-  } else {
-    this.labelDiv_.innerHTML = ""; // Remove current content
-    this.labelDiv_.appendChild(content);
-    content = content.cloneNode(true);
-    this.eventDiv_.appendChild(content);
-  }
-};
-
-/**
- * Sets the content of the tool tip for the label. It is
- * always set to be the same as for the marker itself.
- * @private
- */
-MarkerLabel_.prototype.setTitle = function () {
-  this.eventDiv_.title = this.marker_.getTitle() || "";
-};
-
-/**
- * Sets the style of the label by setting the style sheet and applying
- * other specific styles requested.
- * @private
- */
-MarkerLabel_.prototype.setStyles = function () {
-  var i, labelStyle;
-
-  // Apply style values from the style sheet defined in the labelClass parameter:
-  this.labelDiv_.className = this.marker_.get("labelClass");
-  this.eventDiv_.className = this.labelDiv_.className;
-
-  // Clear existing inline style values:
-  this.labelDiv_.style.cssText = "";
-  this.eventDiv_.style.cssText = "";
-  // Apply style values defined in the labelStyle parameter:
-  labelStyle = this.marker_.get("labelStyle");
-  for (i in labelStyle) {
-    if (labelStyle.hasOwnProperty(i)) {
-      this.labelDiv_.style[i] = labelStyle[i];
-      this.eventDiv_.style[i] = labelStyle[i];
-    }
-  }
-  this.setMandatoryStyles();
-};
-
-/**
- * Sets the mandatory styles to the DIV representing the label as well as to the
- * associated event DIV. This includes setting the DIV position, z-index, and visibility.
- * @private
- */
-MarkerLabel_.prototype.setMandatoryStyles = function () {
-  this.labelDiv_.style.position = "absolute";
-  this.labelDiv_.style.overflow = "hidden";
-  // Make sure the opacity setting causes the desired effect on MSIE:
-  if (typeof this.labelDiv_.style.opacity !== "undefined" && this.labelDiv_.style.opacity !== "") {
-    this.labelDiv_.style.MsFilter = "\"progid:DXImageTransform.Microsoft.Alpha(opacity=" + (this.labelDiv_.style.opacity * 100) + ")\"";
-    this.labelDiv_.style.filter = "alpha(opacity=" + (this.labelDiv_.style.opacity * 100) + ")";
-  }
-
-  this.eventDiv_.style.position = this.labelDiv_.style.position;
-  this.eventDiv_.style.overflow = this.labelDiv_.style.overflow;
-  this.eventDiv_.style.opacity = 0.01; // Don't use 0; DIV won't be clickable on MSIE
-  this.eventDiv_.style.MsFilter = "\"progid:DXImageTransform.Microsoft.Alpha(opacity=1)\"";
-  this.eventDiv_.style.filter = "alpha(opacity=1)"; // For MSIE
-
-  this.setAnchor();
-  this.setPosition(); // This also updates z-index, if necessary.
-  this.setVisible();
-};
-
-/**
- * Sets the anchor point of the label.
- * @private
- */
-MarkerLabel_.prototype.setAnchor = function () {
-  var anchor = this.marker_.get("labelAnchor");
-  this.labelDiv_.style.marginLeft = -anchor.x + "px";
-  this.labelDiv_.style.marginTop = -anchor.y + "px";
-  this.eventDiv_.style.marginLeft = -anchor.x + "px";
-  this.eventDiv_.style.marginTop = -anchor.y + "px";
-};
-
-/**
- * Sets the position of the label. The z-index is also updated, if necessary.
- * @private
- */
-MarkerLabel_.prototype.setPosition = function (yOffset) {
-  var position = this.getProjection().fromLatLngToDivPixel(this.marker_.getPosition());
-  if (typeof yOffset === "undefined") {
-    yOffset = 0;
-  }
-  this.labelDiv_.style.left = Math.round(position.x) + "px";
-  this.labelDiv_.style.top = Math.round(position.y - yOffset) + "px";
-  this.eventDiv_.style.left = this.labelDiv_.style.left;
-  this.eventDiv_.style.top = this.labelDiv_.style.top;
-
-  this.setZIndex();
-};
-
-/**
- * Sets the z-index of the label. If the marker's z-index property has not been defined, the z-index
- * of the label is set to the vertical coordinate of the label. This is in keeping with the default
- * stacking order for Google Maps: markers to the south are in front of markers to the north.
- * @private
- */
-MarkerLabel_.prototype.setZIndex = function () {
-  var zAdjust = (this.marker_.get("labelInBackground") ? -1 : +1);
-  if (typeof this.marker_.getZIndex() === "undefined") {
-    this.labelDiv_.style.zIndex = parseInt(this.labelDiv_.style.top, 10) + zAdjust;
-    this.eventDiv_.style.zIndex = this.labelDiv_.style.zIndex;
-  } else {
-    this.labelDiv_.style.zIndex = this.marker_.getZIndex() + zAdjust;
-    this.eventDiv_.style.zIndex = this.labelDiv_.style.zIndex;
-  }
-};
-
-/**
- * Sets the visibility of the label. The label is visible only if the marker itself is
- * visible (i.e., its visible property is true) and the labelVisible property is true.
- * @private
- */
-MarkerLabel_.prototype.setVisible = function () {
-  if (this.marker_.get("labelVisible")) {
-    this.labelDiv_.style.display = this.marker_.getVisible() ? "block" : "none";
-  } else {
-    this.labelDiv_.style.display = "none";
-  }
-  this.eventDiv_.style.display = this.labelDiv_.style.display;
-};
-
-/**
- * @name MarkerWithLabelOptions
- * @class This class represents the optional parameter passed to the {@link MarkerWithLabel} constructor.
- *  The properties available are the same as for <code>google.maps.Marker</code> with the addition
- *  of the properties listed below. To change any of these additional properties after the labeled
- *  marker has been created, call <code>google.maps.Marker.set(propertyName, propertyValue)</code>.
- *  <p>
- *  When any of these properties changes, a property changed event is fired. The names of these
- *  events are derived from the name of the property and are of the form <code>propertyname_changed</code>.
- *  For example, if the content of the label changes, a <code>labelcontent_changed</code> event
- *  is fired.
- *  <p>
- * @property {string|Node} [labelContent] The content of the label (plain text or an HTML DOM node).
- * @property {Point} [labelAnchor] By default, a label is drawn with its anchor point at (0,0) so
- *  that its top left corner is positioned at the anchor point of the associated marker. Use this
- *  property to change the anchor point of the label. For example, to center a 50px-wide label
- *  beneath a marker, specify a <code>labelAnchor</code> of <code>google.maps.Point(25, 0)</code>.
- *  (Note: x-values increase to the right and y-values increase to the top.)
- * @property {string} [labelClass] The name of the CSS class defining the styles for the label.
- *  Note that style values for <code>position</code>, <code>overflow</code>, <code>top</code>,
- *  <code>left</code>, <code>zIndex</code>, <code>display</code>, <code>marginLeft</code>, and
- *  <code>marginTop</code> are ignored; these styles are for internal use only.
- * @property {Object} [labelStyle] An object literal whose properties define specific CSS
- *  style values to be applied to the label. Style values defined here override those that may
- *  be defined in the <code>labelClass</code> style sheet. If this property is changed after the
- *  label has been created, all previously set styles (except those defined in the style sheet)
- *  are removed from the label before the new style values are applied.
- *  Note that style values for <code>position</code>, <code>overflow</code>, <code>top</code>,
- *  <code>left</code>, <code>zIndex</code>, <code>display</code>, <code>marginLeft</code>, and
- *  <code>marginTop</code> are ignored; these styles are for internal use only.
- * @property {boolean} [labelInBackground] A flag indicating whether a label that overlaps its
- *  associated marker should appear in the background (i.e., in a plane below the marker).
- *  The default is <code>false</code>, which causes the label to appear in the foreground.
- * @property {boolean} [labelVisible] A flag indicating whether the label is to be visible.
- *  The default is <code>true</code>. Note that even if <code>labelVisible</code> is
- *  <code>true</code>, the label will <i>not</i> be visible unless the associated marker is also
- *  visible (i.e., unless the marker's <code>visible</code> property is <code>true</code>).
- * @property {boolean} [raiseOnDrag] A flag indicating whether the label and marker are to be
- *  raised when the marker is dragged. The default is <code>true</code>. If a draggable marker is
- *  being created and a version of Google Maps API earlier than V3.3 is being used, this property
- *  must be set to <code>false</code>.
- * @property {boolean} [optimized] A flag indicating whether rendering is to be optimized for the
- *  marker. <b>Important: The optimized rendering technique is not supported by MarkerWithLabel,
- *  so the value of this parameter is always forced to <code>false</code>.
- * @property {string} [crossImage="http://maps.gstatic.com/intl/en_us/mapfiles/drag_cross_67_16.png"]
- *  The URL of the cross image to be displayed while dragging a marker.
- * @property {string} [handCursor="http://maps.gstatic.com/intl/en_us/mapfiles/closedhand_8_8.cur"]
- *  The URL of the cursor to be displayed while dragging a marker.
- */
-/**
- * Creates a MarkerWithLabel with the options specified in {@link MarkerWithLabelOptions}.
- * @constructor
- * @param {MarkerWithLabelOptions} [opt_options] The optional parameters.
- */
-function MarkerWithLabel(opt_options) {
-  opt_options = opt_options || {};
-  opt_options.labelContent = opt_options.labelContent || "";
-  opt_options.labelAnchor = opt_options.labelAnchor || new google.maps.Point(0, 0);
-  opt_options.labelClass = opt_options.labelClass || "markerLabels";
-  opt_options.labelStyle = opt_options.labelStyle || {};
-  opt_options.labelInBackground = opt_options.labelInBackground || false;
-  if (typeof opt_options.labelVisible === "undefined") {
-    opt_options.labelVisible = true;
-  }
-  if (typeof opt_options.raiseOnDrag === "undefined") {
-    opt_options.raiseOnDrag = true;
-  }
-  if (typeof opt_options.clickable === "undefined") {
-    opt_options.clickable = true;
-  }
-  if (typeof opt_options.draggable === "undefined") {
-    opt_options.draggable = false;
-  }
-  if (typeof opt_options.optimized === "undefined") {
-    opt_options.optimized = false;
-  }
-  opt_options.crossImage = opt_options.crossImage || "http" + (document.location.protocol === "https:" ? "s" : "") + "://maps.gstatic.com/intl/en_us/mapfiles/drag_cross_67_16.png";
-  opt_options.handCursor = opt_options.handCursor || "http" + (document.location.protocol === "https:" ? "s" : "") + "://maps.gstatic.com/intl/en_us/mapfiles/closedhand_8_8.cur";
-  opt_options.optimized = false; // Optimized rendering is not supported
-
-  this.label = new MarkerLabel_(this, opt_options.crossImage, opt_options.handCursor); // Bind the label to the marker
-
-  // Call the parent constructor. It calls Marker.setValues to initialize, so all
-  // the new parameters are conveniently saved and can be accessed with get/set.
-  // Marker.set triggers a property changed event (called "propertyname_changed")
-  // that the marker label listens for in order to react to state changes.
-  google.maps.Marker.apply(this, arguments);
-}
-inherits(MarkerWithLabel, google.maps.Marker);
-
-/**
- * Overrides the standard Marker setMap function.
- * @param {Map} theMap The map to which the marker is to be added.
- * @private
- */
-MarkerWithLabel.prototype.setMap = function (theMap) {
-
-  // Call the inherited function...
-  google.maps.Marker.prototype.setMap.apply(this, arguments);
-
-  // ... then deal with the label:
-  this.label.setMap(theMap);
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/vendor/visibly.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/vendor/visibly.js b/web/demos/app/scripts/vendor/visibly.js
deleted file mode 100644
index a94fdfd..0000000
--- a/web/demos/app/scripts/vendor/visibly.js
+++ /dev/null
@@ -1,132 +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.
- */
-;(function () {
-
-    window.visibly = {
-        q: document,
-        p: undefined,
-        prefixes: ['webkit', 'ms','o','moz','khtml'],
-        props: ['VisibilityState', 'visibilitychange', 'Hidden'],
-        m: ['focus', 'blur'],
-        visibleCallbacks: [],
-        hiddenCallbacks: [],
-        genericCallbacks:[],
-        _callbacks: [],
-        cachedPrefix:"",
-        fn:null,
-
-        onVisible: function (_callback) {
-            if(typeof _callback == 'function' ){
-                this.visibleCallbacks.push(_callback);
-            }
-        },
-        onHidden: function (_callback) {
-            if(typeof _callback == 'function' ){
-                this.hiddenCallbacks.push(_callback);
-            }
-        },
-        getPrefix:function(){
-            if(!this.cachedPrefix){
-                for(var l=0;b=this.prefixes[l++];){
-                    if(b + this.props[2] in this.q){
-                        this.cachedPrefix =  b;
-                        return this.cachedPrefix;
-                    }
-                }    
-             }
-        },
-
-        visibilityState:function(){
-            return  this._getProp(0);
-        },
-        hidden:function(){
-            return this._getProp(2);
-        },
-        visibilitychange:function(fn){
-            if(typeof fn == 'function' ){
-                this.genericCallbacks.push(fn);
-            }
-
-            var n =  this.genericCallbacks.length;
-            if(n){
-                if(this.cachedPrefix){
-                     while(n--){
-                        this.genericCallbacks[n].call(this, this.visibilityState());
-                    }
-                }else{
-                    while(n--){
-                        this.genericCallbacks[n].call(this, arguments[0]);
-                    }
-                }
-            }
-
-        },
-        isSupported: function (index) {
-            return ((this.cachedPrefix + this.props[2]) in this.q);
-        },
-        _getProp:function(index){
-            return this.q[this.cachedPrefix + this.props[index]]; 
-        },
-        _execute: function (index) {
-            if (index) {
-                this._callbacks = (index == 1) ? this.visibleCallbacks : this.hiddenCallbacks;
-                var n =  this._callbacks.length;
-                while(n--){
-                    this._callbacks[n]();
-                }
-            }
-        },
-        _visible: function () {
-            window.visibly._execute(1);
-            window.visibly.visibilitychange.call(window.visibly, 'visible');
-        },
-        _hidden: function () {
-            window.visibly._execute(2);
-            window.visibly.visibilitychange.call(window.visibly, 'hidden');
-        },
-        _nativeSwitch: function () {
-            this[this._getProp(2) ? '_hidden' : '_visible']();
-        },
-        _listen: function () {
-            try { /*if no native page visibility support found..*/
-                if (!(this.isSupported())) {
-                    if (this.q.addEventListener) { /*for browsers without focusin/out support eg. firefox, opera use focus/blur*/
-                        window.addEventListener(this.m[0], this._visible, 1);
-                        window.addEventListener(this.m[1], this._hidden, 1);
-                    } else { /*IE <10s most reliable focus events are onfocusin/onfocusout*/
-                        if (this.q.attachEvent) {
-                            this.q.attachEvent('onfocusin', this._visible);
-                            this.q.attachEvent('onfocusout', this._hidden);
-                        }
-                    }
-                } else { /*switch support based on prefix detected earlier*/
-                    this.q.addEventListener(this.cachedPrefix + this.props[1], function () {
-                        window.visibly._nativeSwitch.apply(window.visibly, arguments);
-                    }, 1);
-                }
-            } catch (e) {}
-        },
-        init: function () {
-            this.getPrefix();
-            this._listen();
-        }
-    };
-
-    this.visibly.init();
-})();


[40/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/styles/5e6512ec.vendor.css
----------------------------------------------------------------------
diff --git a/web/demos/package/app/styles/5e6512ec.vendor.css b/web/demos/package/app/styles/5e6512ec.vendor.css
deleted file mode 100644
index 70bc024..0000000
--- a/web/demos/package/app/styles/5e6512ec.vendor.css
+++ /dev/null
@@ -1,19 +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.
- */
-article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}label,select,button,input[type=button],input[ty
 pe=reset],input[type=submit],input[type=radio],input[type=checkbox]{cursor:pointer}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font
 -size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:"";line-height:0}.row:after{clear:both}[class*=span]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span1{width:60px}.span2{width:140px}.span3{width:220px}.span4{width:300px}.span5{width:380px}.span6{width:460px}.span7{width:540px}.span8{width:620px}.span9{width:700px}.s
 pan10{width:780px}.span11{width:860px}.span12{width:940px}.offset1{margin-left:100px}.offset2{margin-left:180px}.offset3{margin-left:260px}.offset4{margin-left:340px}.offset5{margin-left:420px}.offset6{margin-left:500px}.offset7{margin-left:580px}.offset8{margin-left:660px}.offset9{margin-left:740px}.offset10{margin-left:820px}.offset11{margin-left:900px}.offset12{margin-left:980px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0}.row-fluid:after{clear:both}.row-fluid [class*=span]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%}.row-fluid [class*=span]:first-child{margin-left:0}.row-fluid .controls-row [class*=span]+[class*=span]{margin-left:2.127659574468085%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .span2{width:14.893617021276595%;*width:14.840
 425531914892%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span4{width:31.91489361702128%;*width:31.861702127659576%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-
 left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset7{margin-left:61.702127659574465%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.57446808510638%;*margin-left:59.46808510638298%}.row-fluid .offset8{margin-left:70.21276595744
 68%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}[class*=span].hide,.row-fluid [class*=span].hide{display:none}[class*=span].pull-right,.row-fluid [class*=span].pull-right{float:right}.container{m
 argin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;content:"";line-height:0}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:700}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:gray}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10p
 x 0;font-family:inherit;font-weight:700;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;*zoom:1;padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:700}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;co
 ntent:"";line-height:0}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquo
 te:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:nowrap}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;marg
 in-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:400;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type=text],input[type=password],input[type=datetime],input[type=datetime-local],input[type=date],input[type=month],input[type=time],input[type=week],input[type=number],input[type=email],input[type=url],input[type=search],input[type=tel],input[type=color],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;vertical-align:middle}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type=text],input[type=password],input[type=datetime],input[type=datetime-loca
 l],input[type=date],input[type=month],input[type=time],input[type=week],input[type=number],input[type=email],input[type=url],input[type=search],input[type=tel],input[type=color],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type=text]:focus,input[type=password]:focus,input[type=datetime]:focus,input[type=datetime-local]:focus,input[type=date]:focus,input[type=month]:focus,input[type=time]:focus,input[type=week]:focus,input[type=number]:focus,input[type=email]:focus,input[type=url]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=color]:focus,.uneditable-input:focus{border-c
 olor:rgba(82,168,236,.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6)}input[type=radio],input[type=checkbox]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal}input[type=file],input[type=image],input[type=submit],input[type=reset],input[type=button],input[type=radio],input[type=checkbox]{width:auto}select,input[type=file]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;border:1px solid #ccc;background-color:#fff}select[multiple],select[size]{height:auto}select:focus,input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inse
 t 0 1px 2px rgba(0,0,0,.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.025);box-shadow:inset 0 1px 2px rgba(0,0,0,.025);cursor:not-allowed}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type=radio],.checkbox input[type=checkbox]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}
 input[class*=span],select[class*=span],textarea[class*=span],.uneditable-input[class*=span],.row-fluid input[class*=span],.row-fluid select[class*=span],.row-fluid textarea[class*=span],.row-fluid .uneditable-input[class*=span]{float:none;margin-left:0}.input-append input[class*=span],.input-append .uneditable-input[class*=span],.input-prepend input[class*=span],.input-prepend .uneditable-input[class*=span],.row-fluid input[class*=span],.row-fluid select[class*=span],.row-fluid textarea[class*=span],.row-fluid .uneditable-input[class*=span],.row-fluid .input-prepend [class*=span],.row-fluid .input-append [class*=span]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*=span]+[class*=span]{margin-left:20px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span4,textarea.span4,.uneditable-input.span4{width
 :286px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0}.controls-row:after{clear:both}.controls-row [class*=span],.row-fluid .controls-row [class*=span]{float:left}.controls-row .checkbox[class*=span],.controls-row .radio[class*=span]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type=radio][disabled],input[
 type=checkbox][disabled],input[type=radio][readonly],input[type=checkbox][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e}.control-grou
 p.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392}.control-group.e
 rror .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7a
 ba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7ab5d3}.control-gro
 up.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;vertical-align:middle;font-size:0;white-space:nowrap}.input-append input,
 .input-append select,.input-append .uneditable-input,.input-append .dropdown-menu,.input-append .popover,.input-prepend input,.input-prepend select,.input-prepend .uneditable-input,.input-prepend .dropdown-menu,.input-prepend .popover{font-size:14px}.input-append input,.input-append select,.input-append .uneditable-input,.input-prepend input,.input-prepend select,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-append select:focus,.input-append .uneditable-input:focus,.input-prepend input:focus,.input-prepend select:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:400;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px 
 solid #ccc}.input-append .add-on,.input-append .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .add-on,.input-prepend .btn,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add
 -on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{ma
 rgin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 
 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-search textarea,.form-search select,.form-search .help-inline,.form-search .uneditable-input,.form-search .input-prepend,.form-search .input-append,.form-inline input,.form-inline textarea,.form-inline select,.form-inline .help-inline,.form-inline .uneditable-input,.form-inline .input-prepend,.form-inline .input-append,.form-horizontal input,.form-horizontal textarea,.form-horizontal select,.form-horizontal .help-inline,.form-horizontal .uneditable-input,.form-horizontal .input-prepend,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.fo
 rm-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type=radio],.form-search .checkbox input[type=checkbox],.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizont
 al select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:700}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;bo
 rder-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px}.table-bordered thead:first-child tr:first-child>th:last-
 child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;-moz-border-r
 adius-bottomright:4px;border-bottom-right-radius:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;-moz-
 border-radius-topright:4px;border-top-right-radius:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*=span],table th[class*=span],.row-fluid table td[class*=span],.row-fluid table th[class*=span]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:non
 e;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^=icon-],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url(../img/glyphicons-halflings.png);background-position:14px 14px;background-repeat:no-repeat;margin-top:1px}.icon-white,.nav-pills>.active>a>[clas
 s^=icon-],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^=icon-],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^=icon-],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^=icon-],.dropdown-menu>li>a:focus>[class^=icon-],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^=icon-],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^=icon-],.dropdown-submenu:focus>a>[class^=icon-],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url(../img/glyphicons-halflings-white.png)}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{
 background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{backgr
 ound-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -
 48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-28
 8px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.
 icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{background-position:-216px -120px;width:16px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{backgr
 ound-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px;width:16px}.icon-folder-open{background-position:-408px -120px;width:16px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{backg
 round-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-we
 bkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c
 ,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF0088CC', endColorstr='#FF0077B3', GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF0088CC', endColorstr='#FF0077B3', GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoratio
 n:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:default}.open{*z-index:1000}.open>.dropdown-menu{display:block}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px;-moz-border-radius:0 6px 6px;border-radius:0 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after
 {display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0
 ,.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:700;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;fo
 nt-size:14px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFE6E6E6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border:1px solid #ccc;*border:0;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2)
 ,0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(
 0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^=icon-],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^=icon-],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^=icon-],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=butto
 n].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#006ccc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF0088CC', endColorstr='#FF0044CC', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#04c;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff
 ;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#f9a732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFBB450', endColorstr='#FFF89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-col
 or:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#da4e49;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEE5F5B', endColorstr='#FFBD362F', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*back
 ground-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#5bb65b;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF62C462', endColorstr='#FF51A351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-colo
 r:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#49afcd;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5BC0DE', endColorstr='#FF2F96B4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.bt
 n-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#363636;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF444444', endColorstr='#FF222222', GradientType=0);border-color:#222 #222 #000;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#222;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#090909 \9}button.btn,i
 nput[type=submit].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type=submit].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type=submit].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type=submit].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type=submit].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{border-color:transparent;cursor:pointer;color:#08c;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;whit
 e-space:nowrap;*margin-left:.3em}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bo
 ttom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(
 255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px}.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406
 }.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px}.btn-group-vertical>.btn:first-child{-webkit-border
 -radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-success h4{color:#468847}.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.a
 lert-danger h4,.alert-error h4{color:#b94a48}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-left:0;margin-bottom:20px;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:700;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -
 1px 0 rgba(0,0,0,.2);background-color:#08c}.nav-list [class^=icon-],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-tabs:after,.nav-pills:before,.nav-pills:after{display:table;content:"";line-height:0}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;backgro
 und-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;bor
 der-bottom-left-radius:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{border-color:#ddd;z-index:2}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{border-top-color:#08c;border-bottom-color:#08c;margin-top:6px}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dr
 opdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 
 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-bottom-color:transparent;border-top-color:#ddd}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right
 >.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;background-color:transparent;cursor:default}.navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2}.navbar-inner{min-height:40px;padding-left:20px;padding-right:20px;background-color:#f9f9f9;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f
 2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF2F2F2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,.065);box-shadow:0 1px 4px rgba(0,0,0,.065);*zoom:1}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{float:left;display:block;padding:10px 20px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-left:1px solid #f2f2f2;border-rig
 ht:1px solid #fff}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type=image],.navbar-form input[type=checkbox],.navbar-form input[type=radio]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helveti
 ca Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:400;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px r
 gba(0,0,0,.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333;text-decoration:none}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e6e6e6;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,.125);box-shadow:inset 0 3px 8px rgba(0,0,0,.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin
 -right:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ededed;background-image:-moz-linear-gradient(top,#f2f2f2,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#f2f2f2,#e6e6e6);background-image:-o-linear-gradient(top,#f2f2f2,#e6e6e6);background-image:linear-gradient(to bottom,#f2f2f2,#e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF2F2F2', endColorstr='#FFE6E6E6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.075)}.navbar .btn-navbar:
 hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e6e6e6;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,.25);box-shadow:0 1px 0 rgba(0,0,0,.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:9px}.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bott
 om:6px solid #fff;position:absolute;top:-6px;left:10px}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);border-bottom:0;bottom:-7px;top:auto}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #fff;border-bottom:0;bottom:-6px;top:auto}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e6e6e6;color:#555}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.d
 ropdown-menu.pull-right{left:auto;right:0}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF222222', endColorstr='#FF11111
 1', GradientType=0);border-color:#252525}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-inverse .brand:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:hover,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-left-color:#111;border-right-color:#222}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111;color:#fff}.
 navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-que
 ry:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);-moz-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15);outline:0}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF151515', endColorstr='#FF040404', GradientType=0)
 ;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #fff}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb .active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-bor
 der-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;background-color:transparent;cursor:default}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz
 -border-radius-bottomleft:4px;border-bottom-left-radius:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bo
 ttomright:6px;border-bottom-right-radius:6px}.pagination-mini ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>a,.pagination-small ul>li:first-child>span{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px}.pagination-mini ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>a,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;list-style:none;text-align:center;*zoom:1}.pager:befor
 e,.pager:after{display:table;content:"";line-height:0}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:default}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);*border:1px solid #999;-webkit-bord
 er-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:0}.modal.fade{-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out;top:-25%}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box
 -shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;*zoom:1}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-
 style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-le
 ft:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:trans

<TRUNCATED>


[11/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/chunk.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/chunk.js b/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/chunk.js
deleted file mode 100644
index 59c6a26..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/chunk.js
+++ /dev/null
@@ -1,221 +0,0 @@
-var Binary = require('bson').Binary,
-  ObjectID = require('bson').ObjectID;
-
-/**
- * Class for representing a single chunk in GridFS.
- *
- * @class
- *
- * @param file {GridStore} The {@link GridStore} object holding this chunk.
- * @param mongoObject {object} The mongo object representation of this chunk.
- *
- * @throws Error when the type of data field for {@link mongoObject} is not
- *     supported. Currently supported types for data field are instances of
- *     {@link String}, {@link Array}, {@link Binary} and {@link Binary}
- *     from the bson module
- *
- * @see Chunk#buildMongoObject
- */
-var Chunk = exports.Chunk = function(file, mongoObject, writeConcern) {
-  if(!(this instanceof Chunk)) return new Chunk(file, mongoObject);
-
-  this.file = file;
-  var self = this;
-  var mongoObjectFinal = mongoObject == null ? {} : mongoObject;
-  this.writeConcern = writeConcern || {w:1};
-  this.objectId = mongoObjectFinal._id == null ? new ObjectID() : mongoObjectFinal._id;
-  this.chunkNumber = mongoObjectFinal.n == null ? 0 : mongoObjectFinal.n;
-  this.data = new Binary();
-
-  if(mongoObjectFinal.data == null) {
-  } else if(typeof mongoObjectFinal.data == "string") {
-    var buffer = new Buffer(mongoObjectFinal.data.length);
-    buffer.write(mongoObjectFinal.data, 'binary', 0);
-    this.data = new Binary(buffer);
-  } else if(Array.isArray(mongoObjectFinal.data)) {
-    var buffer = new Buffer(mongoObjectFinal.data.length);
-    buffer.write(mongoObjectFinal.data.join(''), 'binary', 0);
-    this.data = new Binary(buffer);
-  } else if(mongoObjectFinal.data instanceof Binary || Object.prototype.toString.call(mongoObjectFinal.data) == "[object Binary]") {
-    this.data = mongoObjectFinal.data;
-  } else if(Buffer.isBuffer(mongoObjectFinal.data)) {
-  } else {
-    throw Error("Illegal chunk format");
-  }
-  // Update position
-  this.internalPosition = 0;
-};
-
-/**
- * Writes a data to this object and advance the read/write head.
- *
- * @param data {string} the data to write 
- * @param callback {function(*, GridStore)} This will be called after executing
- *     this method. The first parameter will contain null and the second one
- *     will contain a reference to this object.
- */
-Chunk.prototype.write = function(data, callback) {
-  this.data.write(data, this.internalPosition);
-  this.internalPosition = this.data.length();
-  if(callback != null) return callback(null, this);
-  return this;
-};
-
-/**
- * Reads data and advances the read/write head.
- *
- * @param length {number} The length of data to read.
- *
- * @return {string} The data read if the given length will not exceed the end of
- *     the chunk. Returns an empty String otherwise.
- */
-Chunk.prototype.read = function(length) {
-  // Default to full read if no index defined
-  length = length == null || length == 0 ? this.length() : length;
-
-  if(this.length() - this.internalPosition + 1 >= length) {
-    var data = this.data.read(this.internalPosition, length);
-    this.internalPosition = this.internalPosition + length;
-    return data;
-  } else {
-    return '';
-  }
-};
-
-Chunk.prototype.readSlice = function(length) {
-  if ((this.length() - this.internalPosition) >= length) {
-    var data = null;
-    if (this.data.buffer != null) { //Pure BSON
-      data = this.data.buffer.slice(this.internalPosition, this.internalPosition + length);
-    } else { //Native BSON
-      data = new Buffer(length);
-      length = this.data.readInto(data, this.internalPosition);
-    }
-    this.internalPosition = this.internalPosition + length;
-    return data;
-  } else {
-    return null;
-  }
-};
-
-/**
- * Checks if the read/write head is at the end.
- *
- * @return {boolean} Whether the read/write head has reached the end of this
- *     chunk.
- */
-Chunk.prototype.eof = function() {
-  return this.internalPosition == this.length() ? true : false;
-};
-
-/**
- * Reads one character from the data of this chunk and advances the read/write
- * head.
- *
- * @return {string} a single character data read if the the read/write head is
- *     not at the end of the chunk. Returns an empty String otherwise.
- */
-Chunk.prototype.getc = function() {
-  return this.read(1);
-};
-
-/**
- * Clears the contents of the data in this chunk and resets the read/write head
- * to the initial position.
- */
-Chunk.prototype.rewind = function() {
-  this.internalPosition = 0;
-  this.data = new Binary();
-};
-
-/**
- * Saves this chunk to the database. Also overwrites existing entries having the
- * same id as this chunk.
- *
- * @param callback {function(*, GridStore)} This will be called after executing
- *     this method. The first parameter will contain null and the second one
- *     will contain a reference to this object.
- */
-Chunk.prototype.save = function(callback) {
-  var self = this;
-
-  self.file.chunkCollection(function(err, collection) {
-    if(err) return callback(err);
-
-    collection.remove({'_id':self.objectId}, self.writeConcern, function(err, result) {
-      if(err) return callback(err);
-
-      if(self.data.length() > 0) {
-        self.buildMongoObject(function(mongoObject) {
-          var options = {forceServerObjectId:true};
-          for(var name in self.writeConcern) {
-            options[name] = self.writeConcern[name];
-          }
-
-          collection.insert(mongoObject, options, function(err, collection) {
-            callback(err, self);
-          });
-        });
-      } else {
-        callback(null, self);
-      }
-    });
-  });
-};
-
-/**
- * Creates a mongoDB object representation of this chunk.
- *
- * @param callback {function(Object)} This will be called after executing this 
- *     method. The object will be passed to the first parameter and will have
- *     the structure:
- *        
- *        <pre><code>
- *        {
- *          '_id' : , // {number} id for this chunk
- *          'files_id' : , // {number} foreign key to the file collection
- *          'n' : , // {number} chunk number
- *          'data' : , // {bson#Binary} the chunk data itself
- *        }
- *        </code></pre>
- *
- * @see <a href="http://www.mongodb.org/display/DOCS/GridFS+Specification#GridFSSpecification-{{chunks}}">MongoDB GridFS Chunk Object Structure</a>
- */
-Chunk.prototype.buildMongoObject = function(callback) {
-  var mongoObject = {
-    'files_id': this.file.fileId,
-    'n': this.chunkNumber,
-    'data': this.data};
-  // If we are saving using a specific ObjectId
-  if(this.objectId != null) mongoObject._id = this.objectId;
-
-  callback(mongoObject);
-};
-
-/**
- * @return {number} the length of the data
- */
-Chunk.prototype.length = function() {
-  return this.data.length();
-};
-
-/**
- * The position of the read/write head
- * @name position
- * @lends Chunk#
- * @field
- */
-Object.defineProperty(Chunk.prototype, "position", { enumerable: true
-  , get: function () {
-      return this.internalPosition;
-    }
-  , set: function(value) {
-      this.internalPosition = value;
-    }
-});
-
-/**
- * The default chunk size
- * @constant
- */
-Chunk.DEFAULT_CHUNK_SIZE = 1024 * 256;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/grid.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/grid.js b/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/grid.js
deleted file mode 100644
index aa695b7..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/grid.js
+++ /dev/null
@@ -1,103 +0,0 @@
-var GridStore = require('./gridstore').GridStore,
-  ObjectID = require('bson').ObjectID;
-
-/**
- * A class representation of a simple Grid interface.
- *
- * @class Represents the Grid.
- * @param {Db} db A database instance to interact with.
- * @param {String} [fsName] optional different root collection for GridFS.
- * @return {Grid}
- */
-function Grid(db, fsName) {
-
-  if(!(this instanceof Grid)) return new Grid(db, fsName);
-
-  this.db = db;
-  this.fsName = fsName == null ? GridStore.DEFAULT_ROOT_COLLECTION : fsName;
-}
-
-/**
- * Puts binary data to the grid
- *
- * Options
- *  - **_id** {Any}, unique id for this file
- *  - **root** {String}, root collection to use. Defaults to **{GridStore.DEFAULT_ROOT_COLLECTION}**.
- *  - **content_type** {String}, mime type of the file. Defaults to **{GridStore.DEFAULT_CONTENT_TYPE}**.
- *  - **chunk_size** {Number}, size for the chunk. Defaults to **{Chunk.DEFAULT_CHUNK_SIZE}**.
- *  - **metadata** {Object}, arbitrary data the user wants to store.
- *
- * @param {Buffer} data buffer with Binary Data.
- * @param {Object} [options] the options for the files.
- * @param {Function} callback this will be called after this method is executed. The first parameter will contain an Error object if an error occured or null otherwise. The second parameter will contain a reference to this object.
- * @return {null}
- * @api public
- */
-Grid.prototype.put = function(data, options, callback) {
-  var self = this;
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = args.pop();
-  options = args.length ? args.shift() : {};
-  // If root is not defined add our default one
-  options['root'] = options['root'] == null ? this.fsName : options['root'];
-
-  // Return if we don't have a buffer object as data
-  if(!(Buffer.isBuffer(data))) return callback(new Error("Data object must be a buffer object"), null);
-  // Get filename if we are using it
-  var filename = options['filename'] || null;
-  // Get id if we are using it
-  var id = options['_id'] || null;
-  // Create gridstore
-  var gridStore = new GridStore(this.db, id, filename, "w", options);
-  gridStore.open(function(err, gridStore) {
-    if(err) return callback(err, null);
-
-    gridStore.write(data, function(err, result) {
-      if(err) return callback(err, null);
-
-      gridStore.close(function(err, result) {
-        if(err) return callback(err, null);
-        callback(null, result);
-      })
-    })
-  })
-}
-
-/**
- * Get binary data to the grid
- *
- * @param {Any} id for file.
- * @param {Function} callback this will be called after this method is executed. The first parameter will contain an Error object if an error occured or null otherwise. The second parameter will contain a reference to this object.
- * @return {null}
- * @api public
- */
-Grid.prototype.get = function(id, callback) {
-  // Create gridstore
-  var gridStore = new GridStore(this.db, id, null, "r", {root:this.fsName});
-  gridStore.open(function(err, gridStore) {
-    if(err) return callback(err, null);
-
-    // Return the data
-    gridStore.read(function(err, data) {
-      return callback(err, data)
-    });
-  })
-}
-
-/**
- * Delete file from grid
- *
- * @param {Any} id for file.
- * @param {Function} callback this will be called after this method is executed. The first parameter will contain an Error object if an error occured or null otherwise. The second parameter will contain a reference to this object.
- * @return {null}
- * @api public
- */
-Grid.prototype.delete = function(id, callback) {
-  // Create gridstore
-  GridStore.unlink(this.db, id, {root:this.fsName}, function(err, result) {
-    if(err) return callback(err, false);
-    return callback(null, true);
-  });
-}
-
-exports.Grid = Grid;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js b/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js
deleted file mode 100644
index 57767ae..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js
+++ /dev/null
@@ -1,1546 +0,0 @@
-/**
- * @fileOverview GridFS is a tool for MongoDB to store files to the database.
- * Because of the restrictions of the object size the database can hold, a
- * facility to split a file into several chunks is needed. The {@link GridStore}
- * class offers a simplified api to interact with files while managing the
- * chunks of split files behind the scenes. More information about GridFS can be
- * found <a href="http://www.mongodb.org/display/DOCS/GridFS">here</a>.
- */
-var Chunk = require('./chunk').Chunk,
-  DbCommand = require('../commands/db_command').DbCommand,
-  ObjectID = require('bson').ObjectID,
-  Buffer = require('buffer').Buffer,
-  fs = require('fs'),
-  timers = require('timers'),
-  util = require('util'),
-  inherits = util.inherits,
-  ReadStream = require('./readstream').ReadStream,
-  Stream = require('stream');
-
-// Set processor, setImmediate if 0.10 otherwise nextTick
-var processor = require('../utils').processor();
-
-var REFERENCE_BY_FILENAME = 0,
-  REFERENCE_BY_ID = 1;
-
-/**
- * A class representation of a file stored in GridFS.
- *
- * Modes
- *  - **"r"** - read only. This is the default mode.
- *  - **"w"** - write in truncate mode. Existing data will be overwriten.
- *  - **w+"** - write in edit mode.
- *
- * Options
- *  - **root** {String}, root collection to use. Defaults to **{GridStore.DEFAULT_ROOT_COLLECTION}**.
- *  - **content_type** {String}, mime type of the file. Defaults to **{GridStore.DEFAULT_CONTENT_TYPE}**.
- *  - **chunk_size** {Number}, size for the chunk. Defaults to **{Chunk.DEFAULT_CHUNK_SIZE}**.
- *  - **metadata** {Object}, arbitrary data the user wants to store.
- *  - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *  - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write
- *  - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option)
- *  - **fsync**, (Boolean, default:false) write waits for fsync before returning
- *  - **journal**, (Boolean, default:false) write waits for journal sync before returning
- *
- * @class Represents the GridStore.
- * @param {Db} db A database instance to interact with.
- * @param {Any} [id] optional unique id for this file
- * @param {String} [filename] optional filename for this file, no unique constrain on the field
- * @param {String} mode set the mode for this file.
- * @param {Object} options optional properties to specify.
- * @return {GridStore}
- */
-var GridStore = function GridStore(db, id, filename, mode, options) {
-  if(!(this instanceof GridStore)) return new GridStore(db, id, filename, mode, options);
-
-  var self = this;
-  this.db = db;
-
-  // Call stream constructor
-  if(typeof Stream == 'function') {
-    Stream.call(this);
-  } else {
-    // 0.4.X backward compatibility fix
-    Stream.Stream.call(this);
-  }
-
-  // Handle options
-  if(typeof options === 'undefined') options = {};
-  // Handle mode
-  if(typeof mode === 'undefined') {
-    mode = filename;
-    filename = undefined;
-  } else if(typeof mode == 'object') {
-    options = mode;
-    mode = filename;
-    filename = undefined;
-  }
-
-  if(id instanceof ObjectID) {
-    this.referenceBy = REFERENCE_BY_ID;
-    this.fileId = id;
-    this.filename = filename;
-  } else if(typeof filename == 'undefined') {
-    this.referenceBy = REFERENCE_BY_FILENAME;
-    this.filename = id;
-    if (mode.indexOf('w') != null) {
-      this.fileId = new ObjectID();
-    }
-  } else {
-    this.referenceBy = REFERENCE_BY_ID;
-    this.fileId = id;
-    this.filename = filename;
-  }
-
-  // Set up the rest
-  this.mode = mode == null ? "r" : mode;
-  this.options = options == null ? {w:1} : options;
-  
-  // If we have no write concerns set w:1 as default
-  if(this.options.w == null 
-    && this.options.j == null
-    && this.options.fsync == null) this.options.w = 1;
-
-  // Set the root if overridden
-  this.root = this.options['root'] == null ? exports.GridStore.DEFAULT_ROOT_COLLECTION : this.options['root'];
-  this.position = 0;
-  this.readPreference = this.options.readPreference || 'primary';
-  this.writeConcern =  _getWriteConcern(this, this.options);
-  // Set default chunk size
-  this.internalChunkSize = this.options['chunkSize'] == null ? Chunk.DEFAULT_CHUNK_SIZE : this.options['chunkSize'];
-}
-
-/**
- *  Code for the streaming capabilities of the gridstore object
- *  Most code from Aaron heckmanns project https://github.com/aheckmann/gridfs-stream
- *  Modified to work on the gridstore object itself
- *  @ignore
- */
-if(typeof Stream == 'function') {
-  GridStore.prototype = { __proto__: Stream.prototype }
-} else {
-  // Node 0.4.X compatibility code
-  GridStore.prototype = { __proto__: Stream.Stream.prototype }
-}
-
-// Move pipe to _pipe
-GridStore.prototype._pipe = GridStore.prototype.pipe;
-
-/**
- * Opens the file from the database and initialize this object. Also creates a
- * new one if file does not exist.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain an **{Error}** object and the second parameter will be null if an error occured. Otherwise, the first parameter will be null and the second will contain the reference to this object.
- * @return {null}
- * @api public
- */
-GridStore.prototype.open = function(callback) {
-  if( this.mode != "w" && this.mode != "w+" && this.mode != "r"){
-    callback(new Error("Illegal mode " + this.mode), null);
-    return;
-  }
-
-  var self = this;
-  // If we are writing we need to ensure we have the right indexes for md5's
-  if((self.mode == "w" || self.mode == "w+")) {
-    // Get files collection
-    self.collection(function(err, collection) {
-      if(err) return callback(err);
-
-      // Put index on filename
-      collection.ensureIndex([['filename', 1]], function(err, index) {
-        if(err) return callback(err);
-
-        // Get chunk collection
-        self.chunkCollection(function(err, chunkCollection) {
-          if(err) return callback(err);
-
-          // Ensure index on chunk collection
-          chunkCollection.ensureIndex([['files_id', 1], ['n', 1]], function(err, index) {
-            if(err) return callback(err);
-            _open(self, callback);
-          });
-        });
-      });
-    });
-  } else {
-    // Open the gridstore
-    _open(self, callback);
-  }
-};
-
-/**
- * Hidding the _open function
- * @ignore
- * @api private
- */
-var _open = function(self, callback) {
-  self.collection(function(err, collection) {
-    if(err!==null) {
-      callback(new Error("at collection: "+err), null);
-      return;
-    }
-
-    // Create the query
-    var query = self.referenceBy == REFERENCE_BY_ID ? {_id:self.fileId} : {filename:self.filename};
-    query = null == self.fileId && this.filename == null ? null : query;
-
-    // Fetch the chunks
-    if(query != null) {
-      collection.find(query, {readPreference:self.readPreference}, function(err, cursor) {
-        if(err) return error(err);
-
-        // Fetch the file
-        cursor.nextObject(function(err, doc) {
-          if(err) return error(err);
-
-          // Check if the collection for the files exists otherwise prepare the new one
-          if(doc != null) {
-            self.fileId = doc._id;
-            self.filename = doc.filename;
-            self.contentType = doc.contentType;
-            self.internalChunkSize = doc.chunkSize;
-            self.uploadDate = doc.uploadDate;
-            self.aliases = doc.aliases;
-            self.length = doc.length;
-            self.metadata = doc.metadata;
-            self.internalMd5 = doc.md5;
-          } else if (self.mode != 'r') {
-            self.fileId = self.fileId == null ? new ObjectID() : self.fileId;
-            self.contentType = exports.GridStore.DEFAULT_CONTENT_TYPE;
-            self.internalChunkSize = self.internalChunkSize == null ? Chunk.DEFAULT_CHUNK_SIZE : self.internalChunkSize;
-            self.length = 0;
-          } else {
-            self.length = 0;
-            var txtId = self.fileId instanceof ObjectID ? self.fileId.toHexString() : self.fileId;
-            return error(new Error((self.referenceBy == REFERENCE_BY_ID ? txtId : self.filename) + " does not exist", self));
-          }
-
-          // Process the mode of the object
-          if(self.mode == "r") {
-            nthChunk(self, 0, function(err, chunk) {
-              if(err) return error(err);
-              self.currentChunk = chunk;
-              self.position = 0;
-              callback(null, self);
-            });
-          } else if(self.mode == "w") {
-            // Delete any existing chunks
-            deleteChunks(self, function(err, result) {
-              if(err) return error(err);
-              self.currentChunk = new Chunk(self, {'n':0}, self.writeConcern);
-              self.contentType = self.options['content_type'] == null ? self.contentType : self.options['content_type'];
-              self.internalChunkSize = self.options['chunk_size'] == null ? self.internalChunkSize : self.options['chunk_size'];
-              self.metadata = self.options['metadata'] == null ? self.metadata : self.options['metadata'];
-              self.position = 0;
-              callback(null, self);
-            });
-          } else if(self.mode == "w+") {
-            nthChunk(self, lastChunkNumber(self), function(err, chunk) {
-              if(err) return error(err);
-              // Set the current chunk
-              self.currentChunk = chunk == null ? new Chunk(self, {'n':0}, self.writeConcern) : chunk;
-              self.currentChunk.position = self.currentChunk.data.length();
-              self.metadata = self.options['metadata'] == null ? self.metadata : self.options['metadata'];
-              self.position = self.length;
-              callback(null, self);
-            });
-          }
-        });
-      });
-    } else {
-      // Write only mode
-      self.fileId = null == self.fileId ? new ObjectID() : self.fileId;
-      self.contentType = exports.GridStore.DEFAULT_CONTENT_TYPE;
-      self.internalChunkSize = self.internalChunkSize == null ? Chunk.DEFAULT_CHUNK_SIZE : self.internalChunkSize;
-      self.length = 0;
-
-      self.chunkCollection(function(err, collection2) {
-        if(err) return error(err);
-
-        // No file exists set up write mode
-        if(self.mode == "w") {
-          // Delete any existing chunks
-          deleteChunks(self, function(err, result) {
-            if(err) return error(err);
-            self.currentChunk = new Chunk(self, {'n':0}, self.writeConcern);
-            self.contentType = self.options['content_type'] == null ? self.contentType : self.options['content_type'];
-            self.internalChunkSize = self.options['chunk_size'] == null ? self.internalChunkSize : self.options['chunk_size'];
-            self.metadata = self.options['metadata'] == null ? self.metadata : self.options['metadata'];
-            self.position = 0;
-            callback(null, self);
-          });
-        } else if(self.mode == "w+") {
-          nthChunk(self, lastChunkNumber(self), function(err, chunk) {
-            if(err) return error(err);
-            // Set the current chunk
-            self.currentChunk = chunk == null ? new Chunk(self, {'n':0}, self.writeConcern) : chunk;
-            self.currentChunk.position = self.currentChunk.data.length();
-            self.metadata = self.options['metadata'] == null ? self.metadata : self.options['metadata'];
-            self.position = self.length;
-            callback(null, self);
-          });
-        }
-      });
-    }
-  });
-
-  // only pass error to callback once
-  function error (err) {
-    if(error.err) return;
-    callback(error.err = err);
-  }
-};
-
-/**
- * Stores a file from the file system to the GridFS database.
- *
- * @param {String|Buffer|FileHandle} file the file to store.
- * @param {Function} callback this will be called after this method is executed. The first parameter will be null and the the second will contain the reference to this object.
- * @return {null}
- * @api public
- */
-GridStore.prototype.writeFile = function (file, callback) {
-  var self = this;
-  if (typeof file === 'string') {
-    fs.open(file, 'r', function (err, fd) {
-      if(err) return callback(err);
-      self.writeFile(fd, callback);
-    });
-    return;
-  }
-
-  self.open(function (err, self) {
-    if(err) return callback(err, self);
-
-    fs.fstat(file, function (err, stats) {
-      if(err) return callback(err, self);
-
-      var offset = 0;
-      var index = 0;
-      var numberOfChunksLeft = Math.min(stats.size / self.chunkSize);
-
-      // Write a chunk
-      var writeChunk = function() {
-        fs.read(file, self.chunkSize, offset, 'binary', function(err, data, bytesRead) {
-          if(err) return callback(err, self);
-
-          offset = offset + bytesRead;
-
-          // Create a new chunk for the data
-          var chunk = new Chunk(self, {n:index++}, self.writeConcern);
-          chunk.write(data, function(err, chunk) {
-            if(err) return callback(err, self);
-
-            chunk.save(function(err, result) {
-              if(err) return callback(err, self);
-
-              self.position = self.position + data.length;
-
-              // Point to current chunk
-              self.currentChunk = chunk;
-
-              if(offset >= stats.size) {
-                fs.close(file);
-                self.close(function(err, result) {
-                  if(err) return callback(err, self);
-                  return callback(null, self);
-                });
-              } else {
-                return processor(writeChunk);
-              }
-            });
-          });
-        });
-      }
-
-      // Process the first write
-      processor(writeChunk);
-    });
-  });
-};
-
-/**
- * Writes some data. This method will work properly only if initialized with mode
- * "w" or "w+".
- *
- * @param string {string} The data to write.
- * @param close {boolean=false} opt_argument Closes this file after writing if
- *     true.
- * @param callback {function(*, GridStore)} This will be called after executing
- *     this method. The first parameter will contain null and the second one
- *     will contain a reference to this object.
- *
- * @ignore
- * @api private
- */
-var writeBuffer = function(self, buffer, close, callback) {
-  if(typeof close === "function") { callback = close; close = null; }
-  var finalClose = (close == null) ? false : close;
-
-  if(self.mode[0] != "w") {
-    callback(new Error((self.referenceBy == REFERENCE_BY_ID ? self.toHexString() : self.filename) + " not opened for writing"), null);
-  } else {
-    if(self.currentChunk.position + buffer.length >= self.chunkSize) {
-      // Write out the current Chunk and then keep writing until we have less data left than a chunkSize left
-      // to a new chunk (recursively)
-      var previousChunkNumber = self.currentChunk.chunkNumber;
-      var leftOverDataSize = self.chunkSize - self.currentChunk.position;
-      var firstChunkData = buffer.slice(0, leftOverDataSize);
-      var leftOverData = buffer.slice(leftOverDataSize);
-      // A list of chunks to write out
-      var chunksToWrite = [self.currentChunk.write(firstChunkData)];
-      // If we have more data left than the chunk size let's keep writing new chunks
-      while(leftOverData.length >= self.chunkSize) {
-        // Create a new chunk and write to it
-        var newChunk = new Chunk(self, {'n': (previousChunkNumber + 1)}, self.writeConcern);
-        var firstChunkData = leftOverData.slice(0, self.chunkSize);
-        leftOverData = leftOverData.slice(self.chunkSize);
-        // Update chunk number
-        previousChunkNumber = previousChunkNumber + 1;
-        // Write data
-        newChunk.write(firstChunkData);
-        // Push chunk to save list
-        chunksToWrite.push(newChunk);
-      }
-
-      // Set current chunk with remaining data
-      self.currentChunk = new Chunk(self, {'n': (previousChunkNumber + 1)}, self.writeConcern);
-      // If we have left over data write it
-      if(leftOverData.length > 0) self.currentChunk.write(leftOverData);
-
-      // Update the position for the gridstore
-      self.position = self.position + buffer.length;
-      // Total number of chunks to write
-      var numberOfChunksToWrite = chunksToWrite.length;
-      // Write out all the chunks and then return
-      for(var i = 0; i < chunksToWrite.length; i++) {
-        var chunk = chunksToWrite[i];
-        chunk.save(function(err, result) {
-          if(err) return callback(err);
-
-          numberOfChunksToWrite = numberOfChunksToWrite - 1;
-
-          if(numberOfChunksToWrite <= 0) {
-            return callback(null, self);
-          }
-        })
-      }
-    } else {
-      // Update the position for the gridstore
-      self.position = self.position + buffer.length;
-      // We have less data than the chunk size just write it and callback
-      self.currentChunk.write(buffer);
-      callback(null, self);
-    }
-  }
-};
-
-/**
- * Creates a mongoDB object representation of this object.
- *
- * @param callback {function(object)} This will be called after executing this
- *     method. The object will be passed to the first parameter and will have
- *     the structure:
- *
- *        <pre><code>
- *        {
- *          '_id' : , // {number} id for this file
- *          'filename' : , // {string} name for this file
- *          'contentType' : , // {string} mime type for this file
- *          'length' : , // {number} size of this file?
- *          'chunksize' : , // {number} chunk size used by this file
- *          'uploadDate' : , // {Date}
- *          'aliases' : , // {array of string}
- *          'metadata' : , // {string}
- *        }
- *        </code></pre>
- *
- * @ignore
- * @api private
- */
-var buildMongoObject = function(self, callback) {
-  // Calcuate the length
-  var mongoObject = {
-    '_id': self.fileId,
-    'filename': self.filename,
-    'contentType': self.contentType,
-    'length': self.position ? self.position : 0,
-    'chunkSize': self.chunkSize,
-    'uploadDate': self.uploadDate,
-    'aliases': self.aliases,
-    'metadata': self.metadata
-  };
-
-  var md5Command = {filemd5:self.fileId, root:self.root};
-  self.db.command(md5Command, function(err, results) {
-    mongoObject.md5 = results.md5;
-    callback(mongoObject);
-  });
-};
-
-/**
- * Saves this file to the database. This will overwrite the old entry if it
- * already exists. This will work properly only if mode was initialized to
- * "w" or "w+".
- *
- * @param {Function} callback this will be called after executing this method. Passes an **{Error}** object to the first parameter and null to the second if an error occured. Otherwise, passes null to the first and a reference to this object to the second.
- * @return {null}
- * @api public
- */
-GridStore.prototype.close = function(callback) {
-  var self = this;
-
-  if(self.mode[0] == "w") {
-    if(self.currentChunk != null && self.currentChunk.position > 0) {
-      self.currentChunk.save(function(err, chunk) {
-        if(err && typeof callback == 'function') return callback(err);
-
-        self.collection(function(err, files) {
-          if(err && typeof callback == 'function') return callback(err);
-
-          // Build the mongo object
-          if(self.uploadDate != null) {
-            files.remove({'_id':self.fileId}, {safe:true}, function(err, collection) {
-              if(err && typeof callback == 'function') return callback(err);
-
-              buildMongoObject(self, function(mongoObject) {
-                files.save(mongoObject, self.writeConcern, function(err) {
-                  if(typeof callback == 'function')
-                    callback(err, mongoObject);
-                });
-              });
-            });
-          } else {
-            self.uploadDate = new Date();
-            buildMongoObject(self, function(mongoObject) {
-              files.save(mongoObject, self.writeConcern, function(err) {
-                if(typeof callback == 'function')
-                  callback(err, mongoObject);
-              });
-            });
-          }
-        });
-      });
-    } else {
-      self.collection(function(err, files) {
-        if(err && typeof callback == 'function') return callback(err);
-
-        self.uploadDate = new Date();
-        buildMongoObject(self, function(mongoObject) {
-          files.save(mongoObject, self.writeConcern, function(err) {
-            if(typeof callback == 'function')
-              callback(err, mongoObject);
-          });
-        });
-      });
-    }
-  } else if(self.mode[0] == "r") {
-    if(typeof callback == 'function')
-      callback(null, null);
-  } else {
-    if(typeof callback == 'function')
-      callback(new Error("Illegal mode " + self.mode), null);
-  }
-};
-
-/**
- * Gets the nth chunk of this file.
- *
- * @param chunkNumber {number} The nth chunk to retrieve.
- * @param callback {function(*, Chunk|object)} This will be called after
- *     executing this method. null will be passed to the first parameter while
- *     a new {@link Chunk} instance will be passed to the second parameter if
- *     the chunk was found or an empty object {} if not.
- *
- * @ignore
- * @api private
- */
-var nthChunk = function(self, chunkNumber, callback) {
-  self.chunkCollection(function(err, collection) {
-    if(err) return callback(err);
-
-    collection.find({'files_id':self.fileId, 'n':chunkNumber}, {readPreference: self.readPreference}, function(err, cursor) {
-      if(err) return callback(err);
-
-      cursor.nextObject(function(err, chunk) {
-        if(err) return callback(err);
-
-        var finalChunk = chunk == null ? {} : chunk;
-        callback(null, new Chunk(self, finalChunk, self.writeConcern));
-      });
-    });
-  });
-};
-
-/**
- *
- * @ignore
- * @api private
- */
-GridStore.prototype._nthChunk = function(chunkNumber, callback) {
-  nthChunk(this, chunkNumber, callback);
-}
-
-/**
- * @return {Number} The last chunk number of this file.
- *
- * @ignore
- * @api private
- */
-var lastChunkNumber = function(self) {
-  return Math.floor(self.length/self.chunkSize);
-};
-
-/**
- * Retrieve this file's chunks collection.
- *
- * @param {Function} callback this will be called after executing this method. An exception object will be passed to the first parameter when an error occured or null otherwise. A new **{Collection}** object will be passed to the second parameter if no error occured.
- * @return {null}
- * @api public
- */
-GridStore.prototype.chunkCollection = function(callback) {
-  this.db.collection((this.root + ".chunks"), callback);
-};
-
-/**
- * Deletes all the chunks of this file in the database.
- *
- * @param callback {function(*, boolean)} This will be called after this method
- *     executes. Passes null to the first and true to the second argument.
- *
- * @ignore
- * @api private
- */
-var deleteChunks = function(self, callback) {
-  if(self.fileId != null) {
-    self.chunkCollection(function(err, collection) {
-      if(err) return callback(err, false);
-      collection.remove({'files_id':self.fileId}, {safe:true}, function(err, result) {
-        if(err) return callback(err, false);
-        callback(null, true);
-      });
-    });
-  } else {
-    callback(null, true);
-  }
-};
-
-/**
- * Deletes all the chunks of this file in the database.
- *
- * @param {Function} callback this will be called after this method executes. Passes null to the first and true to the second argument.
- * @return {null}
- * @api public
- */
-GridStore.prototype.unlink = function(callback) {
-  var self = this;
-  deleteChunks(this, function(err) {
-    if(err!==null) {
-      err.message = "at deleteChunks: " + err.message;
-      return callback(err);
-    }
-
-    self.collection(function(err, collection) {
-      if(err!==null) {
-        err.message = "at collection: " + err.message;
-        return callback(err);
-      }
-
-      collection.remove({'_id':self.fileId}, {safe:true}, function(err) {
-        callback(err, self);
-      });
-    });
-  });
-};
-
-/**
- * Retrieves the file collection associated with this object.
- *
- * @param {Function} callback this will be called after executing this method. An exception object will be passed to the first parameter when an error occured or null otherwise. A new **{Collection}** object will be passed to the second parameter if no error occured.
- * @return {null}
- * @api public
- */
-GridStore.prototype.collection = function(callback) {
-  this.db.collection(this.root + ".files", callback);
-};
-
-/**
- * Reads the data of this file.
- *
- * @param {String} [separator] the character to be recognized as the newline separator.
- * @param {Function} callback This will be called after this method is executed. The first parameter will be null and the second parameter will contain an array of strings representing the entire data, each element representing a line including the separator character.
- * @return {null}
- * @api public
- */
-GridStore.prototype.readlines = function(separator, callback) {
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  separator = args.length ? args.shift() : "\n";
-
-  this.read(function(err, data) {
-    if(err) return callback(err);
-
-    var items = data.toString().split(separator);
-    items = items.length > 0 ? items.splice(0, items.length - 1) : [];
-    for(var i = 0; i < items.length; i++) {
-      items[i] = items[i] + separator;
-    }
-
-    callback(null, items);
-  });
-};
-
-/**
- * Deletes all the chunks of this file in the database if mode was set to "w" or
- * "w+" and resets the read/write head to the initial position.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain null and the second one will contain a reference to this object.
- * @return {null}
- * @api public
- */
-GridStore.prototype.rewind = function(callback) {
-  var self = this;
-
-  if(this.currentChunk.chunkNumber != 0) {
-    if(this.mode[0] == "w") {
-      deleteChunks(self, function(err, gridStore) {
-        if(err) return callback(err);
-        self.currentChunk = new Chunk(self, {'n': 0}, self.writeConcern);
-        self.position = 0;
-        callback(null, self);
-      });
-    } else {
-      self.currentChunk(0, function(err, chunk) {
-        if(err) return callback(err);
-        self.currentChunk = chunk;
-        self.currentChunk.rewind();
-        self.position = 0;
-        callback(null, self);
-      });
-    }
-  } else {
-    self.currentChunk.rewind();
-    self.position = 0;
-    callback(null, self);
-  }
-};
-
-/**
- * Retrieves the contents of this file and advances the read/write head. Works with Buffers only.
- *
- * There are 3 signatures for this method:
- *
- * (callback)
- * (length, callback)
- * (length, buffer, callback)
- *
- * @param {Number} [length] the number of characters to read. Reads all the characters from the read/write head to the EOF if not specified.
- * @param {String|Buffer} [buffer] a string to hold temporary data. This is used for storing the string data read so far when recursively calling this method.
- * @param {Function} callback this will be called after this method is executed. null will be passed to the first parameter and a string containing the contents of the buffer concatenated with the contents read from this file will be passed to the second.
- * @return {null}
- * @api public
- */
-GridStore.prototype.read = function(length, buffer, callback) {
-  var self = this;
-
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-  length = args.length ? args.shift() : null;
-  buffer = args.length ? args.shift() : null;
-
-  // The data is a c-terminated string and thus the length - 1
-  var finalLength = length == null ? self.length - self.position : length;
-  var finalBuffer = buffer == null ? new Buffer(finalLength) : buffer;
-  // Add a index to buffer to keep track of writing position or apply current index
-  finalBuffer._index = buffer != null && buffer._index != null ? buffer._index : 0;
-
-  if((self.currentChunk.length() - self.currentChunk.position + finalBuffer._index) >= finalLength) {
-    var slice = self.currentChunk.readSlice(finalLength - finalBuffer._index);
-    // Copy content to final buffer
-    slice.copy(finalBuffer, finalBuffer._index);
-    // Update internal position
-    self.position = self.position + finalBuffer.length;
-    // Check if we don't have a file at all
-    if(finalLength == 0 && finalBuffer.length == 0) return callback(new Error("File does not exist"), null);
-    // Else return data
-    callback(null, finalBuffer);
-  } else {
-    var slice = self.currentChunk.readSlice(self.currentChunk.length() - self.currentChunk.position);
-    // Copy content to final buffer
-    slice.copy(finalBuffer, finalBuffer._index);
-    // Update index position
-    finalBuffer._index += slice.length;
-
-    // Load next chunk and read more
-    nthChunk(self, self.currentChunk.chunkNumber + 1, function(err, chunk) {
-      if(err) return callback(err);
-
-      if(chunk.length() > 0) {
-        self.currentChunk = chunk;
-        self.read(length, finalBuffer, callback);
-      } else {
-        if (finalBuffer._index > 0) {
-          callback(null, finalBuffer)
-        } else {
-          callback(new Error("no chunks found for file, possibly corrupt"), null);
-        }
-      }
-    });
-  }
-}
-
-/**
- * Retrieves the position of the read/write head of this file.
- *
- * @param {Function} callback This gets called after this method terminates. null is passed to the first parameter and the position is passed to the second.
- * @return {null}
- * @api public
- */
-GridStore.prototype.tell = function(callback) {
-  callback(null, this.position);
-};
-
-/**
- * Moves the read/write head to a new location.
- *
- * There are 3 signatures for this method
- *
- * Seek Location Modes
- *  - **GridStore.IO_SEEK_SET**, **(default)** set the position from the start of the file.
- *  - **GridStore.IO_SEEK_CUR**, set the position from the current position in the file.
- *  - **GridStore.IO_SEEK_END**, set the position from the end of the file.
- *
- * @param {Number} [position] the position to seek to
- * @param {Number} [seekLocation] seek mode. Use one of the Seek Location modes.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain null and the second one will contain a reference to this object.
- * @return {null}
- * @api public
- */
-GridStore.prototype.seek = function(position, seekLocation, callback) {
-  var self = this;
-
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = args.pop();
-  seekLocation = args.length ? args.shift() : null;
-
-  var seekLocationFinal = seekLocation == null ? exports.GridStore.IO_SEEK_SET : seekLocation;
-  var finalPosition = position;
-  var targetPosition = 0;
-
-  // Calculate the position
-  if(seekLocationFinal == exports.GridStore.IO_SEEK_CUR) {
-    targetPosition = self.position + finalPosition;
-  } else if(seekLocationFinal == exports.GridStore.IO_SEEK_END) {
-    targetPosition = self.length + finalPosition;
-  } else {
-    targetPosition = finalPosition;
-  }
-
-  // Get the chunk
-  var newChunkNumber = Math.floor(targetPosition/self.chunkSize);
-  if(newChunkNumber != self.currentChunk.chunkNumber) {
-    var seekChunk = function() {
-      nthChunk(self, newChunkNumber, function(err, chunk) {
-        self.currentChunk = chunk;
-        self.position = targetPosition;
-        self.currentChunk.position = (self.position % self.chunkSize);
-        callback(err, self);
-      });
-    };
-
-    if(self.mode[0] == 'w') {
-      self.currentChunk.save(function(err) {
-        if(err) return callback(err);
-        seekChunk();
-      });
-    } else {
-      seekChunk();
-    }
-  } else {
-    self.position = targetPosition;
-    self.currentChunk.position = (self.position % self.chunkSize);
-    callback(null, self);
-  }
-};
-
-/**
- * Verify if the file is at EOF.
- *
- * @return {Boolean} true if the read/write head is at the end of this file.
- * @api public
- */
-GridStore.prototype.eof = function() {
-  return this.position == this.length ? true : false;
-};
-
-/**
- * Retrieves a single character from this file.
- *
- * @param {Function} callback this gets called after this method is executed. Passes null to the first parameter and the character read to the second or null to the second if the read/write head is at the end of the file.
- * @return {null}
- * @api public
- */
-GridStore.prototype.getc = function(callback) {
-  var self = this;
-
-  if(self.eof()) {
-    callback(null, null);
-  } else if(self.currentChunk.eof()) {
-    nthChunk(self, self.currentChunk.chunkNumber + 1, function(err, chunk) {
-      self.currentChunk = chunk;
-      self.position = self.position + 1;
-      callback(err, self.currentChunk.getc());
-    });
-  } else {
-    self.position = self.position + 1;
-    callback(null, self.currentChunk.getc());
-  }
-};
-
-/**
- * Writes a string to the file with a newline character appended at the end if
- * the given string does not have one.
- *
- * @param {String} string the string to write.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain null and the second one will contain a reference to this object.
- * @return {null}
- * @api public
- */
-GridStore.prototype.puts = function(string, callback) {
-  var finalString = string.match(/\n$/) == null ? string + "\n" : string;
-  this.write(finalString, callback);
-};
-
-/**
- * Returns read stream based on this GridStore file
- *
- * Events
- *  - **data** {function(item) {}} the data event triggers when a document is ready.
- *  - **end** {function() {}} the end event triggers when there is no more documents available.
- *  - **close** {function() {}} the close event triggers when the stream is closed.
- *  - **error** {function(err) {}} the error event triggers if an error happens.
- *
- * @param {Boolean} autoclose if true current GridStore will be closed when EOF and 'close' event will be fired
- * @return {null}
- * @api public
- */
-GridStore.prototype.stream = function(autoclose) {
-  return new ReadStream(autoclose, this);
-};
-
-/**
-* The collection to be used for holding the files and chunks collection.
-*
-* @classconstant DEFAULT_ROOT_COLLECTION
-**/
-GridStore.DEFAULT_ROOT_COLLECTION = 'fs';
-
-/**
-* Default file mime type
-*
-* @classconstant DEFAULT_CONTENT_TYPE
-**/
-GridStore.DEFAULT_CONTENT_TYPE = 'binary/octet-stream';
-
-/**
-* Seek mode where the given length is absolute.
-*
-* @classconstant IO_SEEK_SET
-**/
-GridStore.IO_SEEK_SET = 0;
-
-/**
-* Seek mode where the given length is an offset to the current read/write head.
-*
-* @classconstant IO_SEEK_CUR
-**/
-GridStore.IO_SEEK_CUR = 1;
-
-/**
-* Seek mode where the given length is an offset to the end of the file.
-*
-* @classconstant IO_SEEK_END
-**/
-GridStore.IO_SEEK_END = 2;
-
-/**
- * Checks if a file exists in the database.
- *
- * Options
- *  - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).
- *
- * @param {Db} db the database to query.
- * @param {String} name the name of the file to look for.
- * @param {String} [rootCollection] the root collection that holds the files and chunks collection. Defaults to **{GridStore.DEFAULT_ROOT_COLLECTION}**.
- * @param {Function} callback this will be called after this method executes. Passes null to the first and passes true to the second if the file exists and false otherwise.
- * @return {null}
- * @api public
- */
-GridStore.exist = function(db, fileIdObject, rootCollection, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 2);
-  callback = args.pop();
-  rootCollection = args.length ? args.shift() : null;
-  options = args.length ? args.shift() : {};
-
-  // Establish read preference
-  var readPreference = options.readPreference || 'primary';
-  // Fetch collection
-  var rootCollectionFinal = rootCollection != null ? rootCollection : GridStore.DEFAULT_ROOT_COLLECTION;
-  db.collection(rootCollectionFinal + ".files", function(err, collection) {
-    if(err) return callback(err);
-
-    // Build query
-    var query = (typeof fileIdObject == 'string' || Object.prototype.toString.call(fileIdObject) == '[object RegExp]' )
-      ? {'filename':fileIdObject}
-      : {'_id':fileIdObject};    // Attempt to locate file
-
-    collection.find(query, {readPreference:readPreference}, function(err, cursor) {
-      if(err) return callback(err);
-
-      cursor.nextObject(function(err, item) {
-        if(err) return callback(err);
-        callback(null, item == null ? false : true);
-      });
-    });
-  });
-};
-
-/**
- * Gets the list of files stored in the GridFS.
- *
- * @param {Db} db the database to query.
- * @param {String} [rootCollection] the root collection that holds the files and chunks collection. Defaults to **{GridStore.DEFAULT_ROOT_COLLECTION}**.
- * @param {Function} callback this will be called after this method executes. Passes null to the first and passes an array of strings containing the names of the files.
- * @return {null}
- * @api public
- */
-GridStore.list = function(db, rootCollection, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = args.pop();
-  rootCollection = args.length ? args.shift() : null;
-  options = args.length ? args.shift() : {};
-
-  // Ensure we have correct values
-  if(rootCollection != null && typeof rootCollection == 'object') {
-    options = rootCollection;
-    rootCollection = null;
-  }
-
-  // Establish read preference
-  var readPreference = options.readPreference || 'primary';
-  // Check if we are returning by id not filename
-  var byId = options['id'] != null ? options['id'] : false;
-  // Fetch item
-  var rootCollectionFinal = rootCollection != null ? rootCollection : GridStore.DEFAULT_ROOT_COLLECTION;
-  var items = [];
-  db.collection((rootCollectionFinal + ".files"), function(err, collection) {
-    if(err) return callback(err);
-
-    collection.find({}, {readPreference:readPreference}, function(err, cursor) {
-      if(err) return callback(err);
-
-      cursor.each(function(err, item) {
-        if(item != null) {
-          items.push(byId ? item._id : item.filename);
-        } else {
-          callback(err, items);
-        }
-      });
-    });
-  });
-};
-
-/**
- * Reads the contents of a file.
- *
- * This method has the following signatures
- *
- * (db, name, callback)
- * (db, name, length, callback)
- * (db, name, length, offset, callback)
- * (db, name, length, offset, options, callback)
- *
- * @param {Db} db the database to query.
- * @param {String} name the name of the file.
- * @param {Number} [length] the size of data to read.
- * @param {Number} [offset] the offset from the head of the file of which to start reading from.
- * @param {Object} [options] the options for the file.
- * @param {Function} callback this will be called after this method executes. A string with an error message will be passed to the first parameter when the length and offset combination exceeds the length of the file while an Error object will be passed if other forms of error occured, otherwise, a string is passed. The second parameter will contain the data read if successful or null if an error occured.
- * @return {null}
- * @api public
- */
-GridStore.read = function(db, name, length, offset, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 2);
-  callback = args.pop();
-  length = args.length ? args.shift() : null;
-  offset = args.length ? args.shift() : null;
-  options = args.length ? args.shift() : null;
-
-  new GridStore(db, name, "r", options).open(function(err, gridStore) {
-    if(err) return callback(err);
-    // Make sure we are not reading out of bounds
-    if(offset && offset >= gridStore.length) return callback("offset larger than size of file", null);
-    if(length && length > gridStore.length) return callback("length is larger than the size of the file", null);
-    if(offset && length && (offset + length) > gridStore.length) return callback("offset and length is larger than the size of the file", null);
-
-    if(offset != null) {
-      gridStore.seek(offset, function(err, gridStore) {
-        if(err) return callback(err);
-        gridStore.read(length, callback);
-      });
-    } else {
-      gridStore.read(length, callback);
-    }
-  });
-};
-
-/**
- * Reads the data of this file.
- *
- * @param {Db} db the database to query.
- * @param {String} name the name of the file.
- * @param {String} [separator] the character to be recognized as the newline separator.
- * @param {Object} [options] file options.
- * @param {Function} callback this will be called after this method is executed. The first parameter will be null and the second parameter will contain an array of strings representing the entire data, each element representing a line including the separator character.
- * @return {null}
- * @api public
- */
-GridStore.readlines = function(db, name, separator, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 2);
-  callback = args.pop();
-  separator = args.length ? args.shift() : null;
-  options = args.length ? args.shift() : null;
-
-  var finalSeperator = separator == null ? "\n" : separator;
-  new GridStore(db, name, "r", options).open(function(err, gridStore) {
-    if(err) return callback(err);
-    gridStore.readlines(finalSeperator, callback);
-  });
-};
-
-/**
- * Deletes the chunks and metadata information of a file from GridFS.
- *
- * @param {Db} db the database to interact with.
- * @param {String|Array} names the name/names of the files to delete.
- * @param {Object} [options] the options for the files.
- * @callback {Function} this will be called after this method is executed. The first parameter will contain an Error object if an error occured or null otherwise. The second parameter will contain a reference to this object.
- * @return {null}
- * @api public
- */
-GridStore.unlink = function(db, names, options, callback) {
-  var self = this;
-  var args = Array.prototype.slice.call(arguments, 2);
-  callback = args.pop();
-  options = args.length ? args.shift() : null;
-
-  if(names.constructor == Array) {
-    var tc = 0;
-    for(var i = 0; i < names.length; i++) {
-      ++tc;
-      self.unlink(db, names[i], options, function(result) {
-        if(--tc == 0) {
-            callback(null, self);
-        }
-      });
-    }
-  } else {
-    new GridStore(db, names, "w", options).open(function(err, gridStore) {
-      if(err) return callback(err);
-      deleteChunks(gridStore, function(err, result) {
-        if(err) return callback(err);
-        gridStore.collection(function(err, collection) {
-          if(err) return callback(err);
-          collection.remove({'_id':gridStore.fileId}, {safe:true}, function(err, collection) {
-            callback(err, self);
-          });
-        });
-      });
-    });
-  }
-};
-
-/**
- * Returns the current chunksize of the file.
- *
- * @field chunkSize
- * @type {Number}
- * @getter
- * @setter
- * @property return number of bytes in the current chunkSize.
- */
-Object.defineProperty(GridStore.prototype, "chunkSize", { enumerable: true
- , get: function () {
-     return this.internalChunkSize;
-   }
- , set: function(value) {
-     if(!(this.mode[0] == "w" && this.position == 0 && this.uploadDate == null)) {
-       this.internalChunkSize = this.internalChunkSize;
-     } else {
-       this.internalChunkSize = value;
-     }
-   }
-});
-
-/**
- * The md5 checksum for this file.
- *
- * @field md5
- * @type {Number}
- * @getter
- * @setter
- * @property return this files md5 checksum.
- */
-Object.defineProperty(GridStore.prototype, "md5", { enumerable: true
- , get: function () {
-     return this.internalMd5;
-   }
-});
-
-/**
- *  GridStore Streaming methods
- *  Handles the correct return of the writeable stream status
- *  @ignore
- */
-Object.defineProperty(GridStore.prototype, "writable", { enumerable: true
- , get: function () {
-    if(this._writeable == null) {
-      this._writeable = this.mode != null && this.mode.indexOf("w") != -1;
-    }
-    // Return the _writeable
-    return this._writeable;
-  }
- , set: function(value) {
-    this._writeable = value;
-  }
-});
-
-/**
- *  Handles the correct return of the readable stream status
- *  @ignore
- */
-Object.defineProperty(GridStore.prototype, "readable", { enumerable: true
- , get: function () {
-    if(this._readable == null) {
-      this._readable = this.mode != null && this.mode.indexOf("r") != -1;
-    }
-    return this._readable;
-  }
- , set: function(value) {
-    this._readable = value;
-  }
-});
-
-GridStore.prototype.paused;
-
-/**
- *  Handles the correct setting of encoding for the stream
- *  @ignore
- */
-GridStore.prototype.setEncoding = fs.ReadStream.prototype.setEncoding;
-
-/**
- *  Handles the end events
- *  @ignore
- */
-GridStore.prototype.end = function end(data) {
-  var self = this;
-  // allow queued data to write before closing
-  if(!this.writable) return;
-  this.writable = false;
-
-  if(data) {
-    this._q.push(data);
-  }
-
-  this.on('drain', function () {
-    self.close(function (err) {
-      if (err) return _error(self, err);
-      self.emit('close');
-    });
-  });
-
-  _flush(self);
-}
-
-/**
- *  Handles the normal writes to gridstore
- *  @ignore
- */
-var _writeNormal = function(self, data, close, callback) {
-  // If we have a buffer write it using the writeBuffer method
-  if(Buffer.isBuffer(data)) {
-    return writeBuffer(self, data, close, callback);
-  } else {
-    // Wrap the string in a buffer and write
-    return writeBuffer(self, new Buffer(data, 'binary'), close, callback);
-  }
-}
-
-/**
- * Writes some data. This method will work properly only if initialized with mode "w" or "w+".
- *
- * @param {String|Buffer} data the data to write.
- * @param {Boolean} [close] closes this file after writing if set to true.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain null and the second one will contain a reference to this object.
- * @return {null}
- * @api public
- */
-GridStore.prototype.write = function write(data, close, callback) {
-  // If it's a normal write delegate the call
-  if(typeof close == 'function' || typeof callback == 'function') {
-    return _writeNormal(this, data, close, callback);
-  }
-
-  // Otherwise it's a stream write
-  var self = this;
-  if (!this.writable) {
-    throw new Error('GridWriteStream is not writable');
-  }
-
-  // queue data until we open.
-  if (!this._opened) {
-    // Set up a queue to save data until gridstore object is ready
-    this._q = [];
-    _openStream(self);
-    this._q.push(data);
-    return false;
-  }
-
-  // Push data to queue
-  this._q.push(data);
-  _flush(this);
-  // Return write successful
-  return true;
-}
-
-/**
- *  Handles the destroy part of a stream
- *  @ignore
- */
-GridStore.prototype.destroy = function destroy() {
-  // close and do not emit any more events. queued data is not sent.
-  if(!this.writable) return;
-  this.readable = false;
-  if(this.writable) {
-    this.writable = false;
-    this._q.length = 0;
-    this.emit('close');
-  }
-}
-
-/**
- *  Handles the destroySoon part of a stream
- *  @ignore
- */
-GridStore.prototype.destroySoon = function destroySoon() {
-  // as soon as write queue is drained, destroy.
-  // may call destroy immediately if no data is queued.
-  if(!this._q.length) {
-    return this.destroy();
-  }
-  this._destroying = true;
-}
-
-/**
- *  Handles the pipe part of the stream
- *  @ignore
- */
-GridStore.prototype.pipe = function(destination, options) {
-  var self = this;
-  // Open the gridstore
-  this.open(function(err, result) {
-    if(err) _errorRead(self, err);
-    if(!self.readable) return;
-    // Set up the pipe
-    self._pipe(destination, options);
-    // Emit the stream is open
-    self.emit('open');
-    // Read from the stream
-    _read(self);
-  })
-}
-
-/**
- *  Internal module methods
- *  @ignore
- */
-var _read = function _read(self) {
-  if (!self.readable || self.paused || self.reading) {
-    return;
-  }
-
-  self.reading = true;
-  var stream = self._stream = self.stream();
-  stream.paused = self.paused;
-
-  stream.on('data', function (data) {
-    if (self._decoder) {
-      var str = self._decoder.write(data);
-      if (str.length) self.emit('data', str);
-    } else {
-      self.emit('data', data);
-    }
-  });
-
-  stream.on('end', function (data) {
-    self.emit('end', data);
-  });
-
-  stream.on('error', function (data) {
-    _errorRead(self, data);
-  });
-
-  stream.on('close', function (data) {
-    self.emit('close', data);
-  });
-
-  self.pause = function () {
-    // native doesn't always pause.
-    // bypass its pause() method to hack it
-    self.paused = stream.paused = true;
-  }
-
-  self.resume = function () {
-    if(!self.paused) return;
-
-    self.paused = false;
-    stream.resume();
-    self.readable = stream.readable;
-  }
-
-  self.destroy = function () {
-    self.readable = false;
-    stream.destroy();
-  }
-}
-
-/**
- * pause
- * @ignore
- */
-GridStore.prototype.pause = function pause () {
-  // Overridden when the GridStore opens.
-  this.paused = true;
-}
-
-/**
- * resume
- * @ignore
- */
-GridStore.prototype.resume = function resume () {
-  // Overridden when the GridStore opens.
-  this.paused = false;
-}
-
-/**
- *  Internal module methods
- *  @ignore
- */
-var _flush = function _flush(self, _force) {
-  if (!self._opened) return;
-  if (!_force && self._flushing) return;
-  self._flushing = true;
-
-  // write the entire q to gridfs
-  if (!self._q.length) {
-    self._flushing = false;
-    self.emit('drain');
-
-    if(self._destroying) {
-      self.destroy();
-    }
-    return;
-  }
-
-  self.write(self._q.shift(), function (err, store) {
-    if (err) return _error(self, err);
-    self.emit('progress', store.position);
-    _flush(self, true);
-  });
-}
-
-var _openStream = function _openStream (self) {
-  if(self._opening == true) return;
-  self._opening = true;
-
-  // Open the store
-  self.open(function (err, gridstore) {
-    if (err) return _error(self, err);
-    self._opened = true;
-    self.emit('open');
-    _flush(self);
-  });
-}
-
-var _error = function _error(self, err) {
-  self.destroy();
-  self.emit('error', err);
-}
-
-var _errorRead = function _errorRead (self, err) {
-  self.readable = false;
-  self.emit('error', err);
-}
-
-/**
- * @ignore
- */
-var _hasWriteConcern = function(errorOptions) {
-  return errorOptions == true
-    || errorOptions.w > 0
-    || errorOptions.w == 'majority'
-    || errorOptions.j == true
-    || errorOptions.journal == true
-    || errorOptions.fsync == true
-}
-
-/**
- * @ignore
- */
-var _setWriteConcernHash = function(options) {
-  var finalOptions = {};
-  if(options.w != null) finalOptions.w = options.w;  
-  if(options.journal == true) finalOptions.j = options.journal;
-  if(options.j == true) finalOptions.j = options.j;
-  if(options.fsync == true) finalOptions.fsync = options.fsync;
-  if(options.wtimeout != null) finalOptions.wtimeout = options.wtimeout;  
-  return finalOptions;
-}
-
-/**
- * @ignore
- */
-var _getWriteConcern = function(self, options, callback) {
-  // Final options
-  var finalOptions = {w:1};
-  options = options || {};
-  // Local options verification
-  if(options.w != null || typeof options.j == 'boolean' || typeof options.journal == 'boolean' || typeof options.fsync == 'boolean') {
-    finalOptions = _setWriteConcernHash(options);
-  } else if(typeof options.safe == "boolean") {
-    finalOptions = {w: (options.safe ? 1 : 0)};
-  } else if(options.safe != null && typeof options.safe == 'object') {
-    finalOptions = _setWriteConcernHash(options.safe);
-  } else if(self.db.safe.w != null || typeof self.db.safe.j == 'boolean' || typeof self.db.safe.journal == 'boolean' || typeof self.db.safe.fsync == 'boolean') {
-    finalOptions = _setWriteConcernHash(self.db.safe);
-  } else if(self.db.options.w != null || typeof self.db.options.j == 'boolean' || typeof self.db.options.journal == 'boolean' || typeof self.db.options.fsync == 'boolean') {
-    finalOptions = _setWriteConcernHash(self.db.options);
-  } else if(typeof self.db.safe == "boolean") {
-    finalOptions = {w: (self.db.safe ? 1 : 0)};
-  }
-
-  // Ensure we don't have an invalid combination of write concerns
-  if(finalOptions.w < 1 
-    && (finalOptions.journal == true || finalOptions.j == true || finalOptions.fsync == true)) throw new Error("No acknowlegement using w < 1 cannot be combined with journal:true or fsync:true");
-
-  // Return the options
-  return finalOptions;
-}
-
-/**
- * @ignore
- * @api private
- */
-exports.GridStore = GridStore;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/readstream.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/readstream.js b/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/readstream.js
deleted file mode 100644
index 83ed96c..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/gridfs/readstream.js
+++ /dev/null
@@ -1,199 +0,0 @@
-var Stream = require('stream').Stream,
-  timers = require('timers'),
-  util = require('util');
-
-// Set processor, setImmediate if 0.10 otherwise nextTick
-var processor = require('../utils').processor();
-
-/**
- * ReadStream
- *
- * Returns a stream interface for the **file**.
- *
- * Events
- *  - **data** {function(item) {}} the data event triggers when a document is ready.
- *  - **end** {function() {}} the end event triggers when there is no more documents available.
- *  - **close** {function() {}} the close event triggers when the stream is closed.
- *  - **error** {function(err) {}} the error event triggers if an error happens.
- *
- * @class Represents a GridFS File Stream.
- * @param {Boolean} autoclose automatically close file when the stream reaches the end.
- * @param {GridStore} cursor a cursor object that the stream wraps.
- * @return {ReadStream}
- */
-function ReadStream(autoclose, gstore) {
-  if (!(this instanceof ReadStream)) return new ReadStream(autoclose, gstore);
-  Stream.call(this);
-
-  this.autoclose = !!autoclose;
-  this.gstore = gstore;
-
-  this.finalLength = gstore.length - gstore.position;
-  this.completedLength = 0;
-  this.currentChunkNumber = gstore.currentChunk.chunkNumber;
-
-  this.paused = false;
-  this.readable = true;
-  this.pendingChunk = null;
-  this.executing = false;  
-  this.destroyed = false;
-
-  // Calculate the number of chunks
-  this.numberOfChunks = Math.ceil(gstore.length/gstore.chunkSize);
-
-  // This seek start position inside the current chunk
-  this.seekStartPosition = gstore.position - (this.currentChunkNumber * gstore.chunkSize);
-  
-  var self = this;
-  processor(function() {
-    self._execute();
-  });
-};
-
-/**
- * Inherit from Stream
- * @ignore
- * @api private
- */
-ReadStream.prototype.__proto__ = Stream.prototype;
-
-/**
- * Flag stating whether or not this stream is readable.
- */
-ReadStream.prototype.readable;
-
-/**
- * Flag stating whether or not this stream is paused.
- */
-ReadStream.prototype.paused;
-
-/**
- * @ignore
- * @api private
- */
-ReadStream.prototype._execute = function() {
-  if(this.paused === true || this.readable === false) {
-    return;
-  }
-
-  var gstore = this.gstore;
-  var self = this;
-  // Set that we are executing
-  this.executing = true;
-
-  var last = false;
-  var toRead = 0;
-
-  if(gstore.currentChunk.chunkNumber >= (this.numberOfChunks - 1)) {
-    self.executing = false;    
-    last = true;    
-  }
-
-  // Data setup
-  var data = null;
-
-  // Read a slice (with seek set if none)
-  if(this.seekStartPosition > 0 && (gstore.currentChunk.length() - this.seekStartPosition) > 0) {
-    data = gstore.currentChunk.readSlice(gstore.currentChunk.length() - this.seekStartPosition);
-    this.seekStartPosition = 0;
-  } else {
-    data = gstore.currentChunk.readSlice(gstore.currentChunk.length());
-  }
-
-  // Return the data
-  if(data != null && gstore.currentChunk.chunkNumber == self.currentChunkNumber) {
-    self.currentChunkNumber = self.currentChunkNumber + 1;
-    self.completedLength += data.length;
-    self.pendingChunk = null;
-    self.emit("data", data);
-  }
-
-  if(last === true) {
-    self.readable = false;
-    self.emit("end");
-    
-    if(self.autoclose === true) {
-      if(gstore.mode[0] == "w") {
-        gstore.close(function(err, doc) {
-          if (err) {
-            console.log("############################## 0")
-            self.emit("error", err);
-            return;
-          }
-          self.readable = false;  
-          self.destroyed = true;        
-          self.emit("close", doc);
-        });
-      } else {
-        self.readable = false;
-        self.destroyed = true;        
-        self.emit("close");
-      }
-    }
-  } else {
-    gstore._nthChunk(gstore.currentChunk.chunkNumber + 1, function(err, chunk) {
-      if(err) {
-        self.readable = false;
-        if(self.listeners("error").length > 0)
-          self.emit("error", err);
-        self.executing = false;
-        return;
-      }
-
-      self.pendingChunk = chunk;
-      if(self.paused === true) {
-        self.executing = false;
-        return;
-      }
-
-      gstore.currentChunk = self.pendingChunk;
-      self._execute();        
-    });
-  }
-};
-
-/**
- * Pauses this stream, then no farther events will be fired.
- *
- * @ignore
- * @api public
- */
-ReadStream.prototype.pause = function() {
-  if(!this.executing) {
-    this.paused = true;    
-  }
-};
-
-/**
- * Destroys the stream, then no farther events will be fired.
- *
- * @ignore
- * @api public
- */
-ReadStream.prototype.destroy = function() {
-  if(this.destroyed) return;
-  this.destroyed = true;
-  this.readable = false;
-  // Emit close event
-  this.emit("close");
-};
-
-/**
- * Resumes this stream.
- *
- * @ignore
- * @api public
- */
-ReadStream.prototype.resume = function() {
-  if(this.paused === false || !this.readable) {
-    return;
-  }
-    
-  this.paused = false;
-  var self = this;
-  processor(function() {
-    self._execute();
-  });
-};
-
-exports.ReadStream = ReadStream;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/index.js b/web/demos/package/node_modules/mongodb/lib/mongodb/index.js
deleted file mode 100644
index 91d28df..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/index.js
+++ /dev/null
@@ -1,69 +0,0 @@
-try {
-  exports.BSONPure = require('bson').BSONPure;
-  exports.BSONNative = require('bson').BSONNative;
-} catch(err) {
-  // do nothing
-}
-
-// export the driver version
-exports.version = require('../../package').version;
-
-[ 'commands/base_command'
-  , 'admin'
-  , 'collection'
-  , 'connection/read_preference'
-  , 'connection/connection'
-  , 'connection/server'
-  , 'connection/mongos'
-  , 'connection/repl_set/repl_set'
-  , 'mongo_client'
-  , 'cursor'
-  , 'db'
-  , 'mongo_client'
-  , 'gridfs/grid'
-  ,	'gridfs/chunk'
-  , 'gridfs/gridstore'].forEach(function (path) {
-  	var module = require('./' + path);
-  	for (var i in module) {
-  		exports[i] = module[i];
-    }
-});
-
-// backwards compat
-exports.ReplSetServers = exports.ReplSet;
-// Add BSON Classes
-exports.Binary = require('bson').Binary;
-exports.Code = require('bson').Code;
-exports.DBRef = require('bson').DBRef;
-exports.Double = require('bson').Double;
-exports.Long = require('bson').Long;
-exports.MinKey = require('bson').MinKey;
-exports.MaxKey = require('bson').MaxKey;
-exports.ObjectID = require('bson').ObjectID;
-exports.Symbol = require('bson').Symbol;
-exports.Timestamp = require('bson').Timestamp;  
-// Add BSON Parser
-exports.BSON = require('bson').BSONPure.BSON;
-
-// Get the Db object
-var Db = require('./db').Db;
-// Set up the connect function
-var connect = Db.connect;
-var obj = connect;
-// Map all values to the exports value
-for(var name in exports) {
-  obj[name] = exports[name];
-}
-
-// Add the pure and native backward compatible functions
-exports.pure = exports.native = function() {
-  return obj;
-}
-
-// Map all values to the exports value
-for(var name in exports) {
-  connect[name] = exports[name];
-}
-
-// Set our exports to be the connect function
-module.exports = connect;


[81/98] [abbrv] incubator-apex-malhar git commit: Repeating groupId to workaround bug in versions:set

Posted by da...@apache.org.
Repeating groupId to workaround bug in versions:set


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/862e157e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/862e157e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/862e157e

Branch: refs/heads/master
Commit: 862e157e58e7851e019f31350cfa2e244b0af5f0
Parents: a2e3a73
Author: Thomas Weise <th...@datatorrent.com>
Authored: Fri Nov 6 00:04:31 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Fri Nov 6 00:04:31 2015 -0800

----------------------------------------------------------------------
 pom.xml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/862e157e/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index f76676a..d0220d3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,7 @@
     <version>3.2.0-incubating</version>
   </parent>
 
+  <groupId>org.apache.apex</groupId>
   <artifactId>malhar</artifactId>
   <version>3.2.0-incubating-SNAPSHOT</version>
   <packaging>pom</packaging>


[42/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/scripts/d63799f1.plugins.js
----------------------------------------------------------------------
diff --git a/web/demos/package/app/scripts/d63799f1.plugins.js b/web/demos/package/app/scripts/d63799f1.plugins.js
deleted file mode 100644
index edd1ef8..0000000
--- a/web/demos/package/app/scripts/d63799f1.plugins.js
+++ /dev/null
@@ -1,26 +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.
- */
-!function(a,b){function c(a){var b=a.length,c=ib.type(a);return ib.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||"function"!==c&&(0===b||"number"==typeof b&&b>0&&b-1 in a)}function d(a){var b=xb[a]={};return ib.each(a.match(kb)||[],function(a,c){b[c]=!0}),b}function e(a,c,d,e){if(ib.acceptData(a)){var f,g,h=ib.expando,i="string"==typeof c,j=a.nodeType,k=j?ib.cache:a,l=j?a[h]:a[h]&&h;if(l&&k[l]&&(e||k[l].data)||!i||d!==b)return l||(j?a[h]=l=_.pop()||ib.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=ib.noop)),("object"==typeof c||"function"==typeof c)&&(e?k[l]=ib.extend(k[l],c):k[l].data=ib.extend(k[l].data,c)),f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[ib.camelCase(c)]=d),i?(g=f[c],null==g&&(g=f[ib.camelCase(c)])):g=f,g}}function f(a,b,c){if(ib.acceptData(a)){var d,e,f,g=a.nodeType,i=g?ib.cache:a,j=g?a[ib.expando]:ib.expando;if(i[j]){if(b&&(f=c?i[j]:i[j].data)){ib.isArray(b)?b=b.concat(ib.map(b,ib.camelCase)):b in f?b=[b]:(b=ib.camelCase(b),b=b in f?[b]:b.split(" "));for(d=0,e
 =b.length;e>d;d++)delete f[b[d]];if(!(c?h:ib.isEmptyObject)(f))return}(c||(delete i[j].data,h(i[j])))&&(g?ib.cleanData([a],!0):ib.support.deleteExpando||i!=i.window?delete i[j]:i[j]=null)}}}function g(a,c,d){if(d===b&&1===a.nodeType){var e="data-"+c.replace(zb,"-$1").toLowerCase();if(d=a.getAttribute(e),"string"==typeof d){try{d="true"===d?!0:"false"===d?!1:"null"===d?null:+d+""===d?+d:yb.test(d)?ib.parseJSON(d):d}catch(f){}ib.data(a,c,d)}else d=b}return d}function h(a){var b;for(b in a)if(("data"!==b||!ib.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function i(){return!0}function j(){return!1}function k(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}function l(a,b,c){if(b=b||0,ib.isFunction(b))return ib.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return ib.grep(a,function(a){return a===b===c});if("string"==typeof b){var d=ib.grep(a,function(a){return 1===a.nodeType});if(Rb.test(b))return ib.filter(b,d,!c);b=ib.filter(b,d)}return ib.grep(a,funct
 ion(a){return ib.inArray(a,b)>=0===c})}function m(a){var b=Ub.split("|"),c=a.createDocumentFragment();if(c.createElement)for(;b.length;)c.createElement(b.pop());return c}function n(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function o(a){var b=a.getAttributeNode("type");return a.type=(b&&b.specified)+"/"+a.type,a}function p(a){var b=ec.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function q(a,b){for(var c,d=0;null!=(c=a[d]);d++)ib._data(c,"globalEval",!b||ib._data(b[d],"globalEval"))}function r(a,b){if(1===b.nodeType&&ib.hasData(a)){var c,d,e,f=ib._data(a),g=ib._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)ib.event.add(b,c,h[c][d])}g.data&&(g.data=ib.extend({},g.data))}}function s(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!ib.support.noCloneEvent&&b[ib.expando]){e=ib._data(b);for(d in e.events)ib.removeEvent(b,d,e.handle);b.removeAttribute(ib.expan
 do)}"script"===c&&b.text!==a.text?(o(b).text=a.text,p(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),ib.support.html5Clone&&a.innerHTML&&!ib.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&bc.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}function t(a,c){var d,e,f=0,g=typeof a.getElementsByTagName!==V?a.getElementsByTagName(c||"*"):typeof a.querySelectorAll!==V?a.querySelectorAll(c||"*"):b;if(!g)for(g=[],d=a.childNodes||a;null!=(e=d[f]);f++)!c||ib.nodeName(e,c)?g.push(e):ib.merge(g,t(e,c));return c===b||c&&ib.nodeName(a,c)?ib.merge([a],g):g}function u(a){bc.test(a.type)&&(a.defaultChecked=a.checked)}function v(a,b){if(b in a)return b;for(var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=yc.length;e--;)if(b=yc[e]+c,b in a)return b;return d}function w(a,b){return a=b||a,"none"===ib.css(a,"display")||!
 ib.contains(a.ownerDocument,a)}function x(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=ib._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&w(d)&&(f[g]=ib._data(d,"olddisplay",B(d.nodeName)))):f[g]||(e=w(d),(c&&"none"!==c||!e)&&ib._data(d,"olddisplay",e?c:ib.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function y(a,b,c){var d=rc.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function z(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=ib.css(a,c+xc[f],!0,e)),d?("content"===c&&(g-=ib.css(a,"padding"+xc[f],!0,e)),"margin"!==c&&(g-=ib.css(a,"border"+xc[f]+"Width",!0,e))):(g+=ib.css(a,"padding"+xc[f],!0,e),"padding"!==c&&(g+=ib.css(a,"border"+xc[f]+"Width",!0,e)));return g}function A(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=kc(a),g=
 ib.support.boxSizing&&"border-box"===ib.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=lc(a,b,f),(0>e||null==e)&&(e=a.style[b]),sc.test(e))return e;d=g&&(ib.support.boxSizingReliable||e===a.style[b]),e=parseFloat(e)||0}return e+z(a,b,c||(g?"border":"content"),d,f)+"px"}function B(a){var b=W,c=uc[a];return c||(c=C(a,b),"none"!==c&&c||(jc=(jc||ib("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(b.documentElement),b=(jc[0].contentWindow||jc[0].contentDocument).document,b.write("<!doctype html><html><body>"),b.close(),c=C(a,b),jc.detach()),uc[a]=c),c}function C(a,b){var c=ib(b.createElement(a)).appendTo(b.body),d=ib.css(c[0],"display");return c.remove(),d}function D(a,b,c,d){var e;if(ib.isArray(b))ib.each(b,function(b,e){c||Ac.test(a)?d(a,e):D(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==ib.type(b))d(a,b);else for(e in b)D(a+"["+e+"]",b[e],c,d)}function E(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");va
 r d,e=0,f=b.toLowerCase().match(kb)||[];if(ib.isFunction(c))for(;d=f[e++];)"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function F(a,b,c,d){function e(h){var i;return f[h]=!0,ib.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||g||f[j]?g?!(i=j):void 0:(b.dataTypes.unshift(j),e(j),!1)}),i}var f={},g=a===Rc;return e(b.dataTypes[0])||!f["*"]&&e("*")}function G(a,c){var d,e,f=ib.ajaxSettings.flatOptions||{};for(e in c)c[e]!==b&&((f[e]?a:d||(d={}))[e]=c[e]);return d&&ib.extend(!0,a,d),a}function H(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(h in k)h in d&&(c[k[h]]=d[h]);for(;"*"===j[0];)j.shift(),f===b&&(f=a.mimeType||c.getResponseHeader("Content-Type"));if(f)for(h in i)if(i[h]&&i[h].test(f)){j.unshift(h);break}if(j[0]in d)g=j[0];else{for(h in d){if(!j[0]||a.converters[h+" "+j[0]]){g=h;break}e||(e=h)}g=g||e}return g?(g!==j[0]&&j.unshift(g),d[g]):void 0}function I(a,b){var c,d,e,f,g={},h=0,i=a.dataTypes.slic
 e(),j=i[0];if(a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i[1])for(e in a.converters)g[e.toLowerCase()]=a.converters[e];for(;d=i[++h];)if("*"!==d){if("*"!==j&&j!==d){if(e=g[j+" "+d]||g["* "+d],!e)for(c in g)if(f=c.split(" "),f[1]===d&&(e=g[j+" "+f[0]]||g["* "+f[0]])){e===!0?e=g[c]:g[c]!==!0&&(d=f[0],i.splice(h--,0,d));break}if(e!==!0)if(e&&a["throws"])b=e(b);else try{b=e(b)}catch(k){return{state:"parsererror",error:e?k:"No conversion from "+j+" to "+d}}}j=d}return{state:"success",data:b}}function J(){try{return new a.XMLHttpRequest}catch(b){}}function K(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function L(){return setTimeout(function(){$c=b}),$c=ib.now()}function M(a,b){ib.each(b,function(b,c){for(var d=(ed[b]||[]).concat(ed["*"]),e=0,f=d.length;f>e;e++)if(d[e].call(a,b,c))return})}function N(a,b,c){var d,e,f=0,g=dd.length,h=ib.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$c||L(),c=Math.max(0,j.startTime+j.duration-b),d=c/
 j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:ib.extend({},b),opts:ib.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$c||L(),duration:c.duration,tweens:[],createTween:function(b,c){var d=ib.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(O(k,j.opts.specialEasing);g>f;f++)if(d=dd[f].call(j,a,k,j.opts))return d;return M(j,k),ib.isFunction(j.opts.start)&&j.opts.start.call(a,j),ib.fx.timer(ib.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function O(a,b){var c,d,e,f,g;for(e in a)if(d=ib.camelCase(e),f=b[d],c=a[e],ib.isArray(c)&&(f
 =c[1],c=a[e]=c[0]),e!==d&&(a[d]=c,delete a[e]),g=ib.cssHooks[d],g&&"expand"in g){c=g.expand(c),delete a[d];for(e in c)e in a||(a[e]=c[e],b[e]=f)}else b[d]=f}function P(a,b,c){var d,e,f,g,h,i,j,k,l,m=this,n=a.style,o={},p=[],q=a.nodeType&&w(a);c.queue||(k=ib._queueHooks(a,"fx"),null==k.unqueued&&(k.unqueued=0,l=k.empty.fire,k.empty.fire=function(){k.unqueued||l()}),k.unqueued++,m.always(function(){m.always(function(){k.unqueued--,ib.queue(a,"fx").length||k.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[n.overflow,n.overflowX,n.overflowY],"inline"===ib.css(a,"display")&&"none"===ib.css(a,"float")&&(ib.support.inlineBlockNeedsLayout&&"inline"!==B(a.nodeName)?n.zoom=1:n.display="inline-block")),c.overflow&&(n.overflow="hidden",ib.support.shrinkWrapBlocks||m.always(function(){n.overflow=c.overflow[0],n.overflowX=c.overflow[1],n.overflowY=c.overflow[2]}));for(e in b)if(g=b[e],ad.exec(g)){if(delete b[e],i=i||"toggle"===g,g===(q?"hide":"show"))continue;p.push(e)
 }if(f=p.length){h=ib._data(a,"fxshow")||ib._data(a,"fxshow",{}),"hidden"in h&&(q=h.hidden),i&&(h.hidden=!q),q?ib(a).show():m.done(function(){ib(a).hide()}),m.done(function(){var b;ib._removeData(a,"fxshow");for(b in o)ib.style(a,b,o[b])});for(e=0;f>e;e++)d=p[e],j=m.createTween(d,q?h[d]:0),o[d]=h[d]||ib.style(a,d),d in h||(h[d]=j.start,q&&(j.end=j.start,j.start="width"===d||"height"===d?1:0))}}function Q(a,b,c,d,e){return new Q.prototype.init(a,b,c,d,e)}function R(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=xc[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function S(a){return ib.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}var T,U,V=typeof b,W=a.document,X=a.location,Y=a.jQuery,Z=a.$,$={},_=[],ab="1.9.1",bb=_.concat,cb=_.push,db=_.slice,eb=_.indexOf,fb=$.toString,gb=$.hasOwnProperty,hb=ab.trim,ib=function(a,b){return new ib.fn.init(a,b,U)},jb=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,kb=/\S+/g,lb=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
 mb=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,nb=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,ob=/^[\],:{}\s]*$/,pb=/(?:^|:|,)(?:\s*\[)+/g,qb=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,rb=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,sb=/^-ms-/,tb=/-([\da-z])/gi,ub=function(a,b){return b.toUpperCase()},vb=function(a){(W.addEventListener||"load"===a.type||"complete"===W.readyState)&&(wb(),ib.ready())},wb=function(){W.addEventListener?(W.removeEventListener("DOMContentLoaded",vb,!1),a.removeEventListener("load",vb,!1)):(W.detachEvent("onreadystatechange",vb),a.detachEvent("onload",vb))};ib.fn=ib.prototype={jquery:ab,constructor:ib,init:function(a,c,d){var e,f;if(!a)return this;if("string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:mb.exec(a),!e||!e[1]&&c)return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a);if(e[1]){if(c=c instanceof ib?c[0]:c,ib.merge(this,ib.parseHTML(e[1],c&&c.nodeType?c.ownerDocument||c:W,!0)),nb.test(e[1])&&ib.isPlainOb
 ject(c))for(e in c)ib.isFunction(this[e])?this[e](c[e]):this.attr(e,c[e]);return this}if(f=W.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return d.find(a);this.length=1,this[0]=f}return this.context=W,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):ib.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),ib.makeArray(a,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return db.call(this)},get:function(a){return null==a?this.toArray():0>a?this[this.length+a]:this[a]},pushStack:function(a){var b=ib.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return ib.each(this,a,b)},ready:function(a){return ib.ready.promise().done(a),this},slice:function(){return this.pushStack(db.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this
 .pushStack(c>=0&&b>c?[this[c]]:[])},map:function(a){return this.pushStack(ib.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:cb,sort:[].sort,splice:[].splice},ib.fn.init.prototype=ib.fn,ib.extend=ib.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),"object"==typeof h||ib.isFunction(h)||(h={}),j===i&&(h=this,--i);j>i;i++)if(null!=(f=arguments[i]))for(e in f)a=h[e],d=f[e],h!==d&&(k&&d&&(ib.isPlainObject(d)||(c=ib.isArray(d)))?(c?(c=!1,g=a&&ib.isArray(a)?a:[]):g=a&&ib.isPlainObject(a)?a:{},h[e]=ib.extend(k,g,d)):d!==b&&(h[e]=d));return h},ib.extend({noConflict:function(b){return a.$===ib&&(a.$=Z),b&&a.jQuery===ib&&(a.jQuery=Y),ib},isReady:!1,readyWait:1,holdReady:function(a){a?ib.readyWait++:ib.ready(!0)},ready:function(a){if(a===!0?!--ib.readyWait:!ib.isReady){if(!W.body)return setTimeout(ib.ready);ib.isReady=!0,a!==!0&&--ib.readyW
 ait>0||(T.resolveWith(W,[ib]),ib.fn.trigger&&ib(W).trigger("ready").off("ready"))}},isFunction:function(a){return"function"===ib.type(a)},isArray:Array.isArray||function(a){return"array"===ib.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return null==a?String(a):"object"==typeof a||"function"==typeof a?$[fb.call(a)]||"object":typeof a},isPlainObject:function(a){if(!a||"object"!==ib.type(a)||a.nodeType||ib.isWindow(a))return!1;try{if(a.constructor&&!gb.call(a,"constructor")&&!gb.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||gb.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||W;var d=nb.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=ib.buildFragment([a],b,e),e&&ib(e).r
 emove(),ib.merge([],d.childNodes))},parseJSON:function(b){return a.JSON&&a.JSON.parse?a.JSON.parse(b):null===b?b:"string"==typeof b&&(b=ib.trim(b),b&&ob.test(b.replace(qb,"@").replace(rb,"]").replace(pb,"")))?new Function("return "+b)():void ib.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||"string"!=typeof c)return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return d&&d.documentElement&&!d.getElementsByTagName("parsererror").length||ib.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&ib.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(sb,"ms-").replace(tb,ub)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,d){var e,f=0,g=a.length,h=c(a);if(d){if(h)for(;g>f&&(e=b.apply(a[f],d),e!==!1);f++);else for(f in a)if(e=b.apply(a[f],d),e==
 =!1)break}else if(h)for(;g>f&&(e=b.call(a[f],f,a[f]),e!==!1);f++);else for(f in a)if(e=b.call(a[f],f,a[f]),e===!1)break;return a},trim:hb&&!hb.call("ļ»æĀ ")?function(a){return null==a?"":hb.call(a)}:function(a){return null==a?"":(a+"").replace(lb,"")},makeArray:function(a,b){var d=b||[];return null!=a&&(c(Object(a))?ib.merge(d,"string"==typeof a?[a]:a):cb.call(d,a)),d},inArray:function(a,b,c){var d;if(b){if(eb)return eb.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if("number"==typeof d)for(;d>f;f++)a[e++]=c[f];else for(;c[f]!==b;)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;for(c=!!c;g>f;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,b,d){var e,f=0,g=a.length,h=c(a),i=[];if(h)for(;g>f;f++)e=b(a[f],f,d),null!=e&&(i[i.length]=e);else for(f in a)e=b(a[f],f,d),null!=e&&(i[i.length]=e);return bb.apply([],i)},guid:1,proxy:function(
 a,c){var d,e,f;return"string"==typeof c&&(f=a[c],c=a,a=f),ib.isFunction(a)?(d=db.call(arguments,2),e=function(){return a.apply(c||this,d.concat(db.call(arguments)))},e.guid=a.guid=a.guid||ib.guid++,e):b},access:function(a,c,d,e,f,g,h){var i=0,j=a.length,k=null==d;if("object"===ib.type(d)){f=!0;for(i in d)ib.access(a,c,i,d[i],!0,g,h)}else if(e!==b&&(f=!0,ib.isFunction(e)||(h=!0),k&&(h?(c.call(a,e),c=null):(k=c,c=function(a,b,c){return k.call(ib(a),c)})),c))for(;j>i;i++)c(a[i],d,h?e:e.call(a[i],i,c(a[i],d)));return f?a:k?c.call(a):j?c(a[0],d):g},now:function(){return(new Date).getTime()}}),ib.ready.promise=function(b){if(!T)if(T=ib.Deferred(),"complete"===W.readyState)setTimeout(ib.ready);else if(W.addEventListener)W.addEventListener("DOMContentLoaded",vb,!1),a.addEventListener("load",vb,!1);else{W.attachEvent("onreadystatechange",vb),a.attachEvent("onload",vb);var c=!1;try{c=null==a.frameElement&&W.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!ib.isReady){try{c.doScroll(
 "left")}catch(a){return setTimeout(e,50)}wb(),ib.ready()}}()}return T.promise(b)},ib.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){$["[object "+b+"]"]=b.toLowerCase()}),U=ib(W);var xb={};ib.Callbacks=function(a){a="string"==typeof a?xb[a]||d(a):ib.extend({},a);var c,e,f,g,h,i,j=[],k=!a.once&&[],l=function(b){for(e=a.memory&&b,f=!0,h=i||0,i=0,g=j.length,c=!0;j&&g>h;h++)if(j[h].apply(b[0],b[1])===!1&&a.stopOnFalse){e=!1;break}c=!1,j&&(k?k.length&&l(k.shift()):e?j=[]:m.disable())},m={add:function(){if(j){var b=j.length;!function d(b){ib.each(b,function(b,c){var e=ib.type(c);"function"===e?a.unique&&m.has(c)||j.push(c):c&&c.length&&"string"!==e&&d(c)})}(arguments),c?g=j.length:e&&(i=b,l(e))}return this},remove:function(){return j&&ib.each(arguments,function(a,b){for(var d;(d=ib.inArray(b,j,d))>-1;)j.splice(d,1),c&&(g>=d&&g--,h>=d&&h--)}),this},has:function(a){return a?ib.inArray(a,j)>-1:!(!j||!j.length)},empty:function(){return j=[],this},
 disable:function(){return j=k=e=b,this},disabled:function(){return!j},lock:function(){return k=b,e||m.disable(),this},locked:function(){return!k},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],!j||f&&!k||(c?k.push(b):l(b)),this},fire:function(){return m.fireWith(this,arguments),this},fired:function(){return!!f}};return m},ib.extend({Deferred:function(a){var b=[["resolve","done",ib.Callbacks("once memory"),"resolved"],["reject","fail",ib.Callbacks("once memory"),"rejected"],["notify","progress",ib.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return ib.Deferred(function(c){ib.each(b,function(b,f){var g=f[0],h=ib.isFunction(a[b])&&a[b];e[f[1]](function(){var a=h&&h.apply(this,arguments);a&&ib.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[g+"With"](this===d?c.promise():this,h?[a]:arguments)})}),a=null}).promise()},pr
 omise:function(a){return null!=a?ib.extend(a,d):d}},e={};return d.pipe=d.then,ib.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b,c,d,e=0,f=db.call(arguments),g=f.length,h=1!==g||a&&ib.isFunction(a.promise)?g:0,i=1===h?a:ib.Deferred(),j=function(a,c,d){return function(e){c[a]=this,d[a]=arguments.length>1?db.call(arguments):e,d===b?i.notifyWith(c,d):--h||i.resolveWith(c,d)}};if(g>1)for(b=new Array(g),c=new Array(g),d=new Array(g);g>e;e++)f[e]&&ib.isFunction(f[e].promise)?f[e].promise().done(j(e,d,f)).fail(i.reject).progress(j(e,c,b)):--h;return h||i.resolveWith(d,f),i.promise()}}),ib.support=function(){var b,c,d,e,f,g,h,i,j,k,l=W.createElement("div");if(l.setAttribute("className","t"),l.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=l.ge
 tElementsByTagName("*"),d=l.getElementsByTagName("a")[0],!c||!d||!c.length)return{};f=W.createElement("select"),h=f.appendChild(W.createElement("option")),e=l.getElementsByTagName("input")[0],d.style.cssText="top:1px;float:left;opacity:.5",b={getSetAttribute:"t"!==l.className,leadingWhitespace:3===l.firstChild.nodeType,tbody:!l.getElementsByTagName("tbody").length,htmlSerialize:!!l.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:"/a"===d.getAttribute("href"),opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:!!e.value,optSelected:h.selected,enctype:!!W.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==W.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===W.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},e.checked=!0,b.noCloneChecked=e.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!h.di
 sabled;try{delete l.test}catch(m){b.deleteExpando=!1}e=W.createElement("input"),e.setAttribute("value",""),b.input=""===e.getAttribute("value"),e.value="t",e.setAttribute("type","radio"),b.radioValue="t"===e.value,e.setAttribute("checked","t"),e.setAttribute("name","t"),g=W.createDocumentFragment(),g.appendChild(e),b.appendChecked=e.checked,b.checkClone=g.cloneNode(!0).cloneNode(!0).lastChild.checked,l.attachEvent&&(l.attachEvent("onclick",function(){b.noCloneEvent=!1}),l.cloneNode(!0).click());for(k in{submit:!0,change:!0,focusin:!0})l.setAttribute(i="on"+k,"t"),b[k+"Bubbles"]=i in a||l.attributes[i].expando===!1;return l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",b.clearCloneStyle="content-box"===l.style.backgroundClip,ib(function(){var c,d,e,f="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",g=W.getElementsByTagName("body")[0];g&&(c=W.createElement("div"),c.style.cssText=
 "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",g.appendChild(c).appendChild(l),l.innerHTML="<table><tr><td></td><td>t</td></tr></table>",e=l.getElementsByTagName("td"),e[0].style.cssText="padding:0;margin:0;border:0;display:none",j=0===e[0].offsetHeight,e[0].style.display="",e[1].style.display="none",b.reliableHiddenOffsets=j&&0===e[0].offsetHeight,l.innerHTML="",l.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=4===l.offsetWidth,b.doesNotIncludeMarginInBodyOffset=1!==g.offsetTop,a.getComputedStyle&&(b.pixelPosition="1%"!==(a.getComputedStyle(l,null)||{}).top,b.boxSizingReliable="4px"===(a.getComputedStyle(l,null)||{width:"4px"}).width,d=l.appendChild(W.createElement("div")),d.style.cssText=l.style.cssText=f,d.style.marginRight=d.style.width="0",l.style.width="1px",b.reliableMarginRight=!parseFloat((a.getCo
 mputedStyle(d,null)||{}).marginRight)),typeof l.style.zoom!==V&&(l.innerHTML="",l.style.cssText=f+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=3===l.offsetWidth,l.style.display="block",l.innerHTML="<div></div>",l.firstChild.style.width="5px",b.shrinkWrapBlocks=3!==l.offsetWidth,b.inlineBlockNeedsLayout&&(g.style.zoom=1)),g.removeChild(c),c=l=e=d=null)}),c=f=g=h=d=e=null,b}();var yb=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,zb=/([A-Z])/g;ib.extend({cache:{},expando:"jQuery"+(ab+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?ib.cache[a[ib.expando]]:a[ib.expando],!!a&&!h(a)},data:function(a,b,c){return e(a,b,c)},removeData:function(a,b){return f(a,b)},_data:function(a,b,c){return e(a,b,c,!0)},_removeData:function(a,b){return f(a,b,!0)},acceptData:function(a){if(a.nodeType&&1!==a.nodeType&&9!==a.nodeType)return!1;var b=a.nodeName&&ib.noData[a.nodeName.toLowerCase()];r
 eturn!b||b!==!0&&a.getAttribute("classid")===b}}),ib.fn.extend({data:function(a,c){var d,e,f=this[0],h=0,i=null;if(a===b){if(this.length&&(i=ib.data(f),1===f.nodeType&&!ib._data(f,"parsedAttrs"))){for(d=f.attributes;h<d.length;h++)e=d[h].name,e.indexOf("data-")||(e=ib.camelCase(e.slice(5)),g(f,e,i[e]));ib._data(f,"parsedAttrs",!0)}return i}return"object"==typeof a?this.each(function(){ib.data(this,a)}):ib.access(this,function(c){return c===b?f?g(f,a,ib.data(f,a)):null:void this.each(function(){ib.data(this,a,c)})},null,c,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){ib.removeData(this,a)})}}),ib.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=ib._data(a,b),c&&(!d||ib.isArray(c)?d=ib._data(a,b,ib.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=ib.queue(a,b),d=c.length,e=c.shift(),f=ib._queueHooks(a,b),g=function(){ib.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),f.cur=e,e&&("fx"===b&&c.unshift("in
 progress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return ib._data(a,c)||ib._data(a,c,{empty:ib.Callbacks("once memory").add(function(){ib._removeData(a,b+"queue"),ib._removeData(a,c)})})}}),ib.fn.extend({queue:function(a,c){var d=2;return"string"!=typeof a&&(c=a,a="fx",d--),arguments.length<d?ib.queue(this[0],a):c===b?this:this.each(function(){var b=ib.queue(this,a,c);ib._queueHooks(this,a),"fx"===a&&"inprogress"!==b[0]&&ib.dequeue(this,a)})},dequeue:function(a){return this.each(function(){ib.dequeue(this,a)})},delay:function(a,b){return a=ib.fx?ib.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){var d,e=1,f=ib.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};for("string"!=typeof a&&(c=a,a=b),a=a||"fx";h--;)d=ib._data(g[h],a+"queueHooks"),d&&d.empty&&(e++,d.empt
 y.add(i));return i(),f.promise(c)}});var Ab,Bb,Cb=/[\t\r\n]/g,Db=/\r/g,Eb=/^(?:input|select|textarea|button|object)$/i,Fb=/^(?:a|area)$/i,Gb=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,Hb=/^(?:checked|selected)$/i,Ib=ib.support.getSetAttribute,Jb=ib.support.input;ib.fn.extend({attr:function(a,b){return ib.access(this,ib.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){ib.removeAttr(this,a)})},prop:function(a,b){return ib.access(this,ib.prop,a,b,arguments.length>1)},removeProp:function(a){return a=ib.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g=0,h=this.length,i="string"==typeof a&&a;if(ib.isFunction(a))return this.each(function(b){ib(this).addClass(a.call(this,b,this.className))});if(i)for(b=(a||"").match(kb)||[];h>g;g++)if(c=this[g],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(Cb," "):
 " ")){for(f=0;e=b[f++];)d.indexOf(" "+e+" ")<0&&(d+=e+" ");c.className=ib.trim(d)}return this},removeClass:function(a){var b,c,d,e,f,g=0,h=this.length,i=0===arguments.length||"string"==typeof a&&a;if(ib.isFunction(a))return this.each(function(b){ib(this).removeClass(a.call(this,b,this.className))});if(i)for(b=(a||"").match(kb)||[];h>g;g++)if(c=this[g],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(Cb," "):"")){for(f=0;e=b[f++];)for(;d.indexOf(" "+e+" ")>=0;)d=d.replace(" "+e+" "," ");c.className=a?ib.trim(d):""}return this},toggleClass:function(a,b){var c=typeof a,d="boolean"==typeof b;return this.each(ib.isFunction(a)?function(c){ib(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c)for(var e,f=0,g=ib(this),h=b,i=a.match(kb)||[];e=i[f++];)h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e);else(c===V||"boolean"===c)&&(this.className&&ib._data(this,"__className__",this.className),this.className=this.className||a===!1?"":ib._data(this,"__
 className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(Cb," ").indexOf(b)>=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];{if(arguments.length)return e=ib.isFunction(a),this.each(function(c){var f,g=ib(this);1===this.nodeType&&(f=e?a.call(this,c,g.val()):a,null==f?f="":"number"==typeof f?f+="":ib.isArray(f)&&(f=ib.map(f,function(a){return null==a?"":a+""})),d=ib.valHooks[this.type]||ib.valHooks[this.nodeName.toLowerCase()],d&&"set"in d&&d.set(this,f,"value")!==b||(this.value=f))});if(f)return d=ib.valHooks[f.type]||ib.valHooks[f.nodeName.toLowerCase()],d&&"get"in d&&(c=d.get(f,"value"))!==b?c:(c=f.value,"string"==typeof c?c.replace(Db,""):null==c?"":c)}}}),ib.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.l
 ength,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(ib.support.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&ib.nodeName(c.parentNode,"optgroup"))){if(b=ib(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c=ib.makeArray(b);return ib(a).find("option").each(function(){this.selected=ib.inArray(ib(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attr:function(a,c,d){var e,f,g,h=a.nodeType;if(a&&3!==h&&8!==h&&2!==h)return typeof a.getAttribute===V?ib.prop(a,c,d):(f=1!==h||!ib.isXMLDoc(a),f&&(c=c.toLowerCase(),e=ib.attrHooks[c]||(Gb.test(c)?Bb:Ab)),d===b?e&&f&&"get"in e&&null!==(g=e.get(a,c))?g:(typeof a.getAttribute!==V&&(g=a.getAttribute(c)),null==g?b:g):null!==d?e&&f&&"set"in e&&(g=e.set(a,d,c))!==b?g:(a.setAttribute(c,d+""),d):void ib.removeAttr(a,c))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(kb);if(f&&1===a.nodeType)for(;c=f[e++];)d=ib.propFix[c]||c,Gb.test(c)?!Ib&&Hb.test(c)?a[ib.camelCase("default-"+c)]=a[d]=
 !1:a[d]=!1:ib.attr(a,c,""),a.removeAttribute(Ib?c:d)},attrHooks:{type:{set:function(a,b){if(!ib.support.radioValue&&"radio"===b&&ib.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(a&&3!==h&&8!==h&&2!==h)return g=1!==h||!ib.isXMLDoc(a),g&&(c=ib.propFix[c]||c,f=ib.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&null!==(e=f.get(a,c))?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):Eb.test(a.nodeName)||Fb.test(a.nodeName)&&a.href?0:b}}}}),Bb={get:function(a,c){var d=ib.prop(a,c),e="boolean"==typeof d&&a.getAttribute(c),f="boolean
 "==typeof d?Jb&&Ib?null!=e:Hb.test(c)?a[ib.camelCase("default-"+c)]:!!e:a.getAttributeNode(c);return f&&f.value!==!1?c.toLowerCase():b
-},set:function(a,b,c){return b===!1?ib.removeAttr(a,c):Jb&&Ib||!Hb.test(c)?a.setAttribute(!Ib&&ib.propFix[c]||c,c):a[ib.camelCase("default-"+c)]=a[c]=!0,c}},Jb&&Ib||(ib.attrHooks.value={get:function(a,c){var d=a.getAttributeNode(c);return ib.nodeName(a,"input")?a.defaultValue:d&&d.specified?d.value:b},set:function(a,b,c){return ib.nodeName(a,"input")?void(a.defaultValue=b):Ab&&Ab.set(a,b,c)}}),Ib||(Ab=ib.valHooks.button={get:function(a,c){var d=a.getAttributeNode(c);return d&&("id"===c||"name"===c||"coords"===c?""!==d.value:d.specified)?d.value:b},set:function(a,c,d){var e=a.getAttributeNode(d);return e||a.setAttributeNode(e=a.ownerDocument.createAttribute(d)),e.value=c+="","value"===d||c===a.getAttribute(d)?c:b}},ib.attrHooks.contenteditable={get:Ab.get,set:function(a,b,c){Ab.set(a,""===b?!1:b,c)}},ib.each(["width","height"],function(a,b){ib.attrHooks[b]=ib.extend(ib.attrHooks[b],{set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}})})),ib.support.hrefNormalized||(i
 b.each(["href","src","width","height"],function(a,c){ib.attrHooks[c]=ib.extend(ib.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return null==d?b:d}})}),ib.each(["href","src"],function(a,b){ib.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}})),ib.support.style||(ib.attrHooks.style={get:function(a){return a.style.cssText||b},set:function(a,b){return a.style.cssText=b+""}}),ib.support.optSelected||(ib.propHooks.selected=ib.extend(ib.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),ib.support.enctype||(ib.propFix.enctype="encoding"),ib.support.checkOn||ib.each(["radio","checkbox"],function(){ib.valHooks[this]={get:function(a){return null===a.getAttribute("value")?"on":a.value}}}),ib.each(["radio","checkbox"],function(){ib.valHooks[this]=ib.extend(ib.valHooks[this],{set:function(a,b){return ib.isArray(b)?a.checked=ib.inArray(ib(a).val(),b)>=0:void 0}})});var Kb=/^(?:input|select|texta
 rea)$/i,Lb=/^key/,Mb=/^(?:mouse|contextmenu)|click/,Nb=/^(?:focusinfocus|focusoutblur)$/,Ob=/^([^.]*)(?:\.(.+)|)$/;ib.event={global:{},add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r=ib._data(a);if(r){for(d.handler&&(j=d,d=j.handler,f=j.selector),d.guid||(d.guid=ib.guid++),(h=r.events)||(h=r.events={}),(l=r.handle)||(l=r.handle=function(a){return typeof ib===V||a&&ib.event.triggered===a.type?b:ib.event.dispatch.apply(l.elem,arguments)},l.elem=a),c=(c||"").match(kb)||[""],i=c.length;i--;)g=Ob.exec(c[i])||[],o=q=g[1],p=(g[2]||"").split(".").sort(),k=ib.event.special[o]||{},o=(f?k.delegateType:k.bindType)||o,k=ib.event.special[o]||{},m=ib.extend({type:o,origType:q,data:e,handler:d,guid:d.guid,selector:f,needsContext:f&&ib.expr.match.needsContext.test(f),namespace:p.join(".")},j),(n=h[o])||(n=h[o]=[],n.delegateCount=0,k.setup&&k.setup.call(a,e,p,l)!==!1||(a.addEventListener?a.addEventListener(o,l,!1):a.attachEvent&&a.attachEvent("on"+o,l))),k.add&&(k.add.call(a,m),m.handler.guid||(m
 .handler.guid=d.guid)),f?n.splice(n.delegateCount++,0,m):n.push(m),ib.event.global[o]=!0;a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=ib.hasData(a)&&ib._data(a);if(q&&(k=q.events)){for(b=(b||"").match(kb)||[""],j=b.length;j--;)if(h=Ob.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){for(l=ib.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=k[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;f--;)g=m[f],!e&&p!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||ib.removeEvent(a,n,q.handle),delete k[n])}else for(n in k)ib.event.remove(a,n+b[j],c,d,!0);ib.isEmptyObject(k)&&(delete q.handle,ib._removeData(a,"events"))}},trigger:function(c,d,e,f){var g,h,i,j,k,l,m,n=[e||W],o=gb.call(c,"type")?c.type:c,p=gb.call(c,"namespace")?c.names
 pace.split("."):[];if(i=l=e=e||W,3!==e.nodeType&&8!==e.nodeType&&!Nb.test(o+ib.event.triggered)&&(o.indexOf(".")>=0&&(p=o.split("."),o=p.shift(),p.sort()),h=o.indexOf(":")<0&&"on"+o,c=c[ib.expando]?c:new ib.Event(o,"object"==typeof c&&c),c.isTrigger=!0,c.namespace=p.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,c.result=b,c.target||(c.target=e),d=null==d?[c]:ib.makeArray(d,[c]),k=ib.event.special[o]||{},f||!k.trigger||k.trigger.apply(e,d)!==!1)){if(!f&&!k.noBubble&&!ib.isWindow(e)){for(j=k.delegateType||o,Nb.test(j+o)||(i=i.parentNode);i;i=i.parentNode)n.push(i),l=i;l===(e.ownerDocument||W)&&n.push(l.defaultView||l.parentWindow||a)}for(m=0;(i=n[m++])&&!c.isPropagationStopped();)c.type=m>1?j:k.bindType||o,g=(ib._data(i,"events")||{})[c.type]&&ib._data(i,"handle"),g&&g.apply(i,d),g=h&&i[h],g&&ib.acceptData(i)&&g.apply&&g.apply(i,d)===!1&&c.preventDefault();if(c.type=o,!(f||c.isDefaultPrevented()||k._default&&k._default.apply(e.ownerD
 ocument,d)!==!1||"click"===o&&ib.nodeName(e,"a")||!ib.acceptData(e)||!h||!e[o]||ib.isWindow(e))){l=e[h],l&&(e[h]=null),ib.event.triggered=o;try{e[o]()}catch(q){}ib.event.triggered=b,l&&(e[h]=l)}return c.result}},dispatch:function(a){a=ib.event.fix(a);var c,d,e,f,g,h=[],i=db.call(arguments),j=(ib._data(this,"events")||{})[a.type]||[],k=ib.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){for(h=ib.event.handlers.call(this,a,j),c=0;(f=h[c++])&&!a.isPropagationStopped();)for(a.currentTarget=f.elem,g=0;(e=f.handlers[g++])&&!a.isImmediatePropagationStopped();)(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,d=((ib.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),d!==b&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()));return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,c){var d,e,f,g,h=[],i=c.delegateCount,j=a.target;if(i&&j.nodeType&&(!a.butt
 on||"click"!==a.type))for(;j!=this;j=j.parentNode||this)if(1===j.nodeType&&(j.disabled!==!0||"click"!==a.type)){for(f=[],g=0;i>g;g++)e=c[g],d=e.selector+" ",f[d]===b&&(f[d]=e.needsContext?ib(d,this).index(j)>=0:ib.find(d,this,null,[j]).length),f[d]&&f.push(e);f.length&&h.push({elem:j,handlers:f})}return i<c.length&&h.push({elem:this,handlers:c.slice(i)}),h},fix:function(a){if(a[ib.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];for(g||(this.fixHooks[e]=g=Mb.test(e)?this.mouseHooks:Lb.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new ib.Event(f),b=d.length;b--;)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||W),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){
 return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,e,f,g=c.button,h=c.fromElement;return null==a.pageX&&null!=c.clientX&&(e=a.target.ownerDocument||W,f=e.documentElement,d=e.body,a.pageX=c.clientX+(f&&f.scrollLeft||d&&d.scrollLeft||0)-(f&&f.clientLeft||d&&d.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||d&&d.scrollTop||0)-(f&&f.clientTop||d&&d.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?c.toElement:h),a.which||g===b||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},click:{trigger:function(){return ib.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0}},focus:{trigger:function(){if(this!==W.activeElement&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===W.activeElement&&this.b
 lur?(this.blur(),!1):void 0},delegateType:"focusout"},beforeunload:{postDispatch:function(a){a.result!==b&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=ib.extend(new ib.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?ib.event.trigger(e,null,b):ib.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},ib.removeEvent=W.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===V&&(a[d]=null),a.detachEvent(d,c))},ib.Event=function(a,b){return this instanceof ib.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?i:j):this.type=a,b&&ib.extend(this,b),this.timeStamp=a&&a.timeStamp||ib.now(),void(this[ib.expando]=!0)):new ib.Event(a,b)},ib.Event.prototype={isDefaultPrevented:j,isPropagationStopped:j,isImmediatePropagationStopped:j,preventDefau
 lt:function(){var a=this.originalEvent;this.isDefaultPrevented=i,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=i,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i,this.stopPropagation()}},ib.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){ib.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!ib.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),ib.support.submitBubbles||(ib.event.special.submit={setup:function(){return ib.nodeName(this,"form")?!1:void ib.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=ib.nodeName(c,"input")||ib.nodeName(c,"button")?c.form:b;d&&!ib._data(d,"submitBubbles")&&(ib.event.add(d,"submit._submit",function(a){a._submit_bubble=!0})
 ,ib._data(d,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&ib.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return ib.nodeName(this,"form")?!1:void ib.event.remove(this,"._submit")}}),ib.support.changeBubbles||(ib.event.special.change={setup:function(){return Kb.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(ib.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),ib.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),ib.event.simulate("change",this,a,!0)})),!1):void ib.event.add(this,"beforeactivate._change",function(a){var b=a.target;Kb.test(b.nodeName)&&!ib._data(b,"changeBubbles")&&(ib.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||ib.event.simulate("change",this.parentNode,a,!0)}),ib._data(b,"changeBubbles",
 !0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return ib.event.remove(this,"._change"),!Kb.test(this.nodeName)}}),ib.support.focusinBubbles||ib.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){ib.event.simulate(b,a.target,ib.event.fix(a),!0)};ib.event.special[b]={setup:function(){0===c++&&W.addEventListener(a,d,!0)},teardown:function(){0===--c&&W.removeEventListener(a,d,!0)}}}),ib.fn.extend({on:function(a,c,d,e,f){var g,h;if("object"==typeof a){"string"!=typeof c&&(d=d||c,c=b);for(g in a)this.on(g,c,d,a[g],f);return this}if(null==d&&null==e?(e=c,d=c=b):null==e&&("string"==typeof c?(e=d,d=b):(e=d,d=c,c=b)),e===!1)e=j;else if(!e)return this;return 1===f&&(h=e,e=function(a){return ib().off(a),h.apply(this,arguments)},e.guid=h.guid||(h.guid=ib.guid++)),this.each(function(){ib.event.add(this,a,e,d,c)})},one:function(
 a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,ib(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if("object"==typeof a){for(f in a)this.off(f,c,a[f]);return this}return(c===!1||"function"==typeof c)&&(d=c,c=b),d===!1&&(d=j),this.each(function(){ib.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},trigger:function(a,b){return this.each(function(){ib.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?ib.event.trigger(a,b,c,!0):void 0}}),function(a,b){function c(a){return ob.test(a+"")}function d(){var a,b=[];return a=function(c,d){return b.push(c+=" ")>y.cacheLength&&delete a[b.shift()],a[c]=d}}function e(a){return 
 a[N]=!0,a}function f(a){var b=F.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}}function g(a,b,c,d){var e,f,g,h,i,j,k,n,o,p;if((b?b.ownerDocument||b:O)!==F&&E(b),b=b||F,c=c||[],!a||"string"!=typeof a)return c;if(1!==(h=b.nodeType)&&9!==h)return[];if(!H&&!d){if(e=pb.exec(a))if(g=e[1]){if(9===h){if(f=b.getElementById(g),!f||!f.parentNode)return c;if(f.id===g)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(g))&&L(b,f)&&f.id===g)return c.push(f),c}else{if(e[2])return Z.apply(c,$.call(b.getElementsByTagName(a),0)),c;if((g=e[3])&&P.getByClassName&&b.getElementsByClassName)return Z.apply(c,$.call(b.getElementsByClassName(g),0)),c}if(P.qsa&&!I.test(a)){if(k=!0,n=N,o=b,p=9===h&&a,1===h&&"object"!==b.nodeName.toLowerCase()){for(j=l(a),(k=b.getAttribute("id"))?n=k.replace(sb,"\\$&"):b.setAttribute("id",n),n="[id='"+n+"'] ",i=j.length;i--;)j[i]=n+m(j[i]);o=nb.test(a)&&b.parentNode||b,p=j.join(",")}if(p)try{return Z.apply(c,$.call(o.querySelec
 torAll(p),0)),c}catch(q){}finally{k||b.removeAttribute("id")}}}return u(a.replace(gb,"$1"),b,c,d)}function h(a,b){var c=b&&a,d=c&&(~b.sourceIndex||W)-(~a.sourceIndex||W);if(d)return d;if(c)for(;c=c.nextSibling;)if(c===b)return-1;return a?1:-1}function i(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function j(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function k(a){return e(function(b){return b=+b,e(function(c,d){for(var e,f=a([],c.length,b),g=f.length;g--;)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function l(a,b){var c,d,e,f,h,i,j,k=T[a+" "];if(k)return b?0:k.slice(0);for(h=a,i=[],j=y.preFilter;h;){(!c||(d=hb.exec(h)))&&(d&&(h=h.slice(d[0].length)||h),i.push(e=[])),c=!1,(d=jb.exec(h))&&(c=d.shift(),e.push({value:c,type:d[0].replace(gb," ")}),h=h.slice(c.length));for(f in y.filter)!(d=mb[f].exec(h))||j[f]&&!(d=j[f](d))||(c=d.shift(),e.push({value:c,type:f,matches:d}),h=h.slice(c.length));if(!c)br
 eak}return b?h.length:h?g.error(a):T(a,i).slice(0)}function m(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function n(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=R++;return b.first?function(b,c,f){for(;b=b[d];)if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=Q+" "+f;if(g){for(;b=b[d];)if((1===b.nodeType||e)&&a(b,c,g))return!0}else for(;b=b[d];)if(1===b.nodeType||e)if(j=b[N]||(b[N]={}),(i=j[d])&&i[0]===k){if((h=i[1])===!0||h===x)return h===!0}else if(i=j[d]=[k],i[1]=a(b,c,g)||x,i[1]===!0)return!0}}function o(a){return a.length>1?function(b,c,d){for(var e=a.length;e--;)if(!a[e](b,c,d))return!1;return!0}:a[0]}function p(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function q(a,b,c,d,f,g){return d&&!d[N]&&(d=q(d)),f&&!f[N]&&(f=q(f,g)),e(function(e,g,h,i){var j,k,l,m=[],n=[],o=g.length,q=e||t(b||"*",h.nodeType?[h]:h,[]),r=!a||!e&&b?q:p(q,m,a,h,i),s=c?f||(e?a:o||d)?[]:g:r;if(c&&c(r,s
 ,h,i),d)for(j=p(s,n),d(j,[],h,i),k=j.length;k--;)(l=j[k])&&(s[n[k]]=!(r[n[k]]=l));if(e){if(f||a){if(f){for(j=[],k=s.length;k--;)(l=s[k])&&j.push(r[k]=l);f(null,s=[],j,i)}for(k=s.length;k--;)(l=s[k])&&(j=f?_.call(e,l):m[k])>-1&&(e[j]=!(g[j]=l))}}else s=p(s===g?s.splice(o,s.length):s),f?f(null,g,s,i):Z.apply(g,s)})}function r(a){for(var b,c,d,e=a.length,f=y.relative[a[0].type],g=f||y.relative[" "],h=f?1:0,i=n(function(a){return a===b},g,!0),j=n(function(a){return _.call(b,a)>-1},g,!0),k=[function(a,c,d){return!f&&(d||c!==D)||((b=c).nodeType?i(a,c,d):j(a,c,d))}];e>h;h++)if(c=y.relative[a[h].type])k=[n(o(k),c)];else{if(c=y.filter[a[h].type].apply(null,a[h].matches),c[N]){for(d=++h;e>d&&!y.relative[a[d].type];d++);return q(h>1&&o(k),h>1&&m(a.slice(0,h-1)).replace(gb,"$1"),c,d>h&&r(a.slice(h,d)),e>d&&r(a=a.slice(d)),e>d&&m(a))}k.push(c)}return o(k)}function s(a,b){var c=0,d=b.length>0,f=a.length>0,h=function(e,h,i,j,k){var l,m,n,o=[],q=0,r="0",s=e&&[],t=null!=k,u=D,v=e||f&&y.find.TAG("*",
 k&&h.parentNode||h),w=Q+=null==u?1:Math.random()||.1;for(t&&(D=h!==F&&h,x=c);null!=(l=v[r]);r++){if(f&&l){for(m=0;n=a[m++];)if(n(l,h,i)){j.push(l);break}t&&(Q=w,x=++c)}d&&((l=!n&&l)&&q--,e&&s.push(l))}if(q+=r,d&&r!==q){for(m=0;n=b[m++];)n(s,o,h,i);if(e){if(q>0)for(;r--;)s[r]||o[r]||(o[r]=Y.call(j));o=p(o)}Z.apply(j,o),t&&!e&&o.length>0&&q+b.length>1&&g.uniqueSort(j)}return t&&(Q=w,D=u),s};return d?e(h):h}function t(a,b,c){for(var d=0,e=b.length;e>d;d++)g(a,b[d],c);return c}function u(a,b,c,d){var e,f,g,h,i,j=l(a);if(!d&&1===j.length){if(f=j[0]=j[0].slice(0),f.length>2&&"ID"===(g=f[0]).type&&9===b.nodeType&&!H&&y.relative[f[1].type]){if(b=y.find.ID(g.matches[0].replace(ub,vb),b)[0],!b)return c;a=a.slice(f.shift().value.length)}for(e=mb.needsContext.test(a)?0:f.length;e--&&(g=f[e],!y.relative[h=g.type]);)if((i=y.find[h])&&(d=i(g.matches[0].replace(ub,vb),nb.test(f[0].type)&&b.parentNode||b))){if(f.splice(e,1),a=d.length&&m(f),!a)return Z.apply(c,$.call(d,0)),c;break}}return B(a,j)(d,b
 ,H,c,nb.test(a)),c}function v(){}var w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N="sizzle"+-new Date,O=a.document,P={},Q=0,R=0,S=d(),T=d(),U=d(),V=typeof b,W=1<<31,X=[],Y=X.pop,Z=X.push,$=X.slice,_=X.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},ab="[\\x20\\t\\r\\n\\f]",bb="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",cb=bb.replace("w","w#"),db="([*^$|!~]?=)",eb="\\["+ab+"*("+bb+")"+ab+"*(?:"+db+ab+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+cb+")|)|)"+ab+"*\\]",fb=":("+bb+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+eb.replace(3,8)+")*)|.*)\\)|)",gb=new RegExp("^"+ab+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ab+"+$","g"),hb=new RegExp("^"+ab+"*,"+ab+"*"),jb=new RegExp("^"+ab+"*([\\x20\\t\\r\\n\\f>+~])"+ab+"*"),kb=new RegExp(fb),lb=new RegExp("^"+cb+"$"),mb={ID:new RegExp("^#("+bb+")"),CLASS:new RegExp("^\\.("+bb+")"),NAME:new RegExp("^\\[name=['\"]?("+bb+")['\"]?\\]"),TAG:new RegExp("^("+bb.replace("w","w*")+")"),ATTR:new RegExp("^"+eb),PSEUDO:new RegEx
 p("^"+fb),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ab+"*(even|odd|(([+-]|)(\\d*)n|)"+ab+"*(?:([+-]|)"+ab+"*(\\d+)|))"+ab+"*\\)|)","i"),needsContext:new RegExp("^"+ab+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ab+"*((?:-\\d)?\\d*)"+ab+"*\\)|)(?=[^-]|$)","i")},nb=/[\x20\t\r\n\f]*[+~]/,ob=/^[^{]+\{\s*\[native code/,pb=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,qb=/^(?:input|select|textarea|button)$/i,rb=/^h\d$/i,sb=/'|\\/g,tb=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,ub=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,vb=function(a,b){var c="0x"+b-65536;return c!==c?b:0>c?String.fromCharCode(c+65536):String.fromCharCode(c>>10|55296,1023&c|56320)};try{$.call(O.documentElement.childNodes,0)[0].nodeType}catch(wb){$=function(a){for(var b,c=[];b=this[a++];)c.push(b);return c}}A=g.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},E=g.setDocument=function(a){var d=a?a.ownerDocument||a:O;return d!==F&&9===d.nodeType&&
 d.documentElement?(F=d,G=d.documentElement,H=A(d),P.tagNameNoComments=f(function(a){return a.appendChild(d.createComment("")),!a.getElementsByTagName("*").length}),P.attributes=f(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return"boolean"!==b&&"string"!==b}),P.getByClassName=f(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",a.getElementsByClassName&&a.getElementsByClassName("e").length?(a.lastChild.className="e",2===a.getElementsByClassName("e").length):!1}),P.getByName=f(function(a){a.id=N+0,a.innerHTML="<a name='"+N+"'></a><div name='"+N+"'></div>",G.insertBefore(a,G.firstChild);var b=d.getElementsByName&&d.getElementsByName(N).length===2+d.getElementsByName(N+0).length;return P.getIdNotName=!d.getElementById(N),G.removeChild(a),b}),y.attrHandle=f(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==V&&"#"===a.firstChild.getAttribute("href")})?{}:
 {href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},P.getIdNotName?(y.find.ID=function(a,b){if(typeof b.getElementById!==V&&!H){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},y.filter.ID=function(a){var b=a.replace(ub,vb);return function(a){return a.getAttribute("id")===b}}):(y.find.ID=function(a,c){if(typeof c.getElementById!==V&&!H){var d=c.getElementById(a);return d?d.id===a||typeof d.getAttributeNode!==V&&d.getAttributeNode("id").value===a?[d]:b:[]}},y.filter.ID=function(a){var b=a.replace(ub,vb);return function(a){var c=typeof a.getAttributeNode!==V&&a.getAttributeNode("id");return c&&c.value===b}}),y.find.TAG=P.tagNameNoComments?function(a,b){return typeof b.getElementsByTagName!==V?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){for(;c=f[e++];)1===c.nodeType&&d.push(c);return d}return f},y.find.NAME=P.getByName&&function(a,b){return typeof b.getElementsByName!==V?
 b.getElementsByName(name):void 0},y.find.CLASS=P.getByClassName&&function(a,b){return typeof b.getElementsByClassName===V||H?void 0:b.getElementsByClassName(a)},J=[],I=[":focus"],(P.qsa=c(d.querySelectorAll))&&(f(function(a){a.innerHTML="<select><option selected=''></option></select>",a.querySelectorAll("[selected]").length||I.push("\\["+ab+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||I.push(":checked")}),f(function(a){a.innerHTML="<input type='hidden' i=''/>",a.querySelectorAll("[i^='']").length&&I.push("[*^$]="+ab+"*(?:\"\"|'')"),a.querySelectorAll(":enabled").length||I.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),I.push(",.*:")})),(P.matchesSelector=c(K=G.matchesSelector||G.mozMatchesSelector||G.webkitMatchesSelector||G.oMatchesSelector||G.msMatchesSelector))&&f(function(a){P.disconnectedMatch=K.call(a,"div"),K.call(a,"[s!='']:x"),J.push("!=",fb)}),I=new RegExp(I.join("|")),J=new RegExp(J.join("|")),L=c(G.contai
 ns)||G.compareDocumentPosition?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},M=G.compareDocumentPosition?function(a,b){var c;return a===b?(C=!0,0):(c=b.compareDocumentPosition&&a.compareDocumentPosition&&a.compareDocumentPosition(b))?1&c||a.parentNode&&11===a.parentNode.nodeType?a===d||L(O,a)?-1:b===d||L(O,b)?1:0:4&c?-1:1:a.compareDocumentPosition?-1:1}:function(a,b){var c,e=0,f=a.parentNode,g=b.parentNode,i=[a],j=[b];if(a===b)return C=!0,0;if(!f||!g)return a===d?-1:b===d?1:f?-1:g?1:0;if(f===g)return h(a,b);for(c=a;c=c.parentNode;)i.unshift(c);for(c=b;c=c.parentNode;)j.unshift(c);for(;i[e]===j[e];)e++;return e?h(i[e],j[e]):i[e]===O?-1:j[e]===O?1:0},C=!1,[0,0].sort(M),P.detectDuplicates=C,F):F},g.matches=function(a,b){return g(a,null,null,b)},g.matchesSelector=functio
 n(a,b){if((a.ownerDocument||a)!==F&&E(a),b=b.replace(tb,"='$1']"),!(!P.matchesSelector||H||J&&J.test(b)||I.test(b)))try{var c=K.call(a,b);if(c||P.disconnectedMatch||a.document&&11!==a.document.nodeType)return c}catch(d){}return g(b,F,null,[a]).length>0},g.contains=function(a,b){return(a.ownerDocument||a)!==F&&E(a),L(a,b)},g.attr=function(a,b){var c;return(a.ownerDocument||a)!==F&&E(a),H||(b=b.toLowerCase()),(c=y.attrHandle[b])?c(a):H||P.attributes?a.getAttribute(b):((c=a.getAttributeNode(b))||a.getAttribute(b))&&a[b]===!0?b:c&&c.specified?c.value:null},g.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},g.uniqueSort=function(a){var b,c=[],d=1,e=0;if(C=!P.detectDuplicates,a.sort(M),C){for(;b=a[d];d++)b===a[d-1]&&(e=c.push(d));for(;e--;)a.splice(c[e],1)}return a},z=g.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(1===e||9===e||11===e){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=z(a)}else if(3===
 e||4===e)return a.nodeValue}else for(;b=a[d];d++)c+=z(b);return c},y=g.selectors={cacheLength:50,createPseudo:e,match:mb,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ub,vb),a[3]=(a[4]||a[5]||"").replace(ub,vb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||g.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&g.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return mb.CHILD.test(a[0])?null:(a[4]?a[2]=a[4]:c&&kb.test(c)&&(b=l(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){return"*"===a?function(){return!0}:(a=a.replace(ub,vb).toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(
 a){var b=S[a+" "];return b||(b=new RegExp("(^|"+ab+")"+a+"("+ab+"|$)"))&&S(a,function(a){return b.test(a.className||typeof a.getAttribute!==V&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=g.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){for(;p;){for(l=b;l=l[p];)if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){for(k=q[N]||(q[N]={}),j=k[a]||[],n=j[0]===Q&&j[1],m=j[0]===Q&&j[2],l=n
 &&q.childNodes[n];l=++n&&l&&l[p]||(m=n=0)||o.pop();)if(1===l.nodeType&&++m&&l===b){k[a]=[Q,n,m];break}}else if(s&&(j=(b[N]||(b[N]={}))[a])&&j[0]===Q)m=j[1];else for(;(l=++n&&l&&l[p]||(m=n=0)||o.pop())&&((h?l.nodeName.toLowerCase()!==r:1!==l.nodeType)||!++m||(s&&((l[N]||(l[N]={}))[a]=[Q,m]),l!==b)););return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,d=y.pseudos[a]||y.setFilters[a.toLowerCase()]||g.error("unsupported pseudo: "+a);return d[N]?d(b):d.length>1?(c=[a,a,"",b],y.setFilters.hasOwnProperty(a.toLowerCase())?e(function(a,c){for(var e,f=d(a,b),g=f.length;g--;)e=_.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:e(function(a){var b=[],c=[],d=B(a.replace(gb,"$1"));return d[N]?e(function(a,b,c,e){for(var f,g=d(a,null,e,[]),h=a.length;h--;)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:e(function(a){return function(b){return g(a,b).length>0}}),contains:e(function(a){return function(b){return(b.te
 xtContent||b.innerText||z(b)).indexOf(a)>-1}}),lang:e(function(a){return lb.test(a||"")||g.error("unsupported lang: "+a),a=a.replace(ub,vb).toLowerCase(),function(b){var c;do if(c=H?b.getAttribute("xml:lang")||b.getAttribute("lang"):b.lang)return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===G},focus:function(a){return a===F.activeElement&&(!F.hasFocus||F.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeName>"@"||3===a.nodeType||4===a.nodeType)return!1;return!0},parent:function(a){re
 turn!y.pseudos.empty(a)},header:function(a){return rb.test(a.nodeName)},input:function(a){return qb.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||b.toLowerCase()===a.type)},first:k(function(){return[0]}),last:k(function(a,b){return[b-1]}),eq:k(function(a,b,c){return[0>c?c+b:c]}),even:k(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:k(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:k(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:k(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}};for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})y.pseudos[w]=i(w);for(w in{submit:!0,reset:!0})y.pseudos[w]=j(w);B=g.compile=function(a,b){var c,d=[],e=[],f=U[a+" "];if(!f){for(b||(b=l(a)),c=b.length;c--;)f=r(b[c]),f[N]?d.push(f):e.push(f);f=U(a,s(
 e,d))}return f},y.pseudos.nth=y.pseudos.eq,y.filters=v.prototype=y.pseudos,y.setFilters=new v,E(),g.attr=ib.attr,ib.find=g,ib.expr=g.selectors,ib.expr[":"]=ib.expr.pseudos,ib.unique=g.uniqueSort,ib.text=g.getText,ib.isXMLDoc=g.isXML,ib.contains=g.contains}(a);var Pb=/Until$/,Qb=/^(?:parents|prev(?:Until|All))/,Rb=/^.[^:#\[\.,]*$/,Sb=ib.expr.match.needsContext,Tb={children:!0,contents:!0,next:!0,prev:!0};ib.fn.extend({find:function(a){var b,c,d,e=this.length;if("string"!=typeof a)return d=this,this.pushStack(ib(a).filter(function(){for(b=0;e>b;b++)if(ib.contains(d[b],this))return!0}));for(c=[],b=0;e>b;b++)ib.find(a,this[b],c);return c=this.pushStack(e>1?ib.unique(c):c),c.selector=(this.selector?this.selector+" ":"")+a,c},has:function(a){var b,c=ib(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(ib.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(l(this,a,!1))},filter:function(a){return this.pushStack(l(this,a,!0))},is:function(a){return!!a&&("
 string"==typeof a?Sb.test(a)?ib(a,this.context).index(this[0])>=0:ib.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=Sb.test(a)||"string"!=typeof a?ib(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c.ownerDocument&&c!==b&&11!==c.nodeType;){if(g?g.index(c)>-1:ib.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}return this.pushStack(f.length>1?ib.unique(f):f)},index:function(a){return a?"string"==typeof a?ib.inArray(this[0],ib(a)):ib.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){var c="string"==typeof a?ib(a,b):ib.makeArray(a&&a.nodeType?[a]:a),d=ib.merge(this.get(),c);return this.pushStack(ib.unique(d))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}}),ib.fn.andSelf=ib.fn.addBack,ib.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return ib.dir(a,"parentNode")},paren
 tsUntil:function(a,b,c){return ib.dir(a,"parentNode",c)},next:function(a){return k(a,"nextSibling")
-},prev:function(a){return k(a,"previousSibling")},nextAll:function(a){return ib.dir(a,"nextSibling")},prevAll:function(a){return ib.dir(a,"previousSibling")},nextUntil:function(a,b,c){return ib.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return ib.dir(a,"previousSibling",c)},siblings:function(a){return ib.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return ib.sibling(a.firstChild)},contents:function(a){return ib.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:ib.merge([],a.childNodes)}},function(a,b){ib.fn[a]=function(c,d){var e=ib.map(this,b,c);return Pb.test(a)||(d=c),d&&"string"==typeof d&&(e=ib.filter(d,e)),e=this.length>1&&!Tb[a]?ib.unique(e):e,this.length>1&&Qb.test(a)&&(e=e.reverse()),this.pushStack(e)}}),ib.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),1===b.length?ib.find.matchesSelector(b[0],a)?[b[0]]:[]:ib.find.matches(a,b)},dir:function(a,c,d){for(var e=[],f=a[c];f&&9!==f.nodeType&&(d===b||1!==f.nodeType||!ib(f).is(d)
 );)1===f.nodeType&&e.push(f),f=f[c];return e},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}});var Ub="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",Vb=/ jQuery\d+="(?:null|\d+)"/g,Wb=new RegExp("<(?:"+Ub+")[\\s/>]","i"),Xb=/^\s+/,Yb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Zb=/<([\w:]+)/,$b=/<tbody/i,_b=/<|&#?\w+;/,ac=/<(?:script|style|link)/i,bc=/^(?:checkbox|radio)$/i,cc=/checked\s*(?:[^=]|=\s*.checked.)/i,dc=/^$|\/(?:java|ecma)script/i,ec=/^true\/(.*)/,fc=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,gc={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[
 3,"<table><tbody><tr>","</tr></tbody></table>"],_default:ib.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},hc=m(W),ic=hc.appendChild(W.createElement("div"));gc.optgroup=gc.option,gc.tbody=gc.tfoot=gc.colgroup=gc.caption=gc.thead,gc.th=gc.td,ib.fn.extend({text:function(a){return ib.access(this,function(a){return a===b?ib.text(this):this.empty().append((this[0]&&this[0].ownerDocument||W).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(ib.isFunction(a))return this.each(function(b){ib(this).wrapAll(a.call(this,b))});if(this[0]){var b=ib(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){for(var a=this;a.firstChild&&1===a.firstChild.nodeType;)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(ib.isFunction(a)?function(b){ib(this).wrapInner(a.call(this,b))}:function(){var b=ib(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=ib.isFunction(
 a);return this.each(function(c){ib(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){ib.nodeName(this,"body")||ib(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(a,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,!1,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=0;null!=(c=this[d]);d++)(!a||ib.filter(a,[c]).length>0)&&(b||1!==c.nodeType||ib.cleanData(t(c)),c.parentNode&&(b&&ib.contains(c.ownerDocument,c)&&q(t(c,"script")),c.parentNode.removeChild(c)));return
  this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){for(1===a.nodeType&&ib.cleanData(t(a,!1));a.firstChild;)a.removeChild(a.firstChild);a.options&&ib.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return ib.clone(this,a,b)})},html:function(a){return ib.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return 1===c.nodeType?c.innerHTML.replace(Vb,""):b;if(!("string"!=typeof a||ac.test(a)||!ib.support.htmlSerialize&&Wb.test(a)||!ib.support.leadingWhitespace&&Xb.test(a)||gc[(Zb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(Yb,"<$1></$2>");try{for(;e>d;d++)c=this[d]||{},1===c.nodeType&&(ib.cleanData(t(c,!1)),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){var b=ib.isFunction(a);return b||"string"==typeof a||(a=ib(a).not(this).detach()),this.domManip([a],!0,function(a){var b=this.nextSibling,c=this.parentNode;c&&(i
 b(this).remove(),c.insertBefore(a,b))})},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=bb.apply([],a);var e,f,g,h,i,j,k=0,l=this.length,m=this,q=l-1,r=a[0],s=ib.isFunction(r);if(s||!(1>=l||"string"!=typeof r||ib.support.checkClone)&&cc.test(r))return this.each(function(e){var f=m.eq(e);s&&(a[0]=r.call(this,e,c?f.html():b)),f.domManip(a,c,d)});if(l&&(j=ib.buildFragment(a,this[0].ownerDocument,!1,this),e=j.firstChild,1===j.childNodes.length&&(j=e),e)){for(c=c&&ib.nodeName(e,"tr"),h=ib.map(t(j,"script"),o),g=h.length;l>k;k++)f=j,k!==q&&(f=ib.clone(f,!0,!0),g&&ib.merge(h,t(f,"script"))),d.call(c&&ib.nodeName(this[k],"table")?n(this[k],"tbody"):this[k],f,k);if(g)for(i=h[h.length-1].ownerDocument,ib.map(h,p),k=0;g>k;k++)f=h[k],dc.test(f.type||"")&&!ib._data(f,"globalEval")&&ib.contains(i,f)&&(f.src?ib.ajax({url:f.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):ib.globalEval((f.text||f.textContent||f.innerHTML||"").replace(fc,"")));j=e=null}retur
 n this}}),ib.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){ib.fn[a]=function(a){for(var c,d=0,e=[],f=ib(a),g=f.length-1;g>=d;d++)c=d===g?this:this.clone(!0),ib(f[d])[b](c),cb.apply(e,c.get());return this.pushStack(e)}}),ib.extend({clone:function(a,b,c){var d,e,f,g,h,i=ib.contains(a.ownerDocument,a);if(ib.support.html5Clone||ib.isXMLDoc(a)||!Wb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ic.innerHTML=a.outerHTML,ic.removeChild(f=ic.firstChild)),!(ib.support.noCloneEvent&&ib.support.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||ib.isXMLDoc(a)))for(d=t(f),h=t(a),g=0;null!=(e=h[g]);++g)d[g]&&s(e,d[g]);if(b)if(c)for(h=h||t(a),d=d||t(f),g=0;null!=(e=h[g]);g++)r(e,d[g]);else r(a,f);return d=t(f,"script"),d.length>0&&q(d,!i&&t(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,l=a.length,n=m(b),o=[],p=0;l>p;p++)if(f=a[p],f||0===f)if("object"===ib.type(f))ib.merge(o,f.nodeType?[f]
 :f);else if(_b.test(f)){for(h=h||n.appendChild(b.createElement("div")),i=(Zb.exec(f)||["",""])[1].toLowerCase(),k=gc[i]||gc._default,h.innerHTML=k[1]+f.replace(Yb,"<$1></$2>")+k[2],e=k[0];e--;)h=h.lastChild;if(!ib.support.leadingWhitespace&&Xb.test(f)&&o.push(b.createTextNode(Xb.exec(f)[0])),!ib.support.tbody)for(f="table"!==i||$b.test(f)?"<table>"!==k[1]||$b.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;e--;)ib.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j);for(ib.merge(o,h.childNodes),h.textContent="";h.firstChild;)h.removeChild(h.firstChild);h=n.lastChild}else o.push(b.createTextNode(f));for(h&&n.removeChild(h),ib.support.appendChecked||ib.grep(t(o,"input"),u),p=0;f=o[p++];)if((!d||-1===ib.inArray(f,d))&&(g=ib.contains(f.ownerDocument,f),h=t(n.appendChild(f),"script"),g&&q(h),c))for(e=0;f=h[e++];)dc.test(f.type||"")&&c.push(f);return h=null,n},cleanData:function(a,b){for(var c,d,e,f,g=0,h=ib.expando,i=ib.cache,j=ib.support.deleteExpando,k=ib.event
 .special;null!=(c=a[g]);g++)if((b||ib.acceptData(c))&&(e=c[h],f=e&&i[e])){if(f.events)for(d in f.events)k[d]?ib.event.remove(c,d):ib.removeEvent(c,d,f.handle);i[e]&&(delete i[e],j?delete c[h]:typeof c.removeAttribute!==V?c.removeAttribute(h):c[h]=null,_.push(e))}}});var jc,kc,lc,mc=/alpha\([^)]*\)/i,nc=/opacity\s*=\s*([^)]*)/,oc=/^(top|right|bottom|left)$/,pc=/^(none|table(?!-c[ea]).+)/,qc=/^margin/,rc=new RegExp("^("+jb+")(.*)$","i"),sc=new RegExp("^("+jb+")(?!px)[a-z%]+$","i"),tc=new RegExp("^([+-])=("+jb+")","i"),uc={BODY:"block"},vc={position:"absolute",visibility:"hidden",display:"block"},wc={letterSpacing:0,fontWeight:400},xc=["Top","Right","Bottom","Left"],yc=["Webkit","O","Moz","ms"];ib.fn.extend({css:function(a,c){return ib.access(this,function(a,c,d){var e,f,g={},h=0;if(ib.isArray(c)){for(f=kc(a),e=c.length;e>h;h++)g[c[h]]=ib.css(a,c[h],!1,f);return g}return d!==b?ib.style(a,c,d):ib.css(a,c)},a,c,arguments.length>1)},show:function(){return x(this,!0)},hide:function(){retur
 n x(this)},toggle:function(a){var b="boolean"==typeof a;return this.each(function(){(b?a:w(this))?ib(this).show():ib(this).hide()})}}),ib.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=lc(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":ib.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var f,g,h,i=ib.camelCase(c),j=a.style;if(c=ib.cssProps[i]||(ib.cssProps[i]=v(j,i)),h=ib.cssHooks[c]||ib.cssHooks[i],d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];if(g=typeof d,"string"===g&&(f=tc.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(ib.css(a,c)),g="number"),!(null==d||"number"===g&&isNaN(d)||("number"!==g||ib.cssNumber[i]||(d+="px"),ib.support.clearCloneStyle||""!==d||0!==c.indexOf("background")||(j[c]="inherit"),h&&"set"in h&&(d=h.set(a,d,e))===b)))try{j[c]=d}catch(k){}}},css:function(a,c,d,e
 ){var f,g,h,i=ib.camelCase(c);return c=ib.cssProps[i]||(ib.cssProps[i]=v(a.style,i)),h=ib.cssHooks[c]||ib.cssHooks[i],h&&"get"in h&&(g=h.get(a,!0,d)),g===b&&(g=lc(a,c,e)),"normal"===g&&c in wc&&(g=wc[c]),""===d||d?(f=parseFloat(g),d===!0||ib.isNumeric(f)?f||0:g):g},swap:function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e}}),a.getComputedStyle?(kc=function(b){return a.getComputedStyle(b,null)},lc=function(a,c,d){var e,f,g,h=d||kc(a),i=h?h.getPropertyValue(c)||h[c]:b,j=a.style;return h&&(""!==i||ib.contains(a.ownerDocument,a)||(i=ib.style(a,c)),sc.test(i)&&qc.test(c)&&(e=j.width,f=j.minWidth,g=j.maxWidth,j.minWidth=j.maxWidth=j.width=i,i=h.width,j.width=e,j.minWidth=f,j.maxWidth=g)),i}):W.documentElement.currentStyle&&(kc=function(a){return a.currentStyle},lc=function(a,c,d){var e,f,g,h=d||kc(a),i=h?h[c]:b,j=a.style;return null==i&&j&&j[c]&&(i=j[c]),sc.test(i)&&!oc.test(c)&&(e=j.left,f=a.runtimeStyle,g=f&&f.l
 eft,g&&(f.left=a.currentStyle.left),j.left="fontSize"===c?"1em":i,i=j.pixelLeft+"px",j.left=e,g&&(f.left=g)),""===i?"auto":i}),ib.each(["height","width"],function(a,b){ib.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&pc.test(ib.css(a,"display"))?ib.swap(a,vc,function(){return A(a,b,d)}):A(a,b,d):void 0},set:function(a,c,d){var e=d&&kc(a);return y(a,c,d?z(a,b,d,ib.support.boxSizing&&"border-box"===ib.css(a,"boxSizing",!1,e),e):0)}}}),ib.support.opacity||(ib.cssHooks.opacity={get:function(a,b){return nc.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=ib.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===ib.trim(f.replace(mc,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=mc.test(f)?f.replace(mc,e):f+" "+e)}}),ib(function(){ib.support.reliableMarginRight||(ib.cssHooks.marginRi
 ght={get:function(a,b){return b?ib.swap(a,{display:"inline-block"},lc,[a,"marginRight"]):void 0}}),!ib.support.pixelPosition&&ib.fn.position&&ib.each(["top","left"],function(a,b){ib.cssHooks[b]={get:function(a,c){return c?(c=lc(a,b),sc.test(c)?ib(a).position()[b]+"px":c):void 0}}})}),ib.expr&&ib.expr.filters&&(ib.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!ib.support.reliableHiddenOffsets&&"none"===(a.style&&a.style.display||ib.css(a,"display"))},ib.expr.filters.visible=function(a){return!ib.expr.filters.hidden(a)}),ib.each({margin:"",padding:"",border:"Width"},function(a,b){ib.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+xc[d]+b]=f[d]||f[d-2]||f[0];return e}},qc.test(a)||(ib.cssHooks[a+b].set=y)});var zc=/%20/g,Ac=/\[\]$/,Bc=/\r?\n/g,Cc=/^(?:submit|button|image|reset|file)$/i,Dc=/^(?:input|select|textarea|keygen)/i;ib.fn.extend({serialize:function(){return ib.param(this.serializeArray())},seria
 lizeArray:function(){return this.map(function(){var a=ib.prop(this,"elements");return a?ib.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!ib(this).is(":disabled")&&Dc.test(this.nodeName)&&!Cc.test(a)&&(this.checked||!bc.test(a))}).map(function(a,b){var c=ib(this).val();return null==c?null:ib.isArray(c)?ib.map(c,function(a){return{name:b.name,value:a.replace(Bc,"\r\n")}}):{name:b.name,value:c.replace(Bc,"\r\n")}}).get()}}),ib.param=function(a,c){var d,e=[],f=function(a,b){b=ib.isFunction(b)?b():null==b?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(c===b&&(c=ib.ajaxSettings&&ib.ajaxSettings.traditional),ib.isArray(a)||a.jquery&&!ib.isPlainObject(a))ib.each(a,function(){f(this.name,this.value)});else for(d in a)D(d,a[d],c,f);return e.join("&").replace(zc,"+")},ib.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keyp
 ress keyup error contextmenu".split(" "),function(a,b){ib.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),ib.fn.hover=function(a,b){return this.mouseenter(a).mouseleave(b||a)};var Ec,Fc,Gc=ib.now(),Hc=/\?/,Ic=/#.*$/,Jc=/([?&])_=[^&]*/,Kc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Lc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mc=/^(?:GET|HEAD)$/,Nc=/^\/\//,Oc=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Pc=ib.fn.load,Qc={},Rc={},Sc="*/".concat("*");try{Fc=X.href}catch(Tc){Fc=W.createElement("a"),Fc.href="",Fc=Fc.href}Ec=Oc.exec(Fc.toLowerCase())||[],ib.fn.load=function(a,c,d){if("string"!=typeof a&&Pc)return Pc.apply(this,arguments);var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),ib.isFunction(c)?(d=c,c=b):c&&"object"==typeof c&&(g="POST"),h.length>0&&ib.ajax({url:a,type:g,dataType:"html",data:c}).done(function(a){f=arguments,h.html(e?ib("<div>").append(ib.parseHTML(a)).find(e):a)}).complete(d&&function
 (a,b){h.each(d,f||[a.responseText,b,a])}),this},ib.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){ib.fn[b]=function(a){return this.on(b,a)}}),ib.each(["get","post"],function(a,c){ib[c]=function(a,d,e,f){return ib.isFunction(d)&&(f=f||e,e=d,d=b),ib.ajax({url:a,type:c,dataType:f,data:d,success:e})}}),ib.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Fc,type:"GET",isLocal:Lc.test(Ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Sc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":ib.parseJSON,"text xml":ib.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?G(G(a,ib.ajaxSettings),b):G(ib.ajaxSettings,a)},ajaxPrefilter:E(Qc)
 ,ajaxTransport:E(Rc),ajax:function(a,c){function d(a,c,d,e){var f,l,s,t,v,x=c;2!==u&&(u=2,i&&clearTimeout(i),k=b,h=e||"",w.readyState=a>0?4:0,d&&(t=H(m,w,d)),a>=200&&300>a||304===a?(m.ifModified&&(v=w.getResponseHeader("Last-Modified"),v&&(ib.lastModified[g]=v),v=w.getResponseHeader("etag"),v&&(ib.etag[g]=v)),204===a?(f=!0,x="nocontent"):304===a?(f=!0,x="notmodified"):(f=I(m,t),x=f.state,l=f.data,s=f.error,f=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),w.status=a,w.statusText=(c||x)+"",f?p.resolveWith(n,[l,x,w]):p.rejectWith(n,[w,x,s]),w.statusCode(r),r=b,j&&o.trigger(f?"ajaxSuccess":"ajaxError",[w,m,f?l:s]),q.fireWith(n,[w,x]),j&&(o.trigger("ajaxComplete",[w,m]),--ib.active||ib.event.trigger("ajaxStop")))}"object"==typeof a&&(c=a,a=b),c=c||{};var e,f,g,h,i,j,k,l,m=ib.ajaxSetup({},c),n=m.context||m,o=m.context&&(n.nodeType||n.jquery)?ib(n):ib.event,p=ib.Deferred(),q=ib.Callbacks("once memory"),r=m.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){
 var b;if(2===u){if(!l)for(l={};b=Kc.exec(h);)l[b[1].toLowerCase()]=b[2];b=l[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?h:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return k&&k.abort(b),d(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,m.url=((a||m.url||Fc)+"").replace(Ic,"").replace(Nc,Ec[1]+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=ib.trim(m.dataType||"*").toLowerCase().match(kb)||[""],null==m.crossDomain&&(e=Oc.exec(m.url.toLowerCase()),m.crossDomain=!(!e||e[1]===Ec[1]&&e[2]===Ec[2]&&(e[3]||("http:"===e[1]?80:443))==(Ec[3]||("http:"===Ec[1]?80:443)))),m.data&&m.processData&&"string"!=typeof m.data&&(m.data=ib.param(m.data,m.traditional)),F(Qc,m,
 c,w),2===u)return w;j=m.global,j&&0===ib.active++&&ib.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!Mc.test(m.type),g=m.url,m.hasContent||(m.data&&(g=m.url+=(Hc.test(g)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=Jc.test(g)?g.replace(Jc,"$1_="+Gc++):g+(Hc.test(g)?"&":"?")+"_="+Gc++)),m.ifModified&&(ib.lastModified[g]&&w.setRequestHeader("If-Modified-Since",ib.lastModified[g]),ib.etag[g]&&w.setRequestHeader("If-None-Match",ib.etag[g])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",m.contentType),w.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+Sc+"; q=0.01":""):m.accepts["*"]);for(f in m.headers)w.setRequestHeader(f,m.headers[f]);if(m.beforeSend&&(m.beforeSend.call(n,w,m)===!1||2===u))return w.abort();v="abort";for(f in{success:1,error:1,complete:1})w[f](m[f]);if(k=F(Rc,m,c,w)){w.readyState=1,j&&o.trigger("ajaxSend",[w,m]),m.async&&m.
 timeout>0&&(i=setTimeout(function(){w.abort("timeout")},m.timeout));try{u=1,k.send(s,d)}catch(x){if(!(2>u))throw x;d(-1,x)}}else d(-1,"No Transport");return w},getScript:function(a,c){return ib.get(a,b,c,"script")},getJSON:function(a,b,c){return ib.get(a,b,c,"json")}}),ib.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return ib.globalEval(a),a}}}),ib.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),ib.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=W.head||ib("head")[0]||W.documentElement;return{send:function(b,e){c=W.createElement("script"),c.async=!0,a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,b){(b||!c.readyState||/loaded|complete/.test(c.readyState))&&(c.onload=c.onreadystatechange=null,c.parentNode&&c.parentN
 ode.removeChild(c),c=null,b||e(200,"success"))},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(b,!0)}}}});var Uc=[],Vc=/(=)\?(?=&|$)|\?\?/;ib.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Uc.pop()||ib.expando+"_"+Gc++;return this[a]=!0,a}}),ib.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.jsonp!==!1&&(Vc.test(c.url)?"url":"string"==typeof c.data&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vc.test(c.data)&&"data");return i||"jsonp"===c.dataTypes[0]?(f=c.jsonpCallback=ib.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,i?c[i]=c[i].replace(Vc,"$1"+f):c.jsonp!==!1&&(c.url+=(Hc.test(c.url)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||ib.error(f+" was not called"),h[0]},c.dataTypes[0]="json",g=a[f],a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,Uc.push(f)),h&&ib.isFunction(g)&&g(h[0]),h=g=b}),"script"):void 0});var Wc,Xc,Yc=0,Zc=a.ActiveXOb
 ject&&function(){var a;for(a in Wc)Wc[a](b,!0)};ib.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&J()||K()}:J,Xc=ib.ajaxSettings.xhr(),ib.support.cors=!!Xc&&"withCredentials"in Xc,Xc=ib.support.ajax=!!Xc,Xc&&ib.ajaxTransport(function(c){if(!c.crossDomain||ib.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();if(c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async),c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),c.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l;try{if(d&&(e||4===i.readyState))if(d=b,g&&(i.onreadystatechange=ib.noop,Zc&&delete Wc[g]),e)4!==i.readyState&&i.abort();else{l={},h=i.status,j=i.getAllResponseHeaders(),"string"==typeof i.responseText&&(l.text=i.responseText);try{k=i.statusText}catch(m
 ){k=""}h||!c.isLocal||c.crossDomain?1223===h&&(h=204):h=l.text?200:404}}catch(n){e||f(-1,n)}l&&f(h,k,l,j)},c.async?4===i.readyState?setTimeout(d):(g=++Yc,Zc&&(Wc||(Wc={},ib(a).unload(Zc)),Wc[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(b,!0)}}}});var $c,_c,ad=/^(?:toggle|show|hide)$/,bd=new RegExp("^(?:([+-])=|)("+jb+")([a-z%]*)$","i"),cd=/queueHooks$/,dd=[P],ed={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=bd.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){if(c=+f[2],d=f[3]||(ib.cssNumber[a]?"":"px"),"px"!==d&&h){h=ib.css(e.elem,a,!0)||c||1;do i=i||".5",h/=i,ib.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&1!==i&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};ib.Animation=ib.extend(N,{tweener:function(a,b){ib.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ed[c]=ed[c]||[],ed[c].unshift(b)},prefilter:function(a,b){b?dd.unshift(a):dd.push(a)}}),ib.Tween=Q,Q.prototype={constructor:Q,init:function(a,b,c,d,e,f){this.elem=a,th
 is.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(ib.cssNumber[c]?"":"px")},cur:function(){var a=Q.propHooks[this.prop];return a&&a.get?a.get(this):Q.propHooks._default.get(this)},run:function(a){var b,c=Q.propHooks[this.prop];return this.pos=b=this.options.duration?ib.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Q.propHooks._default.set(this),this}},Q.prototype.init.prototype=Q.prototype,Q.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=ib.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){ib.fx.step[a.prop]?ib.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[ib.cssProps[a.prop]]||ib.cssHooks[a.prop])?ib.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Q.propHooks.scro
 llTop=Q.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},ib.each(["toggle","show","hide"],function(a,b){var c=ib.fn[b];ib.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,ar

<TRUNCATED>


[54/98] [abbrv] incubator-apex-malhar git commit: - MLHR-1868 improved the hashcode function to produce better hashes.

Posted by da...@apache.org.
 - MLHR-1868 improved the hashcode function to produce better hashes.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/dbdc9cad
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/dbdc9cad
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/dbdc9cad

Branch: refs/heads/master
Commit: dbdc9cadce46e5a8d5ec420e6c8695349fc0ada0
Parents: e1a4550
Author: Timothy Farkas <ti...@datatorrent.com>
Authored: Mon Oct 12 10:06:12 2015 -0700
Committer: Timothy Farkas <ti...@datatorrent.com>
Committed: Wed Oct 14 14:58:26 2015 -0700

----------------------------------------------------------------------
 .../datatorrent/lib/appdata/gpo/GPOUtils.java   | 42 +++++++++++++++-----
 1 file changed, 31 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/dbdc9cad/library/src/main/java/com/datatorrent/lib/appdata/gpo/GPOUtils.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/appdata/gpo/GPOUtils.java b/library/src/main/java/com/datatorrent/lib/appdata/gpo/GPOUtils.java
index 290d814..239dab7 100644
--- a/library/src/main/java/com/datatorrent/lib/appdata/gpo/GPOUtils.java
+++ b/library/src/main/java/com/datatorrent/lib/appdata/gpo/GPOUtils.java
@@ -1748,10 +1748,25 @@ public class GPOUtils
     return hashCode;
   }
 
+  /**
+   * This function computes the hashcode of a {@link GPOMutable} based on a specified subset of its data.
+   * <br/>
+   * <br/>
+   * <b>Note:</b> In some cases a {@link GPOMutable} object contains a field which is bucketed. In the case of
+   * bucketed fields, you may want to preserve the original value of the field, but only use the bucketed value
+   * of the field for computing a hashcode. In order to do this you can store the original value of {@link GPOMutable}'s
+   * field before calling this function, and replace it with the bucketed value. Then after the hashcode is computed, the
+   * original value of the field can be restored.
+   *
+   * @param gpo The {@link GPOMutable} to compute a hashcode for.
+   * @param indexSubset The subset of the {@link GPOMutable} used to compute the hashcode.
+   * @return The hashcode for the given {@link GPOMutable} computed from the specified subset of its data.
+   */
   public static int indirectHashcode(GPOMutable gpo,
                                      IndexSubset indexSubset)
   {
-    int hashCode = 0;
+    int hashCode = 7;
+    final int hashMultiplier = 23;
 
     {
       String[] stringArray = gpo.getFieldsString();
@@ -1763,7 +1778,7 @@ public class GPOUtils
           if(srcIndex[index] == -1) {
             continue;
           }
-          hashCode ^= stringArray[srcIndex[index]].hashCode();
+          hashCode = hashMultiplier * hashCode + stringArray[srcIndex[index]].hashCode();
         }
       }
     }
@@ -1778,7 +1793,7 @@ public class GPOUtils
           if(srcIndex[index] == -1) {
             continue;
           }
-          hashCode ^= booleanArray[srcIndex[index]] ? 1: 0;
+          hashCode = hashMultiplier * hashCode + (booleanArray[srcIndex[index]] ? 1: 0);
         }
       }
     }
@@ -1793,7 +1808,7 @@ public class GPOUtils
           if(srcIndex[index] == -1) {
             continue;
           }
-          hashCode ^= Character.getNumericValue(charArray[srcIndex[index]]);
+          hashCode = hashMultiplier * hashCode + Character.getNumericValue(charArray[srcIndex[index]]);
         }
       }
     }
@@ -1808,7 +1823,7 @@ public class GPOUtils
           if(srcIndex[index] == -1) {
             continue;
           }
-          hashCode ^= byteArray[srcIndex[index]];
+          hashCode = hashMultiplier * hashCode + byteArray[srcIndex[index]];
         }
       }
     }
@@ -1823,7 +1838,7 @@ public class GPOUtils
           if(srcIndex[index] == -1) {
             continue;
           }
-          hashCode ^= shortArray[srcIndex[index]];
+          hashCode = hashMultiplier * hashCode + shortArray[srcIndex[index]];
         }
       }
     }
@@ -1838,7 +1853,7 @@ public class GPOUtils
           if(srcIndex[index] == -1) {
             continue;
           }
-          hashCode ^= integerArray[srcIndex[index]];
+          hashCode = hashMultiplier * hashCode + integerArray[srcIndex[index]];
         }
       }
     }
@@ -1853,7 +1868,9 @@ public class GPOUtils
           if(srcIndex[index] == -1) {
             continue;
           }
-          hashCode ^= longArray[srcIndex[index]];
+          long element = longArray[srcIndex[index]];
+          int elementHash = (int) (element ^ (element >>> 32));
+          hashCode = hashMultiplier * hashCode + elementHash;
         }
       }
     }
@@ -1868,7 +1885,7 @@ public class GPOUtils
           if(srcIndex[index] == -1) {
             continue;
           }
-          hashCode ^= Float.floatToIntBits(floatArray[srcIndex[index]]);
+          hashCode = hashMultiplier * hashCode + Float.floatToIntBits(floatArray[srcIndex[index]]);
         }
       }
     }
@@ -1883,7 +1900,9 @@ public class GPOUtils
           if(srcIndex[index] == -1) {
             continue;
           }
-          hashCode ^= Double.doubleToLongBits(doubleArray[srcIndex[index]]);
+          long element = Double.doubleToLongBits(doubleArray[srcIndex[index]]);
+          int elementHash = (int) (element ^ (element >>> 32));
+          hashCode = hashMultiplier * hashCode + elementHash;
         }
       }
     }
@@ -1898,7 +1917,8 @@ public class GPOUtils
           if(srcIndex[index] == -1) {
             continue;
           }
-          hashCode ^= objectArray[srcIndex[index]].hashCode();
+
+          hashCode = hashMultiplier * hashCode + objectArray[srcIndex[index]].hashCode();
         }
       }
     }


[73/98] [abbrv] incubator-apex-malhar git commit: MLHR-1886: moving restoring of a file in its own method and added a test that covers re-writing the file when it isn't closed before failure

Posted by da...@apache.org.
MLHR-1886: moving restoring of a file in its own method and added a test that covers re-writing the file when it isn't closed before failure


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/e80b7dfd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/e80b7dfd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/e80b7dfd

Branch: refs/heads/master
Commit: e80b7dfd3763424b8bade84d31ba5dc4f649111a
Parents: dca2484
Author: Chandni Singh <cs...@apache.org>
Authored: Tue Nov 3 13:06:25 2015 -0800
Committer: Chandni Singh <cs...@apache.org>
Committed: Thu Nov 5 17:26:56 2015 -0800

----------------------------------------------------------------------
 .../lib/io/fs/AbstractFileOutputOperator.java   | 113 +++++++++++--------
 .../io/fs/AbstractFileOutputOperatorTest.java   |  52 +++++++++
 2 files changed, 116 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e80b7dfd/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
index 09294a2..744f024 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperator.java
@@ -351,50 +351,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
           }
 
           if (fs.exists(activeFilePath)) {
-            LOG.debug("path exists {}", activeFilePath);
-            long offset = endOffsets.get(seenFileName).longValue();
-            FSDataInputStream inputStream = fs.open(activeFilePath);
-            FileStatus status = fs.getFileStatus(activeFilePath);
-
-            if (status.getLen() != offset) {
-              LOG.info("path corrupted {} {} {}", activeFilePath, offset, status.getLen());
-              byte[] buffer = new byte[COPY_BUFFER_SIZE];
-              String recoveryFileName = seenFileNamePart + '.' + System.currentTimeMillis() + TMP_EXTENSION;
-              Path recoveryFilePath = new Path(filePath + Path.SEPARATOR + recoveryFileName);
-              FSDataOutputStream fsOutput = openStream(recoveryFilePath, false);
-
-              while (inputStream.getPos() < offset) {
-                long remainingBytes = offset - inputStream.getPos();
-                int bytesToWrite = remainingBytes < COPY_BUFFER_SIZE ? (int) remainingBytes : COPY_BUFFER_SIZE;
-                inputStream.read(buffer);
-                fsOutput.write(buffer, 0, bytesToWrite);
-              }
-
-              flush(fsOutput);
-              fsOutput.close();
-              inputStream.close();
-
-              FileContext fileContext = FileContext.getFileContext(fs.getUri());
-              LOG.debug("active {} recovery {} ", activeFilePath, recoveryFilePath);
-
-              if (alwaysWriteToTmp) {
-                //recovery file is used as the new tmp file and we cannot delete the old tmp file because when the operator
-                //is restored to an earlier check-pointed window, it will look for an older tmp.
-                fileNameToTmpName.put(seenFileNamePart, recoveryFileName);
-              } else {
-                LOG.debug("recovery path {} actual path {} ", recoveryFilePath, status.getPath());
-                fileContext.rename(recoveryFilePath, status.getPath(), Options.Rename.OVERWRITE);
-              }
-            } else {
-              if (alwaysWriteToTmp && filesWithOpenStreams.contains(seenFileName)) {
-                String currentTmp = seenFileNamePart + '.' + System.currentTimeMillis() + TMP_EXTENSION;
-                FSDataOutputStream outputStream = openStream(new Path(filePath + Path.SEPARATOR + currentTmp), false);
-                IOUtils.copy(inputStream, outputStream);
-                outputStream.close();
-                fileNameToTmpName.put(seenFileNamePart, currentTmp);
-              }
-              inputStream.close();
-            }
+            recoverFile(seenFileName, seenFileNamePart, activeFilePath);
           }
         }
       }
@@ -448,10 +405,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
           }
         }
       }
-
       LOG.debug("setup completed");
-      LOG.debug("end-offsets {}", endOffsets);
-
     } catch (IOException e) {
       throw new RuntimeException(e);
     }
@@ -463,6 +417,68 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
   }
 
   /**
+   * Recovers a file which exists on the disk. If the length of the file is not same as the
+   * length which the operator remembers then the file is truncated. <br/>
+   * When always writing to a temporary file, then a file is restored even when the length is same as what the
+   * operator remembers however this is done only for files which had open streams that weren't closed before
+   * failure.
+   *
+   * @param filename     name of the actual file.
+   * @param partFileName name of the part file. When not rolling this is same as filename; otherwise this is the
+   *                     latest open part file name.
+   * @param filepath     path of the file. When always writing to temp file, this is the path of the temp file; otherwise
+   *                     path of the actual file.
+   * @throws IOException
+   */
+  private void recoverFile(String filename, String partFileName, Path filepath) throws IOException
+  {
+    LOG.debug("path exists {}", filepath);
+    long offset = endOffsets.get(filename).longValue();
+    FSDataInputStream inputStream = fs.open(filepath);
+    FileStatus status = fs.getFileStatus(filepath);
+
+    if (status.getLen() != offset) {
+      LOG.info("path corrupted {} {} {}", filepath, offset, status.getLen());
+      byte[] buffer = new byte[COPY_BUFFER_SIZE];
+      String recoveryFileName = partFileName + '.' + System.currentTimeMillis() + TMP_EXTENSION;
+      Path recoveryFilePath = new Path(filePath + Path.SEPARATOR + recoveryFileName);
+      FSDataOutputStream fsOutput = openStream(recoveryFilePath, false);
+
+      while (inputStream.getPos() < offset) {
+        long remainingBytes = offset - inputStream.getPos();
+        int bytesToWrite = remainingBytes < COPY_BUFFER_SIZE ? (int)remainingBytes : COPY_BUFFER_SIZE;
+        inputStream.read(buffer);
+        fsOutput.write(buffer, 0, bytesToWrite);
+      }
+
+      flush(fsOutput);
+      fsOutput.close();
+      inputStream.close();
+
+      FileContext fileContext = FileContext.getFileContext(fs.getUri());
+      LOG.debug("active {} recovery {} ", filepath, recoveryFilePath);
+
+      if (alwaysWriteToTmp) {
+        //recovery file is used as the new tmp file and we cannot delete the old tmp file because when the operator
+        //is restored to an earlier check-pointed window, it will look for an older tmp.
+        fileNameToTmpName.put(partFileName, recoveryFileName);
+      } else {
+        LOG.debug("recovery path {} actual path {} ", recoveryFilePath, status.getPath());
+        fileContext.rename(recoveryFilePath, status.getPath(), Options.Rename.OVERWRITE);
+      }
+    } else {
+      if (alwaysWriteToTmp && filesWithOpenStreams.contains(filename)) {
+        String currentTmp = partFileName + '.' + System.currentTimeMillis() + TMP_EXTENSION;
+        FSDataOutputStream outputStream = openStream(new Path(filePath + Path.SEPARATOR + currentTmp), false);
+        IOUtils.copy(inputStream, outputStream);
+        streamsCache.put(filename, new FSFilterStreamContext(outputStream));
+        fileNameToTmpName.put(partFileName, currentTmp);
+      }
+      inputStream.close();
+    }
+  }
+
+  /**
    * Creates the {@link CacheLoader} for loading an output stream when it is not present in the cache.
    * @return cache loader
    */
@@ -656,7 +672,6 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
       fileName = getPartFileNamePri(fileName);
       part.setValue(currentOpenPart.getValue());
     }
-    LOG.debug("request finalize {}", fileName);
     filesPerWindow.add(fileName);
   }
 
@@ -1215,7 +1230,7 @@ public abstract class AbstractFileOutputOperator<INPUT> extends BaseOperator imp
         //a tmp file has tmp extension always preceded by timestamp
         String actualFileName = statusName.substring(0, statusName.lastIndexOf('.', statusName.lastIndexOf('.') - 1));
         if (fileName.equals(actualFileName)) {
-          LOG.debug("deleting vagrant file {}", statusName);
+          LOG.debug("deleting stray file {}", statusName);
           fs.delete(status.getPath(), true);
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e80b7dfd/library/src/test/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperatorTest.java
----------------------------------------------------------------------
diff --git a/library/src/test/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperatorTest.java b/library/src/test/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperatorTest.java
index f7d1731..cbcc8b4 100644
--- a/library/src/test/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperatorTest.java
+++ b/library/src/test/java/com/datatorrent/lib/io/fs/AbstractFileOutputOperatorTest.java
@@ -1883,6 +1883,58 @@ public class AbstractFileOutputOperatorTest
     checkCompressedFile(oddFile, oddOffsets, 1, 5, 1000, null, null);
   }
 
+  @Test
+  public void testRecoveryOfOpenFiles()
+  {
+    EvenOddHDFSExactlyOnceWriter writer = new EvenOddHDFSExactlyOnceWriter();
+    writer.setMaxLength(4);
+    File meta = new File(testMeta.getDir());
+    writer.setFilePath(meta.getAbsolutePath());
+    writer.setAlwaysWriteToTmp(true);
+    writer.setup(testMeta.testOperatorContext);
+
+    writer.beginWindow(0);
+    writer.input.put(0);
+    writer.input.put(1);
+    writer.input.put(2);
+    writer.input.put(3);
+    writer.endWindow();
+
+    //failure and restored
+    writer.setup(testMeta.testOperatorContext);
+    writer.input.put(4);
+    writer.input.put(5);
+    writer.endWindow();
+
+    writer.beginWindow(1);
+    writer.input.put(6);
+    writer.input.put(7);
+    writer.input.put(8);
+    writer.input.put(9);
+    writer.input.put(6);
+    writer.input.put(7);
+    writer.endWindow();
+
+    writer.committed(1);
+
+    //Part 0 checks
+    String evenFileName = testMeta.getDir() + File.separator + EVEN_FILE;
+    String correctContents = "0\n" + "2\n" + "4\n";
+    checkOutput(0, evenFileName, correctContents);
+
+    String oddFileName = testMeta.getDir() + File.separator + ODD_FILE;
+    correctContents = "1\n" + "3\n" + "5\n";
+    checkOutput(0, oddFileName, correctContents);
+
+
+    //Part 1 checks
+    correctContents = "6\n" + "8\n" + "6\n";
+    checkOutput(1, evenFileName, correctContents);
+
+    correctContents = "7\n" + "9\n" + "7\n";
+    checkOutput(1, oddFileName, correctContents);
+  }
+
   private void checkCompressedFile(File file, List<Long> offsets, int startVal, int totalWindows, int totalRecords, SecretKey secretKey, byte[] iv) throws IOException
   {
     FileInputStream fis;


[83/98] [abbrv] incubator-apex-malhar git commit: Cleanup of web resources

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/server.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/server.js b/contrib/src/main/html/siteops/server.js
deleted file mode 100644
index fe364a2..0000000
--- a/contrib/src/main/html/siteops/server.js
+++ /dev/null
@@ -1,115 +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.
- */
-/**
- * Functions for drawing server load vs time chart.
- */
-
-function RenderServerLoadTimeChart()
-{  
-  // create/delete rows 
-  if (serverLoadTable.getNumberOfRows() < serverLoadDataPoints.length)
-  {    
-    var numRows = serverLoadDataPoints.length - serverLoadTable.getNumberOfRows();
-    serverLoadTable.addRows(numRows);
-  } else {
-    for(var i=(serverLoadTable.getNumberOfRows()-1); i >= serverLoadDataPoints.length; i--)
-    {
-      serverLoadTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/cost data points. 
-  for(var i=0; i < serverLoadTable.getNumberOfRows(); i++)
-  {
-    serverLoadTable.setCell(i, 0, new Date(parseInt(serverLoadDataPoints[i].timestamp)));
-    serverLoadTable.setCell(i, 1, parseFloat(serverLoadDataPoints[i].view));
-  }
-
-  // get chart options
-  var serverName = document.getElementById('servername').value;  
-  var title = "All Servers (PVS/Min)";
-  if (serverName != "all") title = serverName + " (PVS/Min)";
-  var options = {pointSize: 0, lineWidth : 1, legend : { position : 'top'} };
-  options.title = title;
-
-  // Draw line chart.
-  serverLoadChart.draw(serverLoadView, options); 
-}
-
-function DrawServerLoadTime()
-{
-  // get url 
-  var url = "ServerLoad.php?from=" + Math.floor(serverLoadLookback);
-  if ( serverName && (serverName.length > 0))
-  {   
-    url += "&server=" + serverName;    
-  }
-
-  // fetch data  
-    try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        serverLoadData = connect.response;
-        var pts = JSON.parse(serverLoadData);
-        for(var i=0; i <  pts.length; i++) 
-        {
-          serverLoadDataPoints.push(pts[i]);
-          delete pts[i];
-        }
-        delete pts;
-        sortByKey(serverLoadDataPoints, "timestamp");
-        RenderServerLoadTimeChart();
-        delete serverLoadData;
-        delete serverLoadDataPoints;
-        serverLoadDataPoints = new Array();
-      }
-    }
-    connect.open('GET',  url, true);
-    connect.send(null);
-  } catch(e) {
-  }
-  serverLoadLookback = (new Date().getTime()/1000) -  (3600*serverLoadInterval) - 60;
-}
-
-function HandleServerLoadTimeSubmit()
-{
-  // reset intercval  
-  if(serverNowPlaying) clearInterval(serverNowPlaying);
-
-  // get params 
-  serverName = document.getElementById('servername').value;
-  serverLoadLookback = document.getElementById('serverloadlookback').value;
-  if ( !serverLoadLookback || (serverLoadLookback == "")) {
-    serverLoadLookback = (new Date().getTime()/1000) - 3600;
-  }  else {
-    serverLoadLookback = (new Date().getTime()/1000) - 3600 * serverLoadLookback;
-  }
-
-  // set from values  
-  document.getElementById('servername').value = serverName;
-  var lookback = document.getElementById('serverloadlookback').value;
-  document.getElementById('serverloadlookback').value = lookback;
-  serverLoadInterval = lookback;
-       
-  // darw server load/time chart  
-  DrawServerLoadTime();
-  serverNowPlaying = setInterval(DrawServerLoadTime, 60 * 1000); 
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/contrib/src/main/html/siteops/serverfail.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/serverfail.js b/contrib/src/main/html/siteops/serverfail.js
deleted file mode 100644
index 76e5bf5..0000000
--- a/contrib/src/main/html/siteops/serverfail.js
+++ /dev/null
@@ -1,64 +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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawServer404TableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        var server404 = new google.visualization.DataTable();
-        server404.addColumn('string', 'SERVER');
-        server404.addColumn('number', '404/sec');
-        server404.addRows(10);
-        for(var i=0; ((i <  pts.length)&&(i < 10)); i++) 
-        {
-          var row = pts[i].split("##");
-          if ((row[0] == null)||(row[0] == ""))
-          {
-            server404.setCell(i, 0, "-");
-          } else {
-            server404.setCell(i, 0, row[0]);
-          }
-          if ((row[1] == null)||(row[1] == ""))
-          {
-            server404.setCell(i, 1, 0);
-          } else {
-            server404.setCell(i, 1, parseInt(row[1]));
-          }
-        }
-        //document.getElementById('risky_client_div').innerHTML = data;
-        //document.getElementById('risky_client_div').innerHTML = server404.getNumberOfRows();
-        server404TableChart.draw(server404, {showRowNumber: true});
-        delete server404;
-        delete data;
-        delete pts;
-      }
-    }
-    connect.open('GET',  "Server404.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/demos/machinedata/src/main/html/global.js
----------------------------------------------------------------------
diff --git a/demos/machinedata/src/main/html/global.js b/demos/machinedata/src/main/html/global.js
new file mode 100644
index 0000000..753f58f
--- /dev/null
+++ b/demos/machinedata/src/main/html/global.js
@@ -0,0 +1,269 @@
+/*
+ * 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.
+ */
+/**
+ * Declaration and initialization for global variables.
+ */
+
+// url parameters   
+var params;
+
+// Data Points 
+var aggrData; 
+var aggrDataPoints;
+var contData;
+var contDataPoints;
+
+// CPU data table 
+var cpuTable;
+var cpuChart; 
+var cpuView;
+
+// ram data table 
+var ramTable;
+var ramChart; 
+var ramView;  
+
+// hdd data table 
+var hddTable;
+var hddChart; 
+var hddView;  
+
+// chart options
+var chartOptions;
+
+// Date formatter  
+var dateFormatter;
+
+// window look back value 
+var lookback;
+var aggrLookBack;
+var contLookBack;
+var contRefresh;
+
+// Get split query string
+function QueryString() {
+  var query_string = {};
+  var query = window.location.search.substring(1);
+  return query;
+}
+function SplitQuery(query)
+{  
+	var params = {};
+	var vars = query.split("&");
+	for (var i=0;i<vars.length;i++)
+	{
+		var pair = vars[i].split("=");
+		if(pair.length == 2) 
+		{
+			params[pair[0]] = pair[1];
+		}
+	}
+	return params;
+}  
+
+// Initialize global variable(s)
+function InitializeGlobal()
+{
+  // Initialize params  
+  params = SplitQuery(QueryString()); 
+       
+  // Initialize data points 
+  aggrDataPoints = new Array();
+  contDataPoints = new Array();
+    
+  // Initialize cpu table 
+  cpuTable = new google.visualization.DataTable(); 
+  cpuTable.addColumn('datetime', 'Time');
+  cpuTable.addColumn('number', 'CPU');
+  chartOptions = { width: 600, height: 300, legend: 'none', pointSize: 0, lineWidth : 1 };
+  cpuChart = new google.visualization.ScatterChart(document.getElementById('chart_div'));
+  cpuView = new google.visualization.DataView(cpuTable);
+
+  // Initialize ram table 
+  ramTable = new google.visualization.DataTable(); 
+  ramTable.addColumn('datetime', 'Time');
+  ramTable.addColumn('number', 'RAM');;
+  ramChart = new google.visualization.ScatterChart(document.getElementById('chart1_div'));
+  ramView = new google.visualization.DataView(ramTable);
+
+  // Initialize hdd table 
+  hddTable = new google.visualization.DataTable(); 
+  hddTable.addColumn('datetime', 'Time');
+  hddTable.addColumn('number', 'HDD');;
+  hddChart = new google.visualization.ScatterChart(document.getElementById('chart2_div'));
+  hddView = new google.visualization.DataView(hddTable);
+    
+  // get lookback value  
+  lookback = (new Date().getTime()/1000) - 3600*6;
+  if (params['lookback'] && (params['lookback'].length > 0)) lookback = (new Date().getTime()/1000) - (3600*(parseInt(params['lookback'])));
+  aggrLookBack = lookback;
+     
+  // get continuos lookback 
+  contLookBack = lookback;
+  contRefresh = 5;
+
+  // get param lookback  
+  paramLookBack = 6;
+  if (params['lookback'] && (params['lookback'].length > 0)) paramLookBack = parseInt(params['lookback']);
+  //if (params['refresh'] && (params['refresh'].length > 0)) contRefresh = parseInt(params['refresh']);
+}
+
+
+/**
+ * Function to create fetch urls from given parameters
+ */
+function DataUrl() 
+{       
+    var url = "json.php?bucket=m";
+    url += "&customer=";
+    if (params['customer'])
+    {	
+      url += params['customer'];
+    }
+    url += "&product=";
+    if (params['product'])
+    {	
+      url += params['product'];
+    }
+    url += "&os=";
+    if (params['os'])
+    {	
+      url += params['os'];
+    }
+    url += "&software1=";
+    if (params['software1'])
+    {
+      url += params['software1'];
+    }
+    url += "&software2=";
+    if (params['software2'])
+    {
+      url += params['software2'];
+    }
+    url += "&software3=";
+    if (params['software3'])
+    {
+      url += params['software3'];
+    }
+     url += "&from=";
+    url += Math.floor(lookback);
+    return url;   
+}
+
+/**
+ * Creates data table with time stamp and cpu values.
+ * Draw line chart for time vs cpu.
+ */
+function DrawCPUChart()
+{
+  // create/delete rows 
+  if (cpuTable.getNumberOfRows() < aggrDataPoints.length)
+  {    
+    var numRows = aggrDataPoints.length - cpuTable.getNumberOfRows();
+    cpuTable.addRows(numRows);
+  } else {
+    for(var i=(cpuTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
+    {
+      cpuTable.removeRow(i);    
+    }
+  }
+    
+  // Populate data table with time/cpu data points. 
+  for(var i=0; i < cpuTable.getNumberOfRows(); i++)
+  {
+    //if(parseFloat(aggrDataPoints[i].cpu) < 500) continue;
+    cpuTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
+    cpuTable.setCell(i, 1, parseFloat(aggrDataPoints[i].cpu));
+  }
+
+  // Draw line chart.
+  chartOptions.title = 'CPU Usage (%)';
+  cpuChart.draw(cpuView, chartOptions); 
+}     
+
+/**
+ * Creates data table with time stamp and revenu values.
+ * Draw line chart for time vs ram.
+ */
+function DrawRAMChart()
+{
+  // create/delete rows 
+  if (ramTable.getNumberOfRows() < aggrDataPoints.length)
+  {    
+    var numRows = aggrDataPoints.length - ramTable.getNumberOfRows();
+    ramTable.addRows(numRows);
+  } else {
+    for(var i=(ramTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
+    {
+      ramTable.removeRow(i);    
+    }
+  }
+
+  // Populate data table with time/ram data points. 
+  for(var i=0; i < ramTable.getNumberOfRows(); i++)
+  {
+    ramTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
+    ramTable.setCell(i, 1, parseFloat(aggrDataPoints[i].ram));
+  }
+
+  // Draw line chart.
+  chartOptions.title = 'RAM Usage (%)';
+  ramChart.draw(ramView, chartOptions); 
+}  
+
+/**
+ * Creates data table with time stamp and hdd values.
+ * Draw line chart for time vs hdd.
+ */
+function DrawHDDChart()
+{
+  // create/delete rows 
+  if (hddTable.getNumberOfRows() < aggrDataPoints.length)
+  {    
+    var numRows = aggrDataPoints.length - hddTable.getNumberOfRows();
+    hddTable.addRows(numRows);
+  } else {
+    for(var i=(hddTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
+    {
+      hddTable.removeRow(i);    
+    }
+  }
+
+  // Populate data table with time/hdd data points. 
+  for(var i=0; i < hddTable.getNumberOfRows(); i++)
+  {
+    hddTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
+    hddTable.setCell(i, 1, parseInt(aggrDataPoints[i].hdd));
+  }
+
+  // Draw line chart.
+  chartOptions.title = 'HDD Usage (%)';
+  hddChart.draw(hddView, chartOptions); 
+}
+
+/**
+ * Sort json array  
+ */
+function sortByKey(array, key) {
+    return array.sort(function(a, b) {
+        var x = a[key]; var y = b[key];
+        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+    });
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/demos/machinedata/src/main/html/index.php
----------------------------------------------------------------------
diff --git a/demos/machinedata/src/main/html/index.php b/demos/machinedata/src/main/html/index.php
new file mode 100644
index 0000000..aa1aadc
--- /dev/null
+++ b/demos/machinedata/src/main/html/index.php
@@ -0,0 +1,268 @@
+/*
+ * 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.
+ */
+<!--
+ --  Copyright (c) 2012-2013 Malhar, Inc.
+ --  All Rights Reserved.
+ -->
+    
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Data Torrent : Machine Generated Data Demo </title>
+
+<link rel="stylesheet" type="text/css" href="malhar.css">
+
+<!-- Google charts include -->
+<script type="text/javascript" src="https://www.google.com/jsapi"></script>
+<script type="text/javascript">
+google.load('visualization', '1', {'packages':['corechart']});
+</script>
+
+<!-- Malhar charting utils -->
+<script type="text/javascript" src="global.js"></script>
+
+<!-- window onload -->
+<script type="text/javascript">
+
+function DrawAggrCharts()
+{
+  // get refresh url 
+  lookback = aggrLookBack; 
+  var url = DataUrl();        
+
+  // fetch data, draw charts
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+
+console.log(url);
+        aggrData = connect.response;
+        var pts = JSON.parse(aggrData);
+        aggrDataPoints = new Array();
+        for(var i=0; i <  pts.length; i++) aggrDataPoints.push(pts[i]);
+        DrawCPUChart();
+        DrawRAMChart();
+        DrawHDDChart();
+        //DrawImpressionsChart();
+        delete aggrData;
+      }
+    }
+    connect.open('GET',  url, true);
+    connect.send(null);
+  } catch(e) {
+  }
+  aggrLookBack += 30;
+}
+
+function DrawContCharts()  
+{    
+  // get refresh url 
+  lookback = contLookBack; 
+  var url = DataUrl();    
+  //document.getElementById('chart_div').innerHTML = url;
+
+  // fetch data, draw charts
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        contData = connect.response;   
+        var newPts = JSON.parse(contData); 
+        contDataPoints = new Array();
+        for(var i=0; i <  newPts.length; i++) contDataPoints.push(newPts[i]);
+        DrawCtrChart() ;
+        DrawMarginChart();
+        delete contData;
+        delete newPts;
+      }
+    }
+    connect.open('GET',  url, true);
+    connect.send(null);
+  } catch(e) {
+  }
+  contLookBack += contRefresh;
+}
+
+window.onload = function() {
+
+  // Initialize global 
+  InitializeGlobal();   
+
+  // Inituialize form fields  
+  if (params['customer']) document.getElementById('customer').value = params['customer'];
+  if (params['product']) document.getElementById('product').value = params['product'];
+  if (params['os']) document.getElementById('os').value = params['os'];
+  if (params['software1']) document.getElementById('software1').value = params['software1'];
+  if (params['software2']) document.getElementById('software2').value = params['software2'];
+  if (params['software3']) document.getElementById('software3').value = params['software3'];
+  if (params['refresh'])
+  {
+    document.getElementById('refresh').value = params['refresh'];   
+  } else {
+    document.getElementById('refresh').value = 5;
+  }    
+  if (params['lookback'])
+  {
+    document.getElementById('lookback').value = params['lookback'];   
+  } else {
+    document.getElementById('lookback').value = 6;
+  }
+       
+  // draw charts 
+  DrawAggrCharts();
+  //DrawContCharts();
+  setInterval(DrawAggrCharts, 30000);
+  //setInterval(DrawContCharts, contRefresh * 1000);
+};
+
+</script>
+
+</head>
+<body>
+
+    <div id="header">
+        <ul class="dashboard-modes">
+            <li>
+                <a href="#" class="active">Machine Generated Data Demo </a>
+            </li>
+        </ul>
+
+    </div>
+	
+	<div id="main">
+    <div id="pagecontent">
+        <div class="dashboardMgr">
+            <div class="inner" style="">
+                <h2 class="title">View Real Time Data Charts</h2> 
+                <form method="GET" action="index.php">
+                    
+                    <label for="customer">Customer ID:</label>
+                    <select name="customer" id="customer" style="width:200px;">
+                  		<option value="">ALL</option>
+                		<?php
+                   			for ($i = 1; $i <= 5; $i++) {
+                  				print "<option value=\"$i\">Customer $i</option>\n";
+                			}
+                		?>
+             		</select>
+             		
+            		<label for="">Product ID:</label>
+            		<select name="product" id="product" style="width:200px;">
+              		    <option value="">ALL</option>
+                		<?php
+                			for ($i = 4; $i <= 6; $i++) {
+                  				print "<option value=\"$i\">Product $i</option>\n";
+                			}
+                		?>
+            		</select>
+        		
+        		    <label for="">Product OS:</label>
+            		<select name="os" id="os" style="width:200px;">
+              		    <option value="">ALL</option>
+        		        <?php
+                			for ($i = 10; $i <= 12; $i++) {
+                  				print "<option value=\"$i\">OS $i</option>\n";
+                			}
+        	            ?>
+            		</select>
+            		
+                    <label for="software1">Software1 Ver:</label>
+                    <select name="software1" id="software1" style="width:200px;">
+                  		<option value="">ALL</option>
+                		<?php
+                   			for ($i = 10; $i <= 12; $i++) {
+                  				print "<option value=\"$i\">Software1 Version $i</option>\n";
+                			}
+                		?>
+             		</select>
+
+                    <label for="software2">Software2 Ver:</label>
+                    <select name="software2" id="software2" style="width:200px;">
+                  		<option value="">ALL</option>
+                		<?php
+                   			for ($i = 12; $i <= 14; $i++) {
+                  				print "<option value=\"$i\">Software2 Version $i</option>\n";
+                			}
+                		?>
+             		</select>
+
+                    <label for="software3">Software3 Ver:</label>
+                    <select name="software3" id="software3" style="width:200px;">
+                  		<option value="">ALL</option>
+                		<?php
+                   			for ($i = 4; $i <= 6; $i++) {
+                  				print "<option value=\"$i\">Software3 Version $i</option>\n";
+                			}
+                		?>
+             		</select>
+
+            		<label for="">Refresh Interval:</label>
+            		<div class="input-append">
+                        <input type="text" name="refresh" id="refresh" class="input-small"/>
+                        <span class="add-on">Secs</span>
+                    </div>
+                    
+
+        		    <label for="">Look Back:</label>
+        		    <div class="input-append">
+                        <input type="text" name="lookback" id="lookback" class="input-small"/>
+                        <span class="add-on">Hours</span>
+                    </div>
+                    
+                    <input type="submit" value="submit" class="btn btn-primary" />
+                    
+                </form>
+            </div>
+            <div class="collapser-container">
+                <div class="collapser">
+                    <div class="collapse-dot"></div>
+                    <div class="collapse-dot"></div>
+                    <div class="collapse-dot"></div>
+                </div>
+            </div>
+        </div>
+        <div class="dashboardMain">
+            
+	<!-- <table><tbody>
+                <tr>
+        	      <td><div id="chart_div"></div></td>	
+        	      <td><div id="chart1_div" ></div></td>	
+                 </tr>
+                 <tr>
+        	     <td><div id="chart2_div" ></div></td>	
+        	     <td><div id="chart3_div" ></div></td>
+                 </tr>
+                 <tr>
+        	   <td><div id="chart4_div" ></div></td>	
+        	    <td><div id="chart5_div" ></div></td>	
+                 </tr>
+        	 </tr></tbody></table> -->
+    	<div class="chart-ctnr" id="chart_div"></div>
+        <div class="chart-ctnr" id="chart1_div" ></div>	
+        <div class="chart-ctnr" id="chart2_div" ></div>	
+<!--        <div class="chart-ctnr" id="chart3_div" ></div>
+        <div class="chart-ctnr" id="chart4_div" ></div>	
+        <div class="chart-ctnr" id="chart5_div" ></div> -->
+        </div>		
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/f0863913/demos/machinedata/src/main/html/json.php
----------------------------------------------------------------------
diff --git a/demos/machinedata/src/main/html/json.php b/demos/machinedata/src/main/html/json.php
new file mode 100644
index 0000000..75a7117
--- /dev/null
+++ b/demos/machinedata/src/main/html/json.php
@@ -0,0 +1,96 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('localhost');
+$redis->select(15);
+$from = $_GET['from'];
+$bucket = $_GET['bucket'];
+$customer = $_GET['customer'];
+$product = $_GET['product'];
+$os = $_GET['os'];
+$software1 = $_GET['software1'];
+$software2 = $_GET['software2'];
+$software3 = $_GET['software3'];
+
+switch ($bucket) {
+case 'D':
+  $format = 'Ymd';
+  $incr = 60 * 60 * 24;
+  break;
+case 'h':
+  $format = 'YmdH';
+  $incr = 60 * 60;
+  break;
+case 'm':
+  $format = 'YmdHi';
+  $incr = 60;
+  break;
+default:
+  break;
+}
+
+$arr = array();
+if ($customer != '') {
+  $arr[] = "0:".$customer;
+} 
+if ($product != '') {
+  $arr[] = "1:".$product;
+} 
+if ($os != '') {
+  $arr[] = "2:".$os;
+} 
+if ($software1 != '') {
+  $arr[] = "3:".$software1;
+} 
+if ($software2 != '') {
+  $arr[] = "4:".$software2;
+} 
+if ($software3 != '') {
+  $arr[] = "5:".$software3;
+} 
+$subpattern = "";
+if (count($arr) != 0) {
+  $subpattern = join("|", $arr);
+}
+
+$result = array();
+
+while ($from < time()) {
+  $date = gmdate($format, $from);
+  if ($subpattern != '') {
+    $key = $bucket . '|' . $date . '|' . $subpattern;
+  } else {
+    $key = $bucket . '|' . $date ;
+  }
+  $hash = $redis->hGetAll($key);
+  if ($hash) {
+    $cpu = $hash['cpu'];
+    $ram = $hash['ram'];
+    $hdd = $hash['hdd'];
+    $result[] = array('timestamp'=> $from * 1000, 'cpu'=>$cpu, 'ram'=>$ram, 'hdd'=>$hdd);
+  }
+  $from += $incr;
+}
+
+array_pop($result);
+print json_encode($result);
+
+?>


[51/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
Removing all web demos


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/e1a45507
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/e1a45507
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/e1a45507

Branch: refs/heads/master
Commit: e1a45507b257c3b514d0f4a13794195909dcb8fd
Parents: e999ce2
Author: MalharJenkins <je...@datatorrent.com>
Authored: Wed Oct 7 17:28:03 2015 -0700
Committer: sashadt <sa...@datatorrent.com>
Committed: Wed Oct 7 18:15:55 2015 -0700

----------------------------------------------------------------------
 web/demos/.bowerrc                              |    3 -
 web/demos/.editorconfig                         |   21 -
 web/demos/.gitattributes                        |    1 -
 web/demos/.gitignore                            |    6 -
 web/demos/.jshintrc                             |   24 -
 web/demos/.travis.yml                           |    7 -
 web/demos/Gruntfile.js                          |  396 --
 web/demos/README.md                             |   76 -
 web/demos/app.js                                |   69 -
 web/demos/app/.buildignore                      |    1 -
 web/demos/app/.htaccess                         |  543 --
 web/demos/app/404.html                          |  177 -
 web/demos/app/favicon.ico                       |  Bin 4286 -> 0 bytes
 web/demos/app/images/glyphicons-halflings.png   |  Bin 12799 -> 0 bytes
 web/demos/app/images/main_banner.png            |  Bin 2181 -> 0 bytes
 web/demos/app/index.html                        |  138 -
 web/demos/app/robots.txt                        |    3 -
 web/demos/app/scripts/app.js                    |   73 -
 web/demos/app/scripts/controllers/dimensions.js |  302 -
 web/demos/app/scripts/controllers/fraud.js      |  442 --
 web/demos/app/scripts/controllers/machine.js    |  275 -
 web/demos/app/scripts/controllers/mobile.js     |  131 -
 web/demos/app/scripts/controllers/twitter.js    |  103 -
 web/demos/app/scripts/directives/barChart.js    |  104 -
 web/demos/app/scripts/directives/gauge.js       |   63 -
 web/demos/app/scripts/directives/lineChart.js   |   75 -
 web/demos/app/scripts/directives/stat.js        |   66 -
 web/demos/app/scripts/filters/elapsed.js        |  105 -
 web/demos/app/scripts/services/rest.js          |   95 -
 web/demos/app/scripts/services/socket.js        |  187 -
 .../app/scripts/vendor/angular-google-maps.js   |  584 --
 web/demos/app/scripts/vendor/gauge.js           |  283 -
 web/demos/app/scripts/vendor/jquery.pnotify.js  |  918 ---
 web/demos/app/scripts/vendor/jsbn.js            | 1244 ----
 web/demos/app/scripts/vendor/markerwithlabel.js |  577 --
 web/demos/app/scripts/vendor/visibly.js         |  132 -
 web/demos/app/styles/bootstrap.css              | 6175 ------------------
 web/demos/app/styles/jquery.pnotify.default.css |  101 -
 web/demos/app/styles/main.css                   |  251 -
 web/demos/app/views/dimensions.html             |  185 -
 web/demos/app/views/fraud.html                  |   84 -
 web/demos/app/views/machine.html                |  193 -
 web/demos/app/views/mobile.html                 |   70 -
 web/demos/app/views/stat.html                   |   32 -
 web/demos/app/views/twitter.html                |   58 -
 web/demos/app/views/welcome.html                |   25 -
 web/demos/bower.json                            |   25 -
 web/demos/config.js                             |   85 -
 web/demos/dev_start.sh                          |   32 -
 web/demos/dist_start.sh                         |   32 -
 web/demos/docs/demos_architecture.png           |  Bin 27500 -> 0 bytes
 web/demos/karma-e2e.conf.js                     |   72 -
 web/demos/karma.conf.js                         |   70 -
 web/demos/package.json                          |   57 -
 web/demos/package/README.md                     |   52 -
 web/demos/package/app.js                        |   69 -
 web/demos/package/app/404.html                  |  177 -
 web/demos/package/app/favicon.ico               |  Bin 4286 -> 0 bytes
 .../images/23bb1446.glyphicons-halflings.png    |  Bin 12799 -> 0 bytes
 .../package/app/images/74c3df97.main_banner.png |  Bin 2181 -> 0 bytes
 web/demos/package/app/index.html                |   85 -
 web/demos/package/app/robots.txt                |    3 -
 .../package/app/scripts/5f986af9.scripts.js     |   19 -
 .../package/app/scripts/9f21e177.modules.js     |   29 -
 .../package/app/scripts/d63799f1.plugins.js     |   26 -
 .../scripts/vendor/74f1038f.markerwithlabel.js  |  577 --
 web/demos/package/app/styles/00ae7995.main.css  |   19 -
 .../package/app/styles/5e6512ec.vendor.css      |   19 -
 web/demos/package/app/views/dimensions.html     |  185 -
 web/demos/package/app/views/fraud.html          |   84 -
 web/demos/package/app/views/machine.html        |  193 -
 web/demos/package/app/views/mobile.html         |   60 -
 web/demos/package/app/views/stat.html           |   32 -
 web/demos/package/app/views/twitter.html        |   58 -
 web/demos/package/app/views/welcome.html        |   25 -
 web/demos/package/config.js                     |   85 -
 web/demos/package/node_modules/.bin/express     |  423 --
 .../package/node_modules/.bin/node-http-proxy   |  113 -
 web/demos/package/node_modules/async/LICENSE    |   19 -
 web/demos/package/node_modules/async/README.md  | 1425 ----
 .../package/node_modules/async/component.json   |   11 -
 .../package/node_modules/async/lib/async.js     |  958 ---
 .../package/node_modules/async/package.json     |   43 -
 .../package/node_modules/dateformat/LICENSE     |   20 -
 .../package/node_modules/dateformat/Readme.md   |   79 -
 .../node_modules/dateformat/lib/dateformat.js   |  183 -
 .../node_modules/dateformat/package.json        |   40 -
 .../node_modules/dateformat/test/basic.js       |   45 -
 .../dateformat/test/test_dayofweek.js           |   10 -
 .../dateformat/test/test_weekofyear.js          |    4 -
 .../dateformat/test/test_weekofyear.sh          |   27 -
 .../package/node_modules/express/.npmignore     |    9 -
 .../package/node_modules/express/.travis.yml    |    4 -
 .../package/node_modules/express/History.md     | 1183 ----
 web/demos/package/node_modules/express/LICENSE  |   22 -
 web/demos/package/node_modules/express/Makefile |   33 -
 .../package/node_modules/express/Readme.md      |  179 -
 .../package/node_modules/express/bin/express    |  423 --
 web/demos/package/node_modules/express/index.js |    4 -
 .../node_modules/express/lib/application.js     |  536 --
 .../package/node_modules/express/lib/express.js |   86 -
 .../node_modules/express/lib/middleware.js      |   32 -
 .../package/node_modules/express/lib/request.js |  526 --
 .../node_modules/express/lib/response.js        |  760 ---
 .../node_modules/express/lib/router/index.js    |  311 -
 .../node_modules/express/lib/router/route.js    |   72 -
 .../package/node_modules/express/lib/utils.js   |  313 -
 .../package/node_modules/express/lib/view.js    |   77 -
 .../node_modules/buffer-crc32/.npmignore        |    1 -
 .../node_modules/buffer-crc32/.travis.yml       |    8 -
 .../express/node_modules/buffer-crc32/README.md |   47 -
 .../express/node_modules/buffer-crc32/index.js  |   88 -
 .../node_modules/buffer-crc32/package.json      |   39 -
 .../node_modules/buffer-crc32/tests/crc.test.js |   89 -
 .../express/node_modules/commander/History.md   |  158 -
 .../express/node_modules/commander/Readme.md    |  276 -
 .../express/node_modules/commander/index.js     | 1152 ----
 .../commander/node_modules/keypress/README.md   |  101 -
 .../commander/node_modules/keypress/index.js    |  346 -
 .../node_modules/keypress/package.json          |   32 -
 .../commander/node_modules/keypress/test.js     |   28 -
 .../express/node_modules/commander/package.json |   41 -
 .../express/node_modules/connect/.npmignore     |   12 -
 .../express/node_modules/connect/.travis.yml    |    4 -
 .../express/node_modules/connect/LICENSE        |   24 -
 .../express/node_modules/connect/Readme.md      |  133 -
 .../express/node_modules/connect/index.js       |    4 -
 .../express/node_modules/connect/lib/cache.js   |   81 -
 .../express/node_modules/connect/lib/connect.js |   92 -
 .../express/node_modules/connect/lib/index.js   |   50 -
 .../connect/lib/middleware/basicAuth.js         |  103 -
 .../connect/lib/middleware/bodyParser.js        |   61 -
 .../connect/lib/middleware/compress.js          |  189 -
 .../connect/lib/middleware/cookieParser.js      |   62 -
 .../connect/lib/middleware/cookieSession.js     |  115 -
 .../node_modules/connect/lib/middleware/csrf.js |   75 -
 .../connect/lib/middleware/directory.js         |  229 -
 .../connect/lib/middleware/errorHandler.js      |   86 -
 .../connect/lib/middleware/favicon.js           |   80 -
 .../node_modules/connect/lib/middleware/json.js |   89 -
 .../connect/lib/middleware/limit.js             |   78 -
 .../connect/lib/middleware/logger.js            |  339 -
 .../connect/lib/middleware/methodOverride.js    |   59 -
 .../connect/lib/middleware/multipart.js         |  133 -
 .../connect/lib/middleware/query.js             |   46 -
 .../connect/lib/middleware/responseTime.js      |   32 -
 .../connect/lib/middleware/session.js           |  355 -
 .../connect/lib/middleware/session/cookie.js    |  140 -
 .../connect/lib/middleware/session/memory.js    |  129 -
 .../connect/lib/middleware/session/session.js   |  116 -
 .../connect/lib/middleware/session/store.js     |   84 -
 .../connect/lib/middleware/static.js            |   95 -
 .../connect/lib/middleware/staticCache.js       |  231 -
 .../connect/lib/middleware/timeout.js           |   55 -
 .../connect/lib/middleware/urlencoded.js        |   78 -
 .../connect/lib/middleware/vhost.js             |   40 -
 .../express/node_modules/connect/lib/patch.js   |   79 -
 .../express/node_modules/connect/lib/proto.js   |  230 -
 .../connect/lib/public/directory.html           |   81 -
 .../node_modules/connect/lib/public/error.html  |   14 -
 .../node_modules/connect/lib/public/favicon.ico |  Bin 1406 -> 0 bytes
 .../connect/lib/public/icons/page.png           |  Bin 635 -> 0 bytes
 .../connect/lib/public/icons/page_add.png       |  Bin 739 -> 0 bytes
 .../connect/lib/public/icons/page_attach.png    |  Bin 794 -> 0 bytes
 .../connect/lib/public/icons/page_code.png      |  Bin 818 -> 0 bytes
 .../connect/lib/public/icons/page_copy.png      |  Bin 663 -> 0 bytes
 .../connect/lib/public/icons/page_delete.png    |  Bin 740 -> 0 bytes
 .../connect/lib/public/icons/page_edit.png      |  Bin 807 -> 0 bytes
 .../connect/lib/public/icons/page_error.png     |  Bin 793 -> 0 bytes
 .../connect/lib/public/icons/page_excel.png     |  Bin 817 -> 0 bytes
 .../connect/lib/public/icons/page_find.png      |  Bin 879 -> 0 bytes
 .../connect/lib/public/icons/page_gear.png      |  Bin 833 -> 0 bytes
 .../connect/lib/public/icons/page_go.png        |  Bin 779 -> 0 bytes
 .../connect/lib/public/icons/page_green.png     |  Bin 621 -> 0 bytes
 .../connect/lib/public/icons/page_key.png       |  Bin 801 -> 0 bytes
 .../connect/lib/public/icons/page_lightning.png |  Bin 839 -> 0 bytes
 .../connect/lib/public/icons/page_link.png      |  Bin 830 -> 0 bytes
 .../lib/public/icons/page_paintbrush.png        |  Bin 813 -> 0 bytes
 .../connect/lib/public/icons/page_paste.png     |  Bin 703 -> 0 bytes
 .../connect/lib/public/icons/page_red.png       |  Bin 641 -> 0 bytes
 .../connect/lib/public/icons/page_refresh.png   |  Bin 858 -> 0 bytes
 .../connect/lib/public/icons/page_save.png      |  Bin 774 -> 0 bytes
 .../connect/lib/public/icons/page_white.png     |  Bin 294 -> 0 bytes
 .../lib/public/icons/page_white_acrobat.png     |  Bin 591 -> 0 bytes
 .../public/icons/page_white_actionscript.png    |  Bin 664 -> 0 bytes
 .../connect/lib/public/icons/page_white_add.png |  Bin 512 -> 0 bytes
 .../connect/lib/public/icons/page_white_c.png   |  Bin 587 -> 0 bytes
 .../lib/public/icons/page_white_camera.png      |  Bin 656 -> 0 bytes
 .../connect/lib/public/icons/page_white_cd.png  |  Bin 666 -> 0 bytes
 .../lib/public/icons/page_white_code.png        |  Bin 603 -> 0 bytes
 .../lib/public/icons/page_white_code_red.png    |  Bin 587 -> 0 bytes
 .../lib/public/icons/page_white_coldfusion.png  |  Bin 592 -> 0 bytes
 .../lib/public/icons/page_white_compressed.png  |  Bin 724 -> 0 bytes
 .../lib/public/icons/page_white_copy.png        |  Bin 309 -> 0 bytes
 .../lib/public/icons/page_white_cplusplus.png   |  Bin 621 -> 0 bytes
 .../lib/public/icons/page_white_csharp.png      |  Bin 700 -> 0 bytes
 .../connect/lib/public/icons/page_white_cup.png |  Bin 639 -> 0 bytes
 .../lib/public/icons/page_white_database.png    |  Bin 579 -> 0 bytes
 .../lib/public/icons/page_white_delete.png      |  Bin 536 -> 0 bytes
 .../connect/lib/public/icons/page_white_dvd.png |  Bin 638 -> 0 bytes
 .../lib/public/icons/page_white_edit.png        |  Bin 618 -> 0 bytes
 .../lib/public/icons/page_white_error.png       |  Bin 623 -> 0 bytes
 .../lib/public/icons/page_white_excel.png       |  Bin 663 -> 0 bytes
 .../lib/public/icons/page_white_find.png        |  Bin 676 -> 0 bytes
 .../lib/public/icons/page_white_flash.png       |  Bin 582 -> 0 bytes
 .../lib/public/icons/page_white_freehand.png    |  Bin 639 -> 0 bytes
 .../lib/public/icons/page_white_gear.png        |  Bin 402 -> 0 bytes
 .../connect/lib/public/icons/page_white_get.png |  Bin 516 -> 0 bytes
 .../connect/lib/public/icons/page_white_go.png  |  Bin 612 -> 0 bytes
 .../connect/lib/public/icons/page_white_h.png   |  Bin 603 -> 0 bytes
 .../lib/public/icons/page_white_horizontal.png  |  Bin 296 -> 0 bytes
 .../connect/lib/public/icons/page_white_key.png |  Bin 616 -> 0 bytes
 .../lib/public/icons/page_white_lightning.png   |  Bin 669 -> 0 bytes
 .../lib/public/icons/page_white_link.png        |  Bin 614 -> 0 bytes
 .../lib/public/icons/page_white_magnify.png     |  Bin 554 -> 0 bytes
 .../lib/public/icons/page_white_medal.png       |  Bin 706 -> 0 bytes
 .../lib/public/icons/page_white_office.png      |  Bin 779 -> 0 bytes
 .../lib/public/icons/page_white_paint.png       |  Bin 688 -> 0 bytes
 .../lib/public/icons/page_white_paintbrush.png  |  Bin 618 -> 0 bytes
 .../lib/public/icons/page_white_paste.png       |  Bin 620 -> 0 bytes
 .../connect/lib/public/icons/page_white_php.png |  Bin 538 -> 0 bytes
 .../lib/public/icons/page_white_picture.png     |  Bin 650 -> 0 bytes
 .../lib/public/icons/page_white_powerpoint.png  |  Bin 588 -> 0 bytes
 .../connect/lib/public/icons/page_white_put.png |  Bin 523 -> 0 bytes
 .../lib/public/icons/page_white_ruby.png        |  Bin 626 -> 0 bytes
 .../lib/public/icons/page_white_stack.png       |  Bin 317 -> 0 bytes
 .../lib/public/icons/page_white_star.png        |  Bin 565 -> 0 bytes
 .../lib/public/icons/page_white_swoosh.png      |  Bin 634 -> 0 bytes
 .../lib/public/icons/page_white_text.png        |  Bin 342 -> 0 bytes
 .../lib/public/icons/page_white_text_width.png  |  Bin 315 -> 0 bytes
 .../connect/lib/public/icons/page_white_tux.png |  Bin 668 -> 0 bytes
 .../lib/public/icons/page_white_vector.png      |  Bin 644 -> 0 bytes
 .../public/icons/page_white_visualstudio.png    |  Bin 702 -> 0 bytes
 .../lib/public/icons/page_white_width.png       |  Bin 309 -> 0 bytes
 .../lib/public/icons/page_white_word.png        |  Bin 651 -> 0 bytes
 .../lib/public/icons/page_white_world.png       |  Bin 734 -> 0 bytes
 .../lib/public/icons/page_white_wrench.png      |  Bin 613 -> 0 bytes
 .../connect/lib/public/icons/page_white_zip.png |  Bin 386 -> 0 bytes
 .../connect/lib/public/icons/page_word.png      |  Bin 777 -> 0 bytes
 .../connect/lib/public/icons/page_world.png     |  Bin 903 -> 0 bytes
 .../node_modules/connect/lib/public/style.css   |  141 -
 .../express/node_modules/connect/lib/utils.js   |  386 --
 .../connect/node_modules/bytes/.npmignore       |    1 -
 .../connect/node_modules/bytes/History.md       |   10 -
 .../connect/node_modules/bytes/Makefile         |    7 -
 .../connect/node_modules/bytes/Readme.md        |   51 -
 .../connect/node_modules/bytes/component.json   |    7 -
 .../connect/node_modules/bytes/index.js         |   39 -
 .../connect/node_modules/bytes/package.json     |   20 -
 .../connect/node_modules/formidable/.npmignore  |    4 -
 .../connect/node_modules/formidable/.travis.yml |    5 -
 .../connect/node_modules/formidable/LICENSE     |    7 -
 .../connect/node_modules/formidable/Readme.md   |  419 --
 .../benchmark/bench-multipart-parser.js         |   71 -
 .../node_modules/formidable/example/json.js     |   67 -
 .../node_modules/formidable/example/post.js     |   43 -
 .../node_modules/formidable/example/upload.js   |   48 -
 .../connect/node_modules/formidable/index.js    |    1 -
 .../connect/node_modules/formidable/lib/file.js |   72 -
 .../formidable/lib/incoming_form.js             |  535 --
 .../node_modules/formidable/lib/index.js        |    3 -
 .../node_modules/formidable/lib/json_parser.js  |   35 -
 .../formidable/lib/multipart_parser.js          |  324 -
 .../node_modules/formidable/lib/octet_parser.js |   20 -
 .../formidable/lib/querystring_parser.js        |   27 -
 .../node_modules/formidable/package.json        |   38 -
 .../node_modules/formidable/test/common.js      |   18 -
 .../test/fixture/file/beta-sticker-1.png        |  Bin 1660 -> 0 bytes
 .../test/fixture/file/binaryfile.tar.gz         |  Bin 301 -> 0 bytes
 .../formidable/test/fixture/file/blank.gif      |  Bin 49 -> 0 bytes
 .../test/fixture/file/funkyfilename.txt         |    1 -
 .../test/fixture/file/menu_separator.png        |  Bin 931 -> 0 bytes
 .../formidable/test/fixture/file/plain.txt      |    1 -
 .../http/special-chars-in-filename/info.md      |    3 -
 .../formidable/test/fixture/js/encoding.js      |   24 -
 .../formidable/test/fixture/js/misc.js          |    6 -
 .../formidable/test/fixture/js/no-filename.js   |    9 -
 .../formidable/test/fixture/js/preamble.js      |    9 -
 .../fixture/js/special-chars-in-filename.js     |   21 -
 .../formidable/test/fixture/js/workarounds.js   |    8 -
 .../formidable/test/fixture/multipart.js        |   72 -
 .../test/integration/test-fixtures.js           |   96 -
 .../formidable/test/integration/test-json.js    |   38 -
 .../test/integration/test-octet-stream.js       |   45 -
 .../formidable/test/legacy/common.js            |   24 -
 .../legacy/integration/test-multipart-parser.js |   80 -
 .../formidable/test/legacy/simple/test-file.js  |  104 -
 .../test/legacy/simple/test-incoming-form.js    |  756 ---
 .../test/legacy/simple/test-multipart-parser.js |   50 -
 .../legacy/simple/test-querystring-parser.js    |   45 -
 .../legacy/system/test-multi-video-upload.js    |   71 -
 .../connect/node_modules/formidable/test/run.js |    1 -
 .../test/standalone/test-connection-aborted.js  |   27 -
 .../test-content-transfer-encoding.js           |   48 -
 .../formidable/test/standalone/test-issue-46.js |   49 -
 .../formidable/test/tools/base64.html           |   67 -
 .../formidable/test/unit/test-file.js           |   33 -
 .../formidable/test/unit/test-incoming-form.js  |   63 -
 .../node_modules/formidable/tool/record.js      |   47 -
 .../connect/node_modules/pause/.npmignore       |    4 -
 .../connect/node_modules/pause/History.md       |    5 -
 .../connect/node_modules/pause/Makefile         |    7 -
 .../connect/node_modules/pause/Readme.md        |   29 -
 .../connect/node_modules/pause/index.js         |   29 -
 .../connect/node_modules/pause/package.json     |   20 -
 .../connect/node_modules/qs/.gitmodules         |    6 -
 .../connect/node_modules/qs/.npmignore          |    7 -
 .../connect/node_modules/qs/Readme.md           |   58 -
 .../connect/node_modules/qs/index.js            |  387 --
 .../connect/node_modules/qs/package.json        |   38 -
 .../connect/node_modules/uid2/index.js          |   49 -
 .../connect/node_modules/uid2/package.json      |   12 -
 .../express/node_modules/connect/package.json   |   60 -
 .../node_modules/cookie-signature/.npmignore    |    4 -
 .../node_modules/cookie-signature/History.md    |   11 -
 .../node_modules/cookie-signature/Makefile      |    7 -
 .../node_modules/cookie-signature/Readme.md     |   42 -
 .../node_modules/cookie-signature/index.js      |   42 -
 .../node_modules/cookie-signature/package.json  |   24 -
 .../express/node_modules/cookie/.npmignore      |    1 -
 .../express/node_modules/cookie/.travis.yml     |    5 -
 .../express/node_modules/cookie/LICENSE         |    9 -
 .../express/node_modules/cookie/README.md       |   44 -
 .../express/node_modules/cookie/index.js        |   70 -
 .../express/node_modules/cookie/package.json    |   37 -
 .../express/node_modules/cookie/test/mocha.opts |    1 -
 .../express/node_modules/cookie/test/parse.js   |   44 -
 .../node_modules/cookie/test/serialize.js       |   64 -
 .../express/node_modules/debug/Readme.md        |  115 -
 .../express/node_modules/debug/debug.js         |  137 -
 .../express/node_modules/debug/index.js         |    5 -
 .../express/node_modules/debug/lib/debug.js     |  147 -
 .../express/node_modules/debug/package.json     |   46 -
 .../express/node_modules/fresh/.npmignore       |    1 -
 .../express/node_modules/fresh/History.md       |    5 -
 .../express/node_modules/fresh/Makefile         |    7 -
 .../express/node_modules/fresh/Readme.md        |   57 -
 .../express/node_modules/fresh/index.js         |   53 -
 .../express/node_modules/fresh/package.json     |   28 -
 .../express/node_modules/methods/index.js       |   26 -
 .../express/node_modules/methods/package.json   |   20 -
 .../express/node_modules/mkdirp/.npmignore      |    2 -
 .../express/node_modules/mkdirp/.travis.yml     |    5 -
 .../express/node_modules/mkdirp/LICENSE         |   21 -
 .../express/node_modules/mkdirp/examples/pow.js |    6 -
 .../express/node_modules/mkdirp/index.js        |   82 -
 .../express/node_modules/mkdirp/package.json    |   34 -
 .../express/node_modules/mkdirp/readme.markdown |   63 -
 .../express/node_modules/mkdirp/test/chmod.js   |   38 -
 .../express/node_modules/mkdirp/test/clobber.js |   37 -
 .../express/node_modules/mkdirp/test/mkdirp.js  |   28 -
 .../express/node_modules/mkdirp/test/perm.js    |   32 -
 .../node_modules/mkdirp/test/perm_sync.js       |   39 -
 .../express/node_modules/mkdirp/test/race.js    |   41 -
 .../express/node_modules/mkdirp/test/rel.js     |   32 -
 .../express/node_modules/mkdirp/test/return.js  |   25 -
 .../node_modules/mkdirp/test/return_sync.js     |   24 -
 .../express/node_modules/mkdirp/test/root.js    |   18 -
 .../express/node_modules/mkdirp/test/sync.js    |   32 -
 .../express/node_modules/mkdirp/test/umask.js   |   28 -
 .../node_modules/mkdirp/test/umask_sync.js      |   32 -
 .../node_modules/range-parser/.npmignore        |    1 -
 .../node_modules/range-parser/History.md        |   15 -
 .../express/node_modules/range-parser/Makefile  |    7 -
 .../express/node_modules/range-parser/Readme.md |   28 -
 .../express/node_modules/range-parser/index.js  |   49 -
 .../node_modules/range-parser/package.json      |   20 -
 .../express/node_modules/send/.npmignore        |    4 -
 .../express/node_modules/send/History.md        |   40 -
 .../express/node_modules/send/Makefile          |    8 -
 .../express/node_modules/send/Readme.md         |  128 -
 .../express/node_modules/send/index.js          |    2 -
 .../express/node_modules/send/lib/send.js       |  474 --
 .../express/node_modules/send/lib/utils.js      |   47 -
 .../node_modules/send/node_modules/mime/LICENSE |   19 -
 .../send/node_modules/mime/README.md            |   66 -
 .../node_modules/send/node_modules/mime/mime.js |  114 -
 .../send/node_modules/mime/package.json         |   36 -
 .../node_modules/send/node_modules/mime/test.js |   84 -
 .../send/node_modules/mime/types/mime.types     | 1588 -----
 .../send/node_modules/mime/types/node.types     |   77 -
 .../express/node_modules/send/package.json      |   42 -
 .../package/node_modules/express/package.json   |   85 -
 web/demos/package/node_modules/express/test.js  |   14 -
 .../package/node_modules/http-proxy/.npmignore  |    3 -
 .../package/node_modules/http-proxy/.travis.yml |   10 -
 .../node_modules/http-proxy/CHANGELOG.md        |   97 -
 .../package/node_modules/http-proxy/LICENSE     |   23 -
 .../package/node_modules/http-proxy/README.md   |  646 --
 .../benchmark/websockets-throughput.js          |   88 -
 .../node_modules/http-proxy/bin/node-http-proxy |  113 -
 .../node_modules/http-proxy/config.sample.json  |   10 -
 .../balancer/simple-balancer-with-websockets.js |   58 -
 .../examples/balancer/simple-balancer.js        |   36 -
 .../http-proxy/examples/helpers/store.js        |   64 -
 .../http-proxy/examples/http/basic-proxy.js     |   58 -
 .../examples/http/concurrent-proxy.js           |   66 -
 .../examples/http/custom-proxy-error.js         |   54 -
 .../http-proxy/examples/http/forward-proxy.js   |   63 -
 .../http-proxy/examples/http/latent-proxy.js    |   56 -
 .../examples/http/proxy-https-to-http.js        |   51 -
 .../examples/http/proxy-https-to-https.js       |   55 -
 .../http-proxy/examples/http/proxy-table.js     |   51 -
 .../examples/http/standalone-proxy.js           |   57 -
 .../middleware/bodyDecoder-middleware.js        |   87 -
 .../middleware/gzip-middleware-proxytable.js    |   54 -
 .../examples/middleware/gzip-middleware.js      |   50 -
 .../examples/middleware/jsonp-middleware.js     |   30 -
 .../middleware/modifyResponse-middleware.js     |   57 -
 .../examples/middleware/url-middleware.js       |   58 -
 .../examples/middleware/url-middleware2.js      |   30 -
 .../http-proxy/examples/package.json            |   12 -
 .../websocket/latent-websocket-proxy.js         |   92 -
 .../websocket/standalone-websocket-proxy.js     |   87 -
 .../examples/websocket/websocket-proxy.js       |   69 -
 .../http-proxy/lib/node-http-proxy.js           |  397 --
 .../lib/node-http-proxy/http-proxy.js           |  983 ---
 .../lib/node-http-proxy/proxy-table.js          |  282 -
 .../lib/node-http-proxy/routing-proxy.js        |  322 -
 .../node_modules/colors/MIT-LICENSE.txt         |   22 -
 .../http-proxy/node_modules/colors/ReadMe.md    |   77 -
 .../http-proxy/node_modules/colors/colors.js    |  342 -
 .../http-proxy/node_modules/colors/example.html |   76 -
 .../http-proxy/node_modules/colors/example.js   |   77 -
 .../http-proxy/node_modules/colors/package.json |   29 -
 .../http-proxy/node_modules/colors/test.js      |   70 -
 .../node_modules/colors/themes/winston-dark.js  |   12 -
 .../node_modules/colors/themes/winston-light.js |   12 -
 .../node_modules/optimist/.travis.yml           |    4 -
 .../http-proxy/node_modules/optimist/LICENSE    |   21 -
 .../node_modules/optimist/example/bool.js       |   10 -
 .../optimist/example/boolean_double.js          |    7 -
 .../optimist/example/boolean_single.js          |    7 -
 .../optimist/example/default_hash.js            |    8 -
 .../optimist/example/default_singles.js         |    7 -
 .../node_modules/optimist/example/divide.js     |    8 -
 .../node_modules/optimist/example/line_count.js |   20 -
 .../optimist/example/line_count_options.js      |   29 -
 .../optimist/example/line_count_wrap.js         |   29 -
 .../node_modules/optimist/example/nonopt.js     |    4 -
 .../node_modules/optimist/example/reflect.js    |    2 -
 .../node_modules/optimist/example/short.js      |    3 -
 .../node_modules/optimist/example/string.js     |   11 -
 .../optimist/example/usage-options.js           |   19 -
 .../node_modules/optimist/example/xup.js        |   10 -
 .../http-proxy/node_modules/optimist/index.js   |  343 -
 .../optimist/node_modules/minimist/.travis.yml  |    4 -
 .../optimist/node_modules/minimist/LICENSE      |   18 -
 .../node_modules/minimist/example/parse.js      |    2 -
 .../optimist/node_modules/minimist/index.js     |  187 -
 .../optimist/node_modules/minimist/package.json |   50 -
 .../node_modules/minimist/readme.markdown       |   73 -
 .../optimist/node_modules/minimist/test/dash.js |   24 -
 .../node_modules/minimist/test/default_bool.js  |   20 -
 .../node_modules/minimist/test/dotted.js        |   16 -
 .../optimist/node_modules/minimist/test/long.js |   31 -
 .../node_modules/minimist/test/parse.js         |  318 -
 .../minimist/test/parse_modified.js             |    9 -
 .../node_modules/minimist/test/short.js         |   67 -
 .../node_modules/minimist/test/whitespace.js    |    8 -
 .../optimist/node_modules/wordwrap/.npmignore   |    1 -
 .../node_modules/wordwrap/README.markdown       |   70 -
 .../node_modules/wordwrap/example/center.js     |   10 -
 .../node_modules/wordwrap/example/meat.js       |    3 -
 .../optimist/node_modules/wordwrap/index.js     |   76 -
 .../optimist/node_modules/wordwrap/package.json |   45 -
 .../node_modules/wordwrap/test/break.js         |   30 -
 .../node_modules/wordwrap/test/idleness.txt     |   63 -
 .../optimist/node_modules/wordwrap/test/wrap.js |   31 -
 .../node_modules/optimist/package.json          |   47 -
 .../node_modules/optimist/readme.markdown       |  513 --
 .../http-proxy/node_modules/optimist/test/_.js  |   71 -
 .../node_modules/optimist/test/_/argv.js        |    2 -
 .../node_modules/optimist/test/_/bin.js         |    3 -
 .../node_modules/optimist/test/dash.js          |   31 -
 .../node_modules/optimist/test/parse.js         |  446 --
 .../optimist/test/parse_modified.js             |   14 -
 .../node_modules/optimist/test/short.js         |   16 -
 .../node_modules/optimist/test/usage.js         |  292 -
 .../node_modules/optimist/test/whitespace.js    |    8 -
 .../http-proxy/node_modules/pkginfo/.npmignore  |    2 -
 .../http-proxy/node_modules/pkginfo/LICENSE     |   19 -
 .../http-proxy/node_modules/pkginfo/README.md   |   86 -
 .../node_modules/pkginfo/docs/docco.css         |  194 -
 .../node_modules/pkginfo/docs/pkginfo.html      |  101 -
 .../pkginfo/examples/all-properties.js          |   19 -
 .../pkginfo/examples/array-argument.js          |   20 -
 .../pkginfo/examples/multiple-properties.js     |   19 -
 .../pkginfo/examples/object-argument.js         |   22 -
 .../node_modules/pkginfo/examples/package.json  |   10 -
 .../pkginfo/examples/single-property.js         |   19 -
 .../pkginfo/examples/subdir/package.json        |   11 -
 .../node_modules/pkginfo/examples/target-dir.js |   20 -
 .../node_modules/pkginfo/lib/pkginfo.js         |  136 -
 .../node_modules/pkginfo/package.json           |   36 -
 .../node_modules/pkginfo/test/pkginfo-test.js   |   83 -
 .../http-proxy/node_modules/utile/.npmignore    |    4 -
 .../http-proxy/node_modules/utile/.travis.yml   |   10 -
 .../http-proxy/node_modules/utile/CHANGELOG.md  |   16 -
 .../http-proxy/node_modules/utile/LICENSE       |   19 -
 .../http-proxy/node_modules/utile/README.md     |   87 -
 .../http-proxy/node_modules/utile/lib/args.js   |   46 -
 .../http-proxy/node_modules/utile/lib/base64.js |   44 -
 .../http-proxy/node_modules/utile/lib/file.js   |   33 -
 .../http-proxy/node_modules/utile/lib/format.js |   25 -
 .../http-proxy/node_modules/utile/lib/index.js  |  467 --
 .../node_modules/utile/node_modules/.bin/ncp    |   48 -
 .../node_modules/utile/node_modules/.bin/rimraf |   33 -
 .../utile/node_modules/deep-equal/.travis.yml   |    4 -
 .../utile/node_modules/deep-equal/LICENSE       |   18 -
 .../node_modules/deep-equal/example/cmp.js      |   11 -
 .../utile/node_modules/deep-equal/index.js      |   94 -
 .../node_modules/deep-equal/lib/is_arguments.js |   20 -
 .../utile/node_modules/deep-equal/lib/keys.js   |    9 -
 .../utile/node_modules/deep-equal/package.json  |   66 -
 .../node_modules/deep-equal/readme.markdown     |   61 -
 .../utile/node_modules/deep-equal/test/cmp.js   |   84 -
 .../utile/node_modules/i/.npmignore             |    3 -
 .../utile/node_modules/i/.travis.yml            |    9 -
 .../node_modules/utile/node_modules/i/LICENSE   |   18 -
 .../node_modules/utile/node_modules/i/README.md |  174 -
 .../utile/node_modules/i/lib/defaults.js        |   63 -
 .../utile/node_modules/i/lib/inflect.js         |   11 -
 .../utile/node_modules/i/lib/inflections.js     |  116 -
 .../utile/node_modules/i/lib/methods.js         |  233 -
 .../utile/node_modules/i/lib/native.js          |   26 -
 .../utile/node_modules/i/lib/util.js            |  136 -
 .../utile/node_modules/i/package.json           |   61 -
 .../node_modules/i/test/inflector/cases.js      |  209 -
 .../i/test/inflector/inflections-test.js        |   87 -
 .../i/test/inflector/methods-test.js            |  342 -
 .../node_modules/i/test/utils/array-test.js     |   39 -
 .../node_modules/i/test/utils/string-test.js    |   88 -
 .../utile/node_modules/mkdirp/.npmignore        |    2 -
 .../utile/node_modules/mkdirp/.travis.yml       |    5 -
 .../utile/node_modules/mkdirp/LICENSE           |   21 -
 .../utile/node_modules/mkdirp/examples/pow.js   |    6 -
 .../utile/node_modules/mkdirp/index.js          |   82 -
 .../utile/node_modules/mkdirp/package.json      |   34 -
 .../utile/node_modules/mkdirp/readme.markdown   |   63 -
 .../utile/node_modules/mkdirp/test/chmod.js     |   38 -
 .../utile/node_modules/mkdirp/test/clobber.js   |   37 -
 .../utile/node_modules/mkdirp/test/mkdirp.js    |   28 -
 .../utile/node_modules/mkdirp/test/perm.js      |   32 -
 .../utile/node_modules/mkdirp/test/perm_sync.js |   39 -
 .../utile/node_modules/mkdirp/test/race.js      |   41 -
 .../utile/node_modules/mkdirp/test/rel.js       |   32 -
 .../utile/node_modules/mkdirp/test/return.js    |   25 -
 .../node_modules/mkdirp/test/return_sync.js     |   24 -
 .../utile/node_modules/mkdirp/test/root.js      |   18 -
 .../utile/node_modules/mkdirp/test/sync.js      |   32 -
 .../utile/node_modules/mkdirp/test/umask.js     |   28 -
 .../node_modules/mkdirp/test/umask_sync.js      |   32 -
 .../utile/node_modules/ncp/.npmignore           |    4 -
 .../utile/node_modules/ncp/.travis.yml          |    7 -
 .../utile/node_modules/ncp/LICENSE.md           |   21 -
 .../utile/node_modules/ncp/README.md            |   52 -
 .../node_modules/utile/node_modules/ncp/bin/ncp |   48 -
 .../utile/node_modules/ncp/lib/ncp.js           |  222 -
 .../utile/node_modules/ncp/package.json         |   41 -
 .../utile/node_modules/ncp/test/fixtures/src/a  |    1 -
 .../utile/node_modules/ncp/test/fixtures/src/b  |    1 -
 .../utile/node_modules/ncp/test/fixtures/src/c  |    0
 .../utile/node_modules/ncp/test/fixtures/src/d  |    0
 .../utile/node_modules/ncp/test/fixtures/src/e  |    0
 .../utile/node_modules/ncp/test/fixtures/src/f  |    0
 .../node_modules/ncp/test/fixtures/src/sub/a    |    1 -
 .../node_modules/ncp/test/fixtures/src/sub/b    |    0
 .../utile/node_modules/ncp/test/ncp-test.js     |   86 -
 .../utile/node_modules/rimraf/AUTHORS           |    6 -
 .../utile/node_modules/rimraf/LICENSE           |   23 -
 .../utile/node_modules/rimraf/README.md         |   30 -
 .../utile/node_modules/rimraf/bin.js            |   33 -
 .../utile/node_modules/rimraf/package.json      |   56 -
 .../utile/node_modules/rimraf/rimraf.js         |  178 -
 .../utile/node_modules/rimraf/test/run.sh       |   10 -
 .../utile/node_modules/rimraf/test/setup.sh     |   47 -
 .../node_modules/rimraf/test/test-async.js      |    5 -
 .../utile/node_modules/rimraf/test/test-sync.js |    3 -
 .../http-proxy/node_modules/utile/package.json  |   45 -
 .../node_modules/utile/test/file-test.js        |   31 -
 .../test/fixtures/read-json-file/config.json    |    9 -
 .../require-directory/directory/index.js        |    2 -
 .../fixtures/require-directory/helloWorld.js    |    2 -
 .../node_modules/utile/test/format-test.js      |   31 -
 .../utile/test/function-args-test.js            |  104 -
 .../node_modules/utile/test/helpers/macros.js   |   37 -
 .../utile/test/random-string-test.js            |   39 -
 .../utile/test/require-directory-test.js        |   35 -
 .../node_modules/utile/test/utile-test.js       |  126 -
 .../node_modules/http-proxy/package.json        |   63 -
 .../node_modules/http-proxy/test/core/README.md |   10 -
 .../node_modules/http-proxy/test/core/common.js |  190 -
 .../core/pummel/test-http-upload-timeout.js     |   69 -
 .../node_modules/http-proxy/test/core/run       |   90 -
 .../http-proxy/test/core/run-single             |   70 -
 .../test/core/simple/test-http-chunked.js       |   63 -
 .../test/core/simple/test-http-client-abort.js  |   80 -
 .../test/core/simple/test-http-client-abort2.js |   41 -
 .../core/simple/test-http-client-upload-buf.js  |   74 -
 .../test/core/simple/test-http-client-upload.js |   77 -
 .../core/simple/test-http-contentLength0.js     |   42 -
 .../core/simple/test-http-eof-on-connect.js     |   40 -
 .../core/simple/test-http-extra-response.js     |   86 -
 .../test/core/simple/test-http-head-request.js  |   56 -
 .../test-http-head-response-has-no-body-end.js  |   61 -
 .../test-http-head-response-has-no-body.js      |   58 -
 .../test/core/simple/test-http-host-headers.js  |  101 -
 .../test-http-many-keep-alive-connections.js    |   68 -
 .../core/simple/test-http-multi-line-headers.js |   59 -
 .../test/core/simple/test-http-proxy.js         |  109 -
 .../core/simple/test-http-response-close.js     |   55 -
 .../simple/test-http-server-multiheaders.js     |   59 -
 .../test/core/simple/test-http-set-cookies.js   |   84 -
 .../test/core/simple/test-http-status-code.js   |   69 -
 .../core/simple/test-http-upgrade-server2.js    |   72 -
 .../http-proxy/test/core/simple/test-http.js    |  108 -
 .../http-proxy/test/examples-test.js            |   26 -
 .../http-proxy/test/fixtures/agent2-cert.pem    |   13 -
 .../http-proxy/test/fixtures/agent2-csr.pem     |   10 -
 .../http-proxy/test/fixtures/agent2-key.pem     |    9 -
 .../http-proxy/test/fixtures/agent2.cnf         |   19 -
 .../http-proxy/test/helpers/http.js             |  182 -
 .../http-proxy/test/helpers/index.js            |  105 -
 .../node_modules/http-proxy/test/helpers/ws.js  |  112 -
 .../http-proxy/test/http/http-test.js           |  102 -
 .../http-proxy/test/http/routing-table-test.js  |  107 -
 .../http-proxy/test/macros/examples.js          |  101 -
 .../node_modules/http-proxy/test/macros/http.js |  531 --
 .../http-proxy/test/macros/index.js             |   11 -
 .../node_modules/http-proxy/test/macros/ws.js   |  232 -
 .../http-proxy/test/ws/routing-table-test.js    |   25 -
 .../http-proxy/test/ws/socket.io-test.js        |   20 -
 .../node_modules/http-proxy/test/ws/ws-test.js  |   23 -
 .../node_modules/jquery-deferred/.npmignore     |    6 -
 .../node_modules/jquery-deferred/History.md     |    5 -
 .../node_modules/jquery-deferred/Makefile       |    7 -
 .../node_modules/jquery-deferred/Readme.md      |   45 -
 .../node_modules/jquery-deferred/index.js       |    2 -
 .../jquery-deferred/lib/jquery-callbacks.js     |  206 -
 .../jquery-deferred/lib/jquery-core.js          |  155 -
 .../jquery-deferred/lib/jquery-deferred.js      |  163 -
 .../node_modules/jquery-deferred/package.json   |   29 -
 .../package/node_modules/mongodb/.travis.yml    |    6 -
 .../node_modules/mongodb/CONTRIBUTING.md        |   23 -
 web/demos/package/node_modules/mongodb/LICENSE  |  201 -
 web/demos/package/node_modules/mongodb/Makefile |   28 -
 .../package/node_modules/mongodb/Readme.md      |  414 --
 web/demos/package/node_modules/mongodb/index.js |    1 -
 .../node_modules/mongodb/lib/mongodb/admin.js   |  339 -
 .../mongodb/lib/mongodb/aggregation_cursor.js   |  257 -
 .../mongodb/lib/mongodb/auth/mongodb_cr.js      |   62 -
 .../mongodb/lib/mongodb/auth/mongodb_gssapi.js  |  149 -
 .../mongodb/lib/mongodb/auth/mongodb_plain.js   |   66 -
 .../mongodb/lib/mongodb/auth/mongodb_sspi.js    |  135 -
 .../mongodb/lib/mongodb/auth/mongodb_x509.js    |   62 -
 .../mongodb/lib/mongodb/collection.js           |  625 --
 .../lib/mongodb/collection/aggregation.js       |  320 -
 .../mongodb/lib/mongodb/collection/commands.js  |  136 -
 .../mongodb/lib/mongodb/collection/core.js      |  727 ---
 .../mongodb/lib/mongodb/collection/geo.js       |   78 -
 .../mongodb/lib/mongodb/collection/index.js     |   72 -
 .../mongodb/lib/mongodb/collection/query.js     |  153 -
 .../mongodb/lib/mongodb/collection/shared.js    |  120 -
 .../mongodb/lib/mongodb/command_cursor.js       |  309 -
 .../lib/mongodb/commands/base_command.js        |   29 -
 .../mongodb/lib/mongodb/commands/db_command.js  |  253 -
 .../lib/mongodb/commands/delete_command.js      |  129 -
 .../lib/mongodb/commands/get_more_command.js    |   88 -
 .../lib/mongodb/commands/insert_command.js      |  161 -
 .../lib/mongodb/commands/kill_cursor_command.js |   98 -
 .../lib/mongodb/commands/query_command.js       |  283 -
 .../lib/mongodb/commands/update_command.js      |  189 -
 .../mongodb/lib/mongodb/connection/base.js      |  504 --
 .../lib/mongodb/connection/connection.js        |  541 --
 .../lib/mongodb/connection/connection_pool.js   |  295 -
 .../lib/mongodb/connection/connection_utils.js  |   23 -
 .../mongodb/lib/mongodb/connection/mongos.js    |  537 --
 .../lib/mongodb/connection/read_preference.js   |   67 -
 .../lib/mongodb/connection/repl_set/ha.js       |  414 --
 .../lib/mongodb/connection/repl_set/options.js  |  126 -
 .../lib/mongodb/connection/repl_set/repl_set.js |  811 ---
 .../connection/repl_set/repl_set_state.js       |   74 -
 .../repl_set/strategies/ping_strategy.js        |  333 -
 .../repl_set/strategies/statistics_strategy.js  |   80 -
 .../mongodb/lib/mongodb/connection/server.js    |  940 ---
 .../mongodb/connection/server_capabilities.js   |   48 -
 .../lib/mongodb/connection/url_parser.js        |  254 -
 .../node_modules/mongodb/lib/mongodb/cursor.js  | 1008 ---
 .../mongodb/lib/mongodb/cursorstream.js         |  164 -
 .../node_modules/mongodb/lib/mongodb/db.js      | 2086 ------
 .../mongodb/lib/mongodb/gridfs/chunk.js         |  221 -
 .../mongodb/lib/mongodb/gridfs/grid.js          |  103 -
 .../mongodb/lib/mongodb/gridfs/gridstore.js     | 1546 -----
 .../mongodb/lib/mongodb/gridfs/readstream.js    |  199 -
 .../node_modules/mongodb/lib/mongodb/index.js   |   69 -
 .../mongodb/lib/mongodb/mongo_client.js         |  441 --
 .../lib/mongodb/responses/mongo_reply.js        |   83 -
 .../node_modules/mongodb/lib/mongodb/scope.js   |  199 -
 .../node_modules/mongodb/lib/mongodb/utils.js   |  202 -
 .../mongodb/node_modules/bson/.travis.yml       |    5 -
 .../mongodb/node_modules/bson/Makefile          |   19 -
 .../mongodb/node_modules/bson/README.md         |   45 -
 .../mongodb/node_modules/bson/binding.gyp       |   17 -
 .../node_modules/bson/browser_build/bson.js     | 4843 --------------
 .../bson/browser_build/package.json             |    8 -
 .../mongodb/node_modules/bson/build/Makefile    |  350 -
 .../build/Release/.deps/Release/bson.node.d     |    1 -
 .../.deps/Release/obj.target/bson/ext/bson.o.d  |   26 -
 .../node_modules/bson/build/Release/bson.node   |  Bin 54012 -> 0 bytes
 .../node_modules/bson/build/Release/linker.lock |    0
 .../build/Release/obj.target/bson/ext/bson.o    |  Bin 305296 -> 0 bytes
 .../node_modules/bson/build/binding.Makefile    |    6 -
 .../node_modules/bson/build/bson.target.mk      |  152 -
 .../mongodb/node_modules/bson/build/config.gypi |  113 -
 .../node_modules/bson/build/gyp-mac-tool        |  265 -
 .../mongodb/node_modules/bson/build_browser.js  |    7 -
 .../mongodb/node_modules/bson/builderror.log    |    0
 .../mongodb/node_modules/bson/ext/Makefile      |   28 -
 .../mongodb/node_modules/bson/ext/bson.cc       | 1045 ---
 .../mongodb/node_modules/bson/ext/bson.h        |  278 -
 .../mongodb/node_modules/bson/ext/index.js      |   35 -
 .../mongodb/node_modules/bson/ext/nan.h         | 1196 ----
 .../node_modules/bson/ext/win32/ia32/bson.node  |  Bin 113664 -> 0 bytes
 .../node_modules/bson/ext/win32/x64/bson.node   |  Bin 130560 -> 0 bytes
 .../mongodb/node_modules/bson/ext/wscript       |   39 -
 .../node_modules/bson/lib/bson/binary.js        |  339 -
 .../node_modules/bson/lib/bson/binary_parser.js |  385 --
 .../mongodb/node_modules/bson/lib/bson/bson.js  | 1543 -----
 .../mongodb/node_modules/bson/lib/bson/code.js  |   25 -
 .../node_modules/bson/lib/bson/db_ref.js        |   31 -
 .../node_modules/bson/lib/bson/double.js        |   33 -
 .../node_modules/bson/lib/bson/float_parser.js  |  121 -
 .../mongodb/node_modules/bson/lib/bson/index.js |   74 -
 .../mongodb/node_modules/bson/lib/bson/long.js  |  854 ---
 .../node_modules/bson/lib/bson/max_key.js       |   13 -
 .../node_modules/bson/lib/bson/min_key.js       |   13 -
 .../node_modules/bson/lib/bson/objectid.js      |  249 -
 .../node_modules/bson/lib/bson/symbol.js        |   48 -
 .../node_modules/bson/lib/bson/timestamp.js     |  853 ---
 .../mongodb/node_modules/bson/package.json      |   57 -
 .../mongodb/node_modules/bson/tools/gleak.js    |   21 -
 .../bson/tools/jasmine-1.1.0/MIT.LICENSE        |   20 -
 .../bson/tools/jasmine-1.1.0/jasmine-html.js    |  190 -
 .../bson/tools/jasmine-1.1.0/jasmine.css        |  166 -
 .../bson/tools/jasmine-1.1.0/jasmine.js         | 2476 -------
 .../tools/jasmine-1.1.0/jasmine_favicon.png     |  Bin 905 -> 0 bytes
 .../mongodb/node_modules/kerberos/LICENSE       |  201 -
 .../mongodb/node_modules/kerberos/README.md     |    4 -
 .../mongodb/node_modules/kerberos/binding.gyp   |   41 -
 .../node_modules/kerberos/build/Makefile        |  350 -
 .../build/Release/.deps/Release/kerberos.node.d |    1 -
 .../Release/obj.target/kerberos/lib/base64.o.d  |    4 -
 .../obj.target/kerberos/lib/kerberos.o.d        |   24 -
 .../kerberos/lib/kerberos_context.o.d           |   23 -
 .../obj.target/kerberos/lib/kerberosgss.o.d     |    6 -
 .../Release/obj.target/kerberos/lib/worker.o.d  |   20 -
 .../kerberos/build/Release/kerberos.node        |  Bin 46876 -> 0 bytes
 .../kerberos/build/Release/linker.lock          |    0
 .../Release/obj.target/kerberos/lib/base64.o    |  Bin 6028 -> 0 bytes
 .../Release/obj.target/kerberos/lib/kerberos.o  |  Bin 140920 -> 0 bytes
 .../obj.target/kerberos/lib/kerberos_context.o  |  Bin 81252 -> 0 bytes
 .../obj.target/kerberos/lib/kerberosgss.o       |  Bin 16204 -> 0 bytes
 .../Release/obj.target/kerberos/lib/worker.o    |  Bin 52008 -> 0 bytes
 .../kerberos/build/binding.Makefile             |    6 -
 .../node_modules/kerberos/build/config.gypi     |  113 -
 .../node_modules/kerberos/build/gyp-mac-tool    |  265 -
 .../kerberos/build/kerberos.target.mk           |  168 -
 .../node_modules/kerberos/builderror.log        |  199 -
 .../mongodb/node_modules/kerberos/index.js      |    6 -
 .../kerberos/lib/auth_processes/mongodb.js      |  281 -
 .../mongodb/node_modules/kerberos/lib/base64.c  |  120 -
 .../mongodb/node_modules/kerberos/lib/base64.h  |   18 -
 .../node_modules/kerberos/lib/kerberos.cc       |  563 --
 .../node_modules/kerberos/lib/kerberos.h        |   47 -
 .../node_modules/kerberos/lib/kerberos.js       |   91 -
 .../kerberos/lib/kerberos_context.cc            |   74 -
 .../kerberos/lib/kerberos_context.h             |   48 -
 .../node_modules/kerberos/lib/kerberosgss.c     |  666 --
 .../node_modules/kerberos/lib/kerberosgss.h     |   70 -
 .../mongodb/node_modules/kerberos/lib/sspi.js   |   15 -
 .../node_modules/kerberos/lib/win32/base64.c    |  121 -
 .../node_modules/kerberos/lib/win32/base64.h    |   18 -
 .../node_modules/kerberos/lib/win32/kerberos.cc |   53 -
 .../node_modules/kerberos/lib/win32/kerberos.h  |   59 -
 .../kerberos/lib/win32/kerberos_sspi.c          |  244 -
 .../kerberos/lib/win32/kerberos_sspi.h          |  106 -
 .../node_modules/kerberos/lib/win32/worker.cc   |    7 -
 .../node_modules/kerberos/lib/win32/worker.h    |   37 -
 .../lib/win32/wrappers/security_buffer.cc       |  110 -
 .../lib/win32/wrappers/security_buffer.h        |   46 -
 .../lib/win32/wrappers/security_buffer.js       |   12 -
 .../wrappers/security_buffer_descriptor.cc      |  177 -
 .../win32/wrappers/security_buffer_descriptor.h |   44 -
 .../wrappers/security_buffer_descriptor.js      |    3 -
 .../lib/win32/wrappers/security_context.cc      | 1211 ----
 .../lib/win32/wrappers/security_context.h       |   85 -
 .../lib/win32/wrappers/security_context.js      |    3 -
 .../lib/win32/wrappers/security_credentials.cc  |  468 --
 .../lib/win32/wrappers/security_credentials.h   |   67 -
 .../lib/win32/wrappers/security_credentials.js  |   22 -
 .../mongodb/node_modules/kerberos/lib/worker.cc |    7 -
 .../mongodb/node_modules/kerberos/lib/worker.h  |   39 -
 .../mongodb/node_modules/kerberos/package.json  |   39 -
 .../kerberos/test/kerberos_tests.js             |   34 -
 .../kerberos/test/kerberos_win32_test.js        |   19 -
 .../win32/security_buffer_descriptor_tests.js   |   41 -
 .../test/win32/security_buffer_tests.js         |   22 -
 .../test/win32/security_credentials_tests.js    |   55 -
 .../package/node_modules/mongodb/package.json   |  227 -
 web/demos/package/node_modules/mongodb/t.js     |   99 -
 web/demos/package/node_modules/redis/.npmignore |    2 -
 web/demos/package/node_modules/redis/README.md  |  735 ---
 .../node_modules/redis/benches/buffer_bench.js  |   89 -
 .../redis/benches/hiredis_parser.js             |   38 -
 .../node_modules/redis/benches/re_sub_test.js   |   14 -
 .../redis/benches/reconnect_test.js             |   29 -
 .../node_modules/redis/benches/stress/codec.js  |   16 -
 .../redis/benches/stress/pubsub/pub.js          |   38 -
 .../redis/benches/stress/pubsub/run             |   10 -
 .../redis/benches/stress/pubsub/server.js       |   23 -
 .../redis/benches/stress/rpushblpop/pub.js      |   49 -
 .../redis/benches/stress/rpushblpop/run         |    6 -
 .../redis/benches/stress/rpushblpop/server.js   |   30 -
 .../node_modules/redis/benches/stress/speed/00  |   13 -
 .../redis/benches/stress/speed/plot             |   13 -
 .../redis/benches/stress/speed/size-rate.png    |  Bin 6672 -> 0 bytes
 .../redis/benches/stress/speed/speed.js         |   84 -
 .../node_modules/redis/benches/sub_quit_test.js |   18 -
 .../package/node_modules/redis/changelog.md     |  288 -
 .../redis/diff_multi_bench_output.js            |   90 -
 .../package/node_modules/redis/examples/auth.js |    5 -
 .../redis/examples/backpressure_drain.js        |   33 -
 .../package/node_modules/redis/examples/eval.js |   14 -
 .../node_modules/redis/examples/extend.js       |   24 -
 .../package/node_modules/redis/examples/file.js |   32 -
 .../package/node_modules/redis/examples/mget.js |    5 -
 .../node_modules/redis/examples/monitor.js      |   10 -
 .../node_modules/redis/examples/multi.js        |   46 -
 .../node_modules/redis/examples/multi2.js       |   29 -
 .../node_modules/redis/examples/psubscribe.js   |   33 -
 .../node_modules/redis/examples/pub_sub.js      |   41 -
 .../node_modules/redis/examples/simple.js       |   24 -
 .../package/node_modules/redis/examples/sort.js |   17 -
 .../node_modules/redis/examples/subqueries.js   |   15 -
 .../node_modules/redis/examples/subquery.js     |   19 -
 .../node_modules/redis/examples/unix_socket.js  |   29 -
 .../node_modules/redis/examples/web_server.js   |   31 -
 .../node_modules/redis/generate_commands.js     |   39 -
 web/demos/package/node_modules/redis/index.js   | 1198 ----
 .../package/node_modules/redis/lib/commands.js  |  149 -
 .../node_modules/redis/lib/parser/hiredis.js    |   46 -
 .../node_modules/redis/lib/parser/javascript.js |  301 -
 .../package/node_modules/redis/lib/queue.js     |   59 -
 .../package/node_modules/redis/lib/to_array.js  |   12 -
 .../package/node_modules/redis/lib/util.js      |   11 -
 .../package/node_modules/redis/multi_bench.js   |  222 -
 .../package/node_modules/redis/package.json     |   34 -
 .../package/node_modules/redis/test-unref.js    |   12 -
 web/demos/package/node_modules/redis/test.js    | 2096 ------
 .../package/node_modules/underscore/LICENSE     |   23 -
 .../package/node_modules/underscore/README.md   |   22 -
 .../node_modules/underscore/package.json        |   46 -
 .../node_modules/underscore/underscore-min.js   |    6 -
 .../node_modules/underscore/underscore.js       | 1276 ----
 web/demos/package/package.json                  |   57 -
 web/demos/package/routes/adsdimensions.js       |  136 -
 web/demos/package/routes/fraud.js               |  100 -
 web/demos/package/routes/machine.js             |  167 -
 web/demos/package/start.sh                      |   31 -
 web/demos/routes/adsdimensions.js               |  136 -
 web/demos/routes/fraud.js                       |  100 -
 web/demos/routes/machine.js                     |  167 -
 web/demos/servertest/adsdimensions.js           |   56 -
 web/demos/servertest/machine.js                 |   54 -
 web/demos/servertest/machineminutes.js          |  139 -
 web/demos/test/.jshintrc                        |   35 -
 web/demos/test/runner.html                      |   30 -
 web/mrmonitor/.bowerrc                          |    3 -
 web/mrmonitor/.editorconfig                     |   21 -
 web/mrmonitor/.gitattributes                    |    1 -
 web/mrmonitor/.gitignore                        |    5 -
 web/mrmonitor/.jshintrc                         |   29 -
 web/mrmonitor/.travis.yml                       |    7 -
 web/mrmonitor/Gruntfile.js                      |  365 --
 web/mrmonitor/README.md                         |  127 -
 web/mrmonitor/app.js                            |  142 -
 web/mrmonitor/app/.buildignore                  |    1 -
 web/mrmonitor/app/.htaccess                     |  543 --
 web/mrmonitor/app/404.html                      |  177 -
 web/mrmonitor/app/favicon.ico                   |  Bin 4286 -> 0 bytes
 .../app/images/glyphicons-halflings-white.png   |  Bin 8777 -> 0 bytes
 .../app/images/glyphicons-halflings.png         |  Bin 12727 -> 0 bytes
 web/mrmonitor/app/images/main_banner.png        |  Bin 2181 -> 0 bytes
 web/mrmonitor/app/index.html                    |  115 -
 web/mrmonitor/app/robots.txt                    |    3 -
 web/mrmonitor/app/scripts/app.js                |   51 -
 .../app/scripts/controllers/applist.js          |   52 -
 web/mrmonitor/app/scripts/controllers/job.js    |  202 -
 web/mrmonitor/app/scripts/controllers/main.js   |  241 -
 .../app/scripts/directives/lineChart.js         |   81 -
 web/mrmonitor/app/scripts/filters/filters.js    |  118 -
 web/mrmonitor/app/scripts/modules.js            |   25 -
 web/mrmonitor/app/scripts/services/rest.js      |  123 -
 web/mrmonitor/app/scripts/services/util.js      |   57 -
 web/mrmonitor/app/scripts/services/websocket.js |  128 -
 web/mrmonitor/app/styles/bootstrap.css          | 6175 ------------------
 web/mrmonitor/app/styles/main.css               |  212 -
 web/mrmonitor/app/views/apps.html               |   55 -
 web/mrmonitor/app/views/job.html                |  120 -
 web/mrmonitor/app/views/main.html               |   47 -
 web/mrmonitor/bower.json                        |   26 -
 web/mrmonitor/config.js                         |   45 -
 web/mrmonitor/docs/MapReduceMonitor.png         |  Bin 196103 -> 0 bytes
 web/mrmonitor/karma-e2e.conf.js                 |   72 -
 web/mrmonitor/karma.conf.js                     |   81 -
 web/mrmonitor/package.json                      |   52 -
 web/mrmonitor/prod.sh                           |   20 -
 web/mrmonitor/test/.jshintrc                    |   35 -
 web/mrmonitor/test/runner.html                  |   30 -
 web/mrmonitor/test/spec/controllers/applist.js  |   40 -
 web/mrmonitor/test/spec/controllers/job.js      |   49 -
 web/mrmonitor/test/spec/controllers/main.js     |   70 -
 web/mrmonitor/test/spec/directives/lineChart.js |   38 -
 web/mrmonitor/test/spec/filters/filters.js      |   37 -
 web/mrmonitor/test/spec/services/rest.js        |   36 -
 web/mrmonitor/test/spec/services/util.js        |   78 -
 web/mrmonitor/test/spec/services/websocket.js   |   71 -
 928 files changed, 116794 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/.bowerrc
----------------------------------------------------------------------
diff --git a/web/demos/.bowerrc b/web/demos/.bowerrc
deleted file mode 100644
index ba0accc..0000000
--- a/web/demos/.bowerrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "directory": "app/bower_components"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/.editorconfig
----------------------------------------------------------------------
diff --git a/web/demos/.editorconfig b/web/demos/.editorconfig
deleted file mode 100644
index c2cdfb8..0000000
--- a/web/demos/.editorconfig
+++ /dev/null
@@ -1,21 +0,0 @@
-# EditorConfig helps developers define and maintain consistent
-# coding styles between different editors and IDEs
-# editorconfig.org
-
-root = true
-
-
-[*]
-
-# Change these settings to your own preference
-indent_style = space
-indent_size = 2
-
-# We recommend you to keep these unchanged
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/.gitattributes
----------------------------------------------------------------------
diff --git a/web/demos/.gitattributes b/web/demos/.gitattributes
deleted file mode 100644
index 2125666..0000000
--- a/web/demos/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-* text=auto
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/.gitignore
----------------------------------------------------------------------
diff --git a/web/demos/.gitignore b/web/demos/.gitignore
deleted file mode 100644
index f6190a6..0000000
--- a/web/demos/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-.DS_Store
-.tmp
-.sass-cache
-.idea
-.DS_Store
-app/bower_components

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/.jshintrc
----------------------------------------------------------------------
diff --git a/web/demos/.jshintrc b/web/demos/.jshintrc
deleted file mode 100644
index 40377ba..0000000
--- a/web/demos/.jshintrc
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "node": true,
-  "browser": true,
-  "esnext": true,
-  "bitwise": true,
-  "camelcase": true,
-  "curly": true,
-  "eqeqeq": true,
-  "immed": true,
-  "indent": 2,
-  "latedef": true,
-  "newcap": true,
-  "noarg": true,
-  "quotmark": "single",
-  "regexp": true,
-  "undef": true,
-  "unused": true,
-  "strict": true,
-  "trailing": true,
-  "smarttabs": true,
-  "globals": {
-    "angular": false
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/.travis.yml b/web/demos/.travis.yml
deleted file mode 100644
index 83f4e22..0000000
--- a/web/demos/.travis.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-language: node_js
-node_js:
-  - '0.8'
-  - '0.10'
-before_script:
-  - 'npm install -g bower grunt-cli'
-  - 'bower install'

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/Gruntfile.js
----------------------------------------------------------------------
diff --git a/web/demos/Gruntfile.js b/web/demos/Gruntfile.js
deleted file mode 100644
index b8f9a81..0000000
--- a/web/demos/Gruntfile.js
+++ /dev/null
@@ -1,396 +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.
- */
-// Generated on 2013-10-07 using generator-angular 0.4.0
-'use strict';
-var LIVERELOAD_PORT = 35729;
-var lrSnippet = require('connect-livereload')({ port: LIVERELOAD_PORT });
-var mountFolder = function (connect, dir) {
-  return connect.static(require('path').resolve(dir));
-};
-
-// # Globbing
-// for performance reasons we're only matching one level down:
-// 'test/spec/{,*/}*.js'
-// use this if you want to recursively match all subfolders:
-// 'test/spec/**/*.js'
-
-module.exports = function (grunt) {
-  require('load-grunt-tasks')(grunt);
-  require('time-grunt')(grunt);
-
-  // configurable paths
-  var yeomanConfig = {
-    app: 'app',
-    dist: 'dist'
-  };
-
-  try {
-    yeomanConfig.app = require('./bower.json').appPath || yeomanConfig.app;
-  } catch (e) {}
-
-  grunt.initConfig({
-    yeoman: yeomanConfig,
-    watch: {
-      coffee: {
-        files: ['<%= yeoman.app %>/scripts/{,*/}*.coffee'],
-        tasks: ['coffee:dist']
-      },
-      coffeeTest: {
-        files: ['test/spec/{,*/}*.coffee'],
-        tasks: ['coffee:test']
-      },
-      styles: {
-        files: ['<%= yeoman.app %>/styles/{,*/}*.css'],
-        tasks: ['copy:styles', 'autoprefixer']
-      },
-      livereload: {
-        options: {
-          livereload: LIVERELOAD_PORT
-        },
-        files: [
-          '<%= yeoman.app %>/{,*/}*.html',
-          '.tmp/styles/{,*/}*.css',
-          '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
-          '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
-        ]
-      }
-    },
-    autoprefixer: {
-      options: ['last 1 version'],
-      dist: {
-        files: [{
-          expand: true,
-          cwd: '.tmp/styles/',
-          src: '{,*/}*.css',
-          dest: '.tmp/styles/'
-        }]
-      }
-    },
-    connect: {
-      options: {
-        port: 9000,
-        // Change this to '0.0.0.0' to access the server from outside.
-        hostname: 'localhost'
-      },
-      livereload: {
-        options: {
-          middleware: function (connect) {
-            return [
-              lrSnippet,
-              mountFolder(connect, '.tmp'),
-              mountFolder(connect, yeomanConfig.app)
-            ];
-          }
-        }
-      },
-      test: {
-        options: {
-          middleware: function (connect) {
-            return [
-              mountFolder(connect, '.tmp'),
-              mountFolder(connect, 'test')
-            ];
-          }
-        }
-      },
-      dist: {
-        options: {
-          middleware: function (connect) {
-            return [
-              mountFolder(connect, yeomanConfig.dist)
-            ];
-          }
-        }
-      }
-    },
-    open: {
-      server: {
-        url: 'http://localhost:<%= connect.options.port %>'
-      }
-    },
-    clean: {
-      dist: {
-        files: [{
-          dot: true,
-          src: [
-            '.tmp',
-            '<%= yeoman.dist %>/*',
-            '!<%= yeoman.dist %>/.git*'
-          ]
-        }]
-      },
-      server: '.tmp'
-    },
-    jshint: {
-      options: {
-        jshintrc: '.jshintrc'
-      },
-      all: [
-        'Gruntfile.js',
-        '<%= yeoman.app %>/scripts/{,*/}*.js'
-      ]
-    },
-    coffee: {
-      options: {
-        sourceMap: true,
-        sourceRoot: ''
-      },
-      dist: {
-        files: [{
-          expand: true,
-          cwd: '<%= yeoman.app %>/scripts',
-          src: '{,*/}*.coffee',
-          dest: '.tmp/scripts',
-          ext: '.js'
-        }]
-      },
-      test: {
-        files: [{
-          expand: true,
-          cwd: 'test/spec',
-          src: '{,*/}*.coffee',
-          dest: '.tmp/spec',
-          ext: '.js'
-        }]
-      }
-    },
-    // not used since Uglify task does concat,
-    // but still available if needed
-    /*concat: {
-      dist: {}
-    },*/
-    rev: {
-      dist: {
-        files: {
-          src: [
-            '<%= yeoman.dist %>/scripts/{,*/}*.js',
-            '<%= yeoman.dist %>/styles/{,*/}*.css',
-            '<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
-            '<%= yeoman.dist %>/styles/fonts/*'
-          ]
-        }
-      }
-    },
-    useminPrepare: {
-      html: '<%= yeoman.app %>/index.html',
-      options: {
-        dest: '<%= yeoman.dist %>'
-      }
-    },
-    usemin: {
-      html: ['<%= yeoman.dist %>/index.html'],
-      css: ['<%= yeoman.dist %>/styles/{,*/}*.css'],
-      options: {
-        dirs: ['<%= yeoman.dist %>']
-      }
-    },
-    imagemin: {
-      dist: {
-        files: [{
-          expand: true,
-          cwd: '<%= yeoman.app %>/images',
-          src: '{,*/}*.{png,jpg,jpeg}',
-          dest: '<%= yeoman.dist %>/images'
-        }]
-      }
-    },
-    svgmin: {
-      dist: {
-        files: [{
-          expand: true,
-          cwd: '<%= yeoman.app %>/images',
-          src: '{,*/}*.svg',
-          dest: '<%= yeoman.dist %>/images'
-        }]
-      }
-    },
-    cssmin: {
-      // By default, your `index.html` <!-- Usemin Block --> will take care of
-      // minification. This option is pre-configured if you do not wish to use
-      // Usemin blocks.
-      // dist: {
-      //   files: {
-      //     '<%= yeoman.dist %>/styles/main.css': [
-      //       '.tmp/styles/{,*/}*.css',
-      //       '<%= yeoman.app %>/styles/{,*/}*.css'
-      //     ]
-      //   }
-      // }
-    },
-    htmlmin: {
-      dist: {
-        options: {
-          /*removeCommentsFromCDATA: true,
-          // https://github.com/yeoman/grunt-usemin/issues/44
-          //collapseWhitespace: true,
-          collapseBooleanAttributes: true,
-          removeAttributeQuotes: true,
-          removeRedundantAttributes: true,
-          useShortDoctype: true,
-          removeEmptyAttributes: true,
-          removeOptionalTags: true*/
-        },
-        files: [{
-          expand: true,
-          cwd: '<%= yeoman.app %>',
-          src: ['*.html', 'views/*.html'],
-          dest: '<%= yeoman.dist %>'
-        }]
-      }
-    },
-    // Put files not handled in other tasks here
-    copy: {
-      dist: {
-        files: [{
-          expand: true,
-          dot: true,
-          cwd: '<%= yeoman.app %>',
-          dest: '<%= yeoman.dist %>',
-          src: [
-            '*.{ico,png,txt}',
-            '.htaccess',
-            'images/{,*/}*.{png,gif,webp}',
-            'styles/fonts/*',
-            'scripts/vendor/markerwithlabel.js'
-          ]
-        }, {
-          expand: true,
-          cwd: '.tmp/images',
-          dest: '<%= yeoman.dist %>/images',
-          src: [
-            'generated/*'
-          ]
-        }]
-      },
-      styles: {
-        expand: true,
-        cwd: '<%= yeoman.app %>/styles',
-        dest: '.tmp/styles/',
-        src: '{,*/}*.css'
-      },
-      package: {
-        files: [{
-            expand: true,
-            cwd: '<%= yeoman.dist %>',
-            dest: 'package/app/',
-            src: '**/*'
-          }, {
-            expand: true,
-            dest: 'package/',
-            src: ['app.js', 'config.js', 'package.json']
-          }, {
-          expand: true,
-          dest: 'package',
-          src: 'routes/*.js'
-        }]
-      }
-    },
-    concurrent: {
-      server: [
-        'coffee:dist',
-        'copy:styles'
-      ],
-      test: [
-        'coffee',
-        'copy:styles'
-      ],
-      dist: [
-        'coffee',
-        'copy:styles',
-        //'imagemin',
-        'svgmin',
-        'htmlmin'
-      ]
-    },
-    karma: {
-      unit: {
-        configFile: 'karma.conf.js',
-        singleRun: true
-      }
-    },
-    cdnify: {
-      dist: {
-        html: ['<%= yeoman.dist %>/*.html']
-      }
-    },
-    ngmin: {
-      dist: {
-        files: [{
-          expand: true,
-          cwd: '<%= yeoman.dist %>/scripts',
-          src: '*.js',
-          dest: '<%= yeoman.dist %>/scripts'
-        }]
-      }
-    },
-    uglify: {
-      dist: {
-        files: {
-          '<%= yeoman.dist %>/scripts/scripts.js': [
-            '<%= yeoman.dist %>/scripts/scripts.js'
-          ]
-        }
-      }
-    }
-  });
-
-  grunt.registerTask('server', function (target) {
-    if (target === 'dist') {
-      return grunt.task.run(['build', 'open', 'connect:dist:keepalive']);
-    }
-
-    grunt.task.run([
-      'clean:server',
-      'concurrent:server',
-      'autoprefixer',
-      'connect:livereload',
-      'open',
-      'watch'
-    ]);
-  });
-
-  grunt.registerTask('test', [
-    'clean:server',
-    'concurrent:test',
-    'autoprefixer',
-    'connect:test',
-    'karma'
-  ]);
-
-  grunt.registerTask('build', [
-    'clean:dist',
-    'useminPrepare',
-    'concurrent:dist',
-    'autoprefixer',
-    'concat',
-    'copy:dist',
-    'cdnify',
-    'ngmin',
-    'cssmin',
-    'uglify',
-    'rev',
-    'usemin'
-  ]);
-
-  grunt.registerTask('default', [
-    //'jshint',
-    //'test',
-    'build'
-  ]);
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/README.md
----------------------------------------------------------------------
diff --git a/web/demos/README.md b/web/demos/README.md
deleted file mode 100644
index d72e8c2..0000000
--- a/web/demos/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-Web Demos
-===============
-
-Web Application for DataTorrent Demos:
-- Twitter URLs
-- Twitter Hashtags
-- Mobile
-- Machine Generated Data
-- Ads Dimensions
-- Fraud
-
-## Architecture
-
-![Demos Architecture](docs/demos_architecture.png "Demos Architecture")
-
-## Running Demos
- Demos run on [Node.js](http://nodejs.org/).
- See [package](package) to run demos with prefetched runtime dependencies (only Node.js is required).
-
-## Running Demos in Development Mode
- Install npm dependencies:
-
- ``` bash
-    $ npm install
- ```
-
- Install Bower dependencies:
-
- ``` bash
-    $ bower install
- ```
-
- Start Node.js server:
-
- ``` bash
-    $ node app.js
- ```
-
- Application will be available at http://localhost:3003
-
-## Demos configuration
- Please use ```config.js``` or environment variables for configuration (DT Gateway, Redis, MongoDB, etc.).
- See ```dist_start.sh``` and ```dev_start.sh```.
-
- Applications are automatically discovered by name (to show stats like "Events/sec"). See the following settings in ```config.js```:
- - settings.twitterUrls.appName
- - settings.twitterHashtags.appName
- - settings.mobile.appName
- - settings.machine.appName
- - settings.dimensions.appName
- - settings.fraud.appName
-
-## Tips
-
- Running Node.js as a daemon with [forever](https://github.com/nodejitsu/forever)
-
- ``` bash
-    $ npm install forever -g
-    $ forever start app.js
-    $ forever list
-    $ forever stop <uid>
- ```
-
- Running Node.js on different port
-
- ``` bash
-    $ PORT=3001 node app.js
- ```
-
-## Links
-
-[Express](https://github.com/visionmedia/express) Node.js web framework
-
-[node_redis](https://github.com/mranney/node_redis) Node.js Redis client
-
-[forever](https://github.com/nodejitsu/forever) Node.js daemon/continuous running/fault tolerance
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app.js
----------------------------------------------------------------------
diff --git a/web/demos/app.js b/web/demos/app.js
deleted file mode 100644
index a375506..0000000
--- a/web/demos/app.js
+++ /dev/null
@@ -1,69 +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.
- */
-var express = require('express');
-var http = require('http');
-var httpProxy = require('http-proxy');
-var config = require('./config');
-
-var machine = require('./routes/machine');
-var adsdimensions = require('./routes/adsdimensions');
-var fraud = require('./routes/fraud');
-
-var app = express();
-
-var proxy = new httpProxy.RoutingProxy();
-
-// all environments
-app.use(express.favicon());
-app.use(express.logger('dev'));
-app.use(express.bodyParser());
-app.use(express.methodOverride());
-app.use(app.router);
-
-console.log('environment: ' + app.get('env'));
-
-app.use(express.static(__dirname + config.web.staticDir));
-
-if ('development' == app.get('env')) {
-    app.use(express.errorHandler());
-}
-
-app.get('/machine', machine.data);
-app.get('/dimensions', adsdimensions.data);
-app.get('/fraud/alertCount', fraud.getAlertCount);
-app.get('/fraud/randomStats', fraud.getRecentStats);
-app.get('/ws/*', function(req, res) {
-    proxy.proxyRequest(req, res, {
-        host: config.gateway.host,
-        port: config.gateway.port
-    });
-});
-
-app.get('/settings.js', function(req, res) {
-  res.setHeader('Content-Type', 'application/javascript');
-  res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
-  res.setHeader('Pragma', 'no-cache');
-  res.setHeader('Expires', 0);
-
-  res.send('window.settings = ' + JSON.stringify(config.settings) + ';');
-});
-
-http.createServer(app).listen(config.web.port, function(){
-    console.log('Express server listening on port ' + config.web.port);
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/.buildignore
----------------------------------------------------------------------
diff --git a/web/demos/app/.buildignore b/web/demos/app/.buildignore
deleted file mode 100644
index fc98b8e..0000000
--- a/web/demos/app/.buildignore
+++ /dev/null
@@ -1 +0,0 @@
-*.coffee
\ No newline at end of file


[25/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/colors/colors.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/colors/colors.js b/web/demos/package/node_modules/http-proxy/node_modules/colors/colors.js
deleted file mode 100644
index 7a537d8..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/colors/colors.js
+++ /dev/null
@@ -1,342 +0,0 @@
-/*
-colors.js
-
-Copyright (c) 2010
-
-Marak Squires
-Alexis Sellier (cloudhead)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-*/
-
-var isHeadless = false;
-
-if (typeof module !== 'undefined') {
-  isHeadless = true;
-}
-
-if (!isHeadless) {
-  var exports = {};
-  var module = {};
-  var colors = exports;
-  exports.mode = "browser";
-} else {
-  exports.mode = "console";
-}
-
-//
-// Prototypes the string object to have additional method calls that add terminal colors
-//
-var addProperty = function (color, func) {
-  exports[color] = function (str) {
-    return func.apply(str);
-  };
-  String.prototype.__defineGetter__(color, func);
-};
-
-function stylize(str, style) {
-
-  var styles;
-
-  if (exports.mode === 'console') {
-    styles = {
-      //styles
-      'bold'      : ['\x1B[1m',  '\x1B[22m'],
-      'italic'    : ['\x1B[3m',  '\x1B[23m'],
-      'underline' : ['\x1B[4m',  '\x1B[24m'],
-      'inverse'   : ['\x1B[7m',  '\x1B[27m'],
-      'strikethrough' : ['\x1B[9m',  '\x1B[29m'],
-      //text colors
-      //grayscale
-      'white'     : ['\x1B[37m', '\x1B[39m'],
-      'grey'      : ['\x1B[90m', '\x1B[39m'],
-      'black'     : ['\x1B[30m', '\x1B[39m'],
-      //colors
-      'blue'      : ['\x1B[34m', '\x1B[39m'],
-      'cyan'      : ['\x1B[36m', '\x1B[39m'],
-      'green'     : ['\x1B[32m', '\x1B[39m'],
-      'magenta'   : ['\x1B[35m', '\x1B[39m'],
-      'red'       : ['\x1B[31m', '\x1B[39m'],
-      'yellow'    : ['\x1B[33m', '\x1B[39m'],
-      //background colors
-      //grayscale
-      'whiteBG'     : ['\x1B[47m', '\x1B[49m'],
-      'greyBG'      : ['\x1B[49;5;8m', '\x1B[49m'],
-      'blackBG'     : ['\x1B[40m', '\x1B[49m'],
-      //colors
-      'blueBG'      : ['\x1B[44m', '\x1B[49m'],
-      'cyanBG'      : ['\x1B[46m', '\x1B[49m'],
-      'greenBG'     : ['\x1B[42m', '\x1B[49m'],
-      'magentaBG'   : ['\x1B[45m', '\x1B[49m'],
-      'redBG'       : ['\x1B[41m', '\x1B[49m'],
-      'yellowBG'    : ['\x1B[43m', '\x1B[49m']
-    };
-  } else if (exports.mode === 'browser') {
-    styles = {
-      //styles
-      'bold'      : ['<b>',  '</b>'],
-      'italic'    : ['<i>',  '</i>'],
-      'underline' : ['<u>',  '</u>'],
-      'inverse'   : ['<span style="background-color:black;color:white;">',  '</span>'],
-      'strikethrough' : ['<del>',  '</del>'],
-      //text colors
-      //grayscale
-      'white'     : ['<span style="color:white;">',   '</span>'],
-      'grey'      : ['<span style="color:gray;">',    '</span>'],
-      'black'     : ['<span style="color:black;">',   '</span>'],
-      //colors
-      'blue'      : ['<span style="color:blue;">',    '</span>'],
-      'cyan'      : ['<span style="color:cyan;">',    '</span>'],
-      'green'     : ['<span style="color:green;">',   '</span>'],
-      'magenta'   : ['<span style="color:magenta;">', '</span>'],
-      'red'       : ['<span style="color:red;">',     '</span>'],
-      'yellow'    : ['<span style="color:yellow;">',  '</span>'],
-      //background colors
-      //grayscale
-      'whiteBG'     : ['<span style="background-color:white;">',   '</span>'],
-      'greyBG'      : ['<span style="background-color:gray;">',    '</span>'],
-      'blackBG'     : ['<span style="background-color:black;">',   '</span>'],
-      //colors
-      'blueBG'      : ['<span style="background-color:blue;">',    '</span>'],
-      'cyanBG'      : ['<span style="background-color:cyan;">',    '</span>'],
-      'greenBG'     : ['<span style="background-color:green;">',   '</span>'],
-      'magentaBG'   : ['<span style="background-color:magenta;">', '</span>'],
-      'redBG'       : ['<span style="background-color:red;">',     '</span>'],
-      'yellowBG'    : ['<span style="background-color:yellow;">',  '</span>']
-    };
-  } else if (exports.mode === 'none') {
-    return str + '';
-  } else {
-    console.log('unsupported mode, try "browser", "console" or "none"');
-  }
-  return styles[style][0] + str + styles[style][1];
-}
-
-function applyTheme(theme) {
-
-  //
-  // Remark: This is a list of methods that exist
-  // on String that you should not overwrite.
-  //
-  var stringPrototypeBlacklist = [
-    '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', 'charAt', 'constructor',
-    'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf', 'charCodeAt',
-    'indexOf', 'lastIndexof', 'length', 'localeCompare', 'match', 'replace', 'search', 'slice', 'split', 'substring',
-    'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toUpperCase', 'trim', 'trimLeft', 'trimRight'
-  ];
-
-  Object.keys(theme).forEach(function (prop) {
-    if (stringPrototypeBlacklist.indexOf(prop) !== -1) {
-      console.log('warn: '.red + ('String.prototype' + prop).magenta + ' is probably something you don\'t want to override. Ignoring style name');
-    }
-    else {
-      if (typeof(theme[prop]) === 'string') {
-        addProperty(prop, function () {
-          return exports[theme[prop]](this);
-        });
-      }
-      else {
-        addProperty(prop, function () {
-          var ret = this;
-          for (var t = 0; t < theme[prop].length; t++) {
-            ret = exports[theme[prop][t]](ret);
-          }
-          return ret;
-        });
-      }
-    }
-  });
-}
-
-
-//
-// Iterate through all default styles and colors
-//
-var x = ['bold', 'underline', 'strikethrough', 'italic', 'inverse', 'grey', 'black', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta', 'greyBG', 'blackBG', 'yellowBG', 'redBG', 'greenBG', 'blueBG', 'whiteBG', 'cyanBG', 'magentaBG'];
-x.forEach(function (style) {
-
-  // __defineGetter__ at the least works in more browsers
-  // http://robertnyman.com/javascript/javascript-getters-setters.html
-  // Object.defineProperty only works in Chrome
-  addProperty(style, function () {
-    return stylize(this, style);
-  });
-});
-
-function sequencer(map) {
-  return function () {
-    if (!isHeadless) {
-      return this.replace(/( )/, '$1');
-    }
-    var exploded = this.split(""), i = 0;
-    exploded = exploded.map(map);
-    return exploded.join("");
-  };
-}
-
-var rainbowMap = (function () {
-  var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta']; //RoY G BiV
-  return function (letter, i, exploded) {
-    if (letter === " ") {
-      return letter;
-    } else {
-      return stylize(letter, rainbowColors[i++ % rainbowColors.length]);
-    }
-  };
-})();
-
-exports.themes = {};
-
-exports.addSequencer = function (name, map) {
-  addProperty(name, sequencer(map));
-};
-
-exports.addSequencer('rainbow', rainbowMap);
-exports.addSequencer('zebra', function (letter, i, exploded) {
-  return i % 2 === 0 ? letter : letter.inverse;
-});
-
-exports.setTheme = function (theme) {
-  if (typeof theme === 'string') {
-    try {
-      exports.themes[theme] = require(theme);
-      applyTheme(exports.themes[theme]);
-      return exports.themes[theme];
-    } catch (err) {
-      console.log(err);
-      return err;
-    }
-  } else {
-    applyTheme(theme);
-  }
-};
-
-
-addProperty('stripColors', function () {
-  return ("" + this).replace(/\x1B\[\d+m/g, '');
-});
-
-// please no
-function zalgo(text, options) {
-  var soul = {
-    "up" : [
-      'Ģ', 'ĢŽ', 'Ģ„', 'Ģ…',
-      'Ģæ', 'Ģ‘', 'Ģ†', 'Ģ',
-      'Ķ’', 'Ķ—', 'Ķ‘', 'Ģ‡',
-      'Ģˆ', 'ĢŠ', 'Ķ‚', 'Ģ“',
-      'Ģˆ', 'ĶŠ', 'Ķ‹', 'ĶŒ',
-      'Ģƒ', 'Ģ‚', 'ĢŒ', 'Ķ',
-      'Ģ€', 'Ģ', 'Ģ‹', 'Ģ',
-      'Ģ’', 'Ģ“', 'Ģ”', 'Ģ½',
-      'Ģ‰', 'Ķ£', 'Ķ¤', 'Ķ„',
-      'Ķ¦', 'Ķ§', 'ĶØ', 'Ķ©',
-      'ĶŖ', 'Ķ«', 'Ķ¬', 'Ķ­',
-      'Ķ®', 'ĶÆ', 'Ģ¾', 'Ķ›',
-      'Ķ†', 'Ģš'
-    ],
-    "down" : [
-      'Ģ–', 'Ģ—', 'Ģ˜', 'Ģ™',
-      'Ģœ', 'Ģ', 'Ģž', 'ĢŸ',
-      'Ģ ', 'Ģ¤', 'Ģ„', 'Ģ¦',
-      'Ģ©', 'ĢŖ', 'Ģ«', 'Ģ¬',
-      'Ģ­', 'Ģ®', 'ĢÆ', 'Ģ°',
-      'Ģ±', 'Ģ²', 'Ģ³', 'Ģ¹',
-      'Ģŗ', 'Ģ»', 'Ģ¼', 'Ķ…',
-      'Ķ‡', 'Ķˆ', 'Ķ‰', 'Ķ',
-      'ĶŽ', 'Ķ“', 'Ķ”', 'Ķ•',
-      'Ķ–', 'Ķ™', 'Ķš', 'Ģ£'
-    ],
-    "mid" : [
-      'Ģ•', 'Ģ›', 'Ģ€', 'Ģ',
-      'Ķ˜', 'Ģ”', 'Ģ¢', 'Ģ§',
-      'ĢØ', 'Ģ“', 'Ģµ', 'Ģ¶',
-      'Ķœ', 'Ķ', 'Ķž',
-      'ĶŸ', 'Ķ ', 'Ķ¢', 'Ģø',
-      'Ģ·', 'Ķ”', ' Ņ‰'
-    ]
-  },
-  all = [].concat(soul.up, soul.down, soul.mid),
-  zalgo = {};
-
-  function randomNumber(range) {
-    var r = Math.floor(Math.random() * range);
-    return r;
-  }
-
-  function is_char(character) {
-    var bool = false;
-    all.filter(function (i) {
-      bool = (i === character);
-    });
-    return bool;
-  }
-
-  function heComes(text, options) {
-    var result = '', counts, l;
-    options = options || {};
-    options["up"] = options["up"] || true;
-    options["mid"] = options["mid"] || true;
-    options["down"] = options["down"] || true;
-    options["size"] = options["size"] || "maxi";
-    text = text.split('');
-    for (l in text) {
-      if (is_char(l)) {
-        continue;
-      }
-      result = result + text[l];
-      counts = {"up" : 0, "down" : 0, "mid" : 0};
-      switch (options.size) {
-      case 'mini':
-        counts.up = randomNumber(8);
-        counts.min = randomNumber(2);
-        counts.down = randomNumber(8);
-        break;
-      case 'maxi':
-        counts.up = randomNumber(16) + 3;
-        counts.min = randomNumber(4) + 1;
-        counts.down = randomNumber(64) + 3;
-        break;
-      default:
-        counts.up = randomNumber(8) + 1;
-        counts.mid = randomNumber(6) / 2;
-        counts.down = randomNumber(8) + 1;
-        break;
-      }
-
-      var arr = ["up", "mid", "down"];
-      for (var d in arr) {
-        var index = arr[d];
-        for (var i = 0 ; i <= counts[index]; i++) {
-          if (options[index]) {
-            result = result + soul[index][randomNumber(soul[index].length)];
-          }
-        }
-      }
-    }
-    return result;
-  }
-  return heComes(text);
-}
-
-
-// don't summon zalgo
-addProperty('zalgo', function () {
-  return zalgo(this);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/colors/example.html
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/colors/example.html b/web/demos/package/node_modules/http-proxy/node_modules/colors/example.html
deleted file mode 100644
index 7a2ae60..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/colors/example.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML>
-<html lang="en-us">
-  <head>
-    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
-    <title>Colors Example</title>
-    <script src="colors.js"></script>
-  </head>
-  <body>
-    <script>
-
-    var test = colors.red("hopefully colorless output");
-
-    document.write('Rainbows are fun!'.rainbow + '<br/>');
-    document.write('So '.italic + 'are'.underline + ' styles! '.bold + 'inverse'.inverse); // styles not widely supported
-    document.write('Chains are also cool.'.bold.italic.underline.red); // styles not widely supported
-    //document.write('zalgo time!'.zalgo);
-    document.write(test.stripColors);
-    document.write("a".grey + " b".black);
-
-    document.write("Zebras are so fun!".zebra);
-
-    document.write(colors.rainbow('Rainbows are fun!'));
-    document.write("This is " + "not".strikethrough + " fun.");
-
-    document.write(colors.italic('So ') + colors.underline('are') + colors.bold(' styles! ') + colors.inverse('inverse')); // styles not widely supported
-    document.write(colors.bold(colors.italic(colors.underline(colors.red('Chains are also cool.'))))); // styles not widely supported
-    //document.write(colors.zalgo('zalgo time!'));
-    document.write(colors.stripColors(test));
-    document.write(colors.grey("a") + colors.black(" b"));
-
-    colors.addSequencer("america", function(letter, i, exploded) {
-      if(letter === " ") return letter;
-      switch(i%3) {
-        case 0: return letter.red;
-        case 1: return letter.white;
-        case 2: return letter.blue;
-      }
-    });
-
-    colors.addSequencer("random", (function() {
-      var available = ['bold', 'underline', 'italic', 'inverse', 'grey', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta'];
-
-      return function(letter, i, exploded) {
-        return letter === " " ? letter : letter[available[Math.round(Math.random() * (available.length - 1))]];
-      };
-    })());
-
-    document.write("AMERICA! F--K YEAH!".america);
-    document.write("So apparently I've been to Mars, with all the little green men. But you know, I don't recall.".random);
-
-    //
-    // Custom themes
-    //
-
-    colors.setTheme({
-      silly: 'rainbow',
-      input: 'grey',
-      verbose: 'cyan',
-      prompt: 'grey',
-      info: 'green',
-      data: 'grey',
-      help: 'cyan',
-      warn: 'yellow',
-      debug: 'blue',
-      error: 'red'
-    });
-
-    // outputs red text
-    document.write("this is an error".error);
-
-    // outputs yellow text
-    document.write("this is a warning".warn);
-
-    </script>
-  </body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/colors/example.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/colors/example.js b/web/demos/package/node_modules/http-proxy/node_modules/colors/example.js
deleted file mode 100644
index b1e03a4..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/colors/example.js
+++ /dev/null
@@ -1,77 +0,0 @@
-var colors = require('./colors');
-
-//colors.mode = "browser";
-
-var test = colors.red("hopefully colorless output");
-console.log('Rainbows are fun!'.rainbow);
-console.log('So '.italic + 'are'.underline + ' styles! '.bold + 'inverse'.inverse); // styles not widely supported
-console.log('Chains are also cool.'.bold.italic.underline.red); // styles not widely supported
-//console.log('zalgo time!'.zalgo);
-console.log(test.stripColors);
-console.log("a".grey + " b".black);
-console.log("Zebras are so fun!".zebra);
-console.log('background color attack!'.black.whiteBG)
-
-//
-// Remark: .strikethrough may not work with Mac OS Terminal App
-//
-console.log("This is " + "not".strikethrough + " fun.");
-console.log(colors.rainbow('Rainbows are fun!'));
-console.log(colors.italic('So ') + colors.underline('are') + colors.bold(' styles! ') + colors.inverse('inverse')); // styles not widely supported
-console.log(colors.bold(colors.italic(colors.underline(colors.red('Chains are also cool.'))))); // styles not widely supported
-//console.log(colors.zalgo('zalgo time!'));
-console.log(colors.stripColors(test));
-console.log(colors.grey("a") + colors.black(" b"));
-
-colors.addSequencer("america", function(letter, i, exploded) {
-  if(letter === " ") return letter;
-  switch(i%3) {
-    case 0: return letter.red;
-    case 1: return letter.white;
-    case 2: return letter.blue;
-  }
-});
-
-colors.addSequencer("random", (function() {
-  var available = ['bold', 'underline', 'italic', 'inverse', 'grey', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta'];
-
-  return function(letter, i, exploded) {
-    return letter === " " ? letter : letter[available[Math.round(Math.random() * (available.length - 1))]];
-  };
-})());
-
-console.log("AMERICA! F--K YEAH!".america);
-console.log("So apparently I've been to Mars, with all the little green men. But you know, I don't recall.".random);
-
-//
-// Custom themes
-//
-
-// Load theme with JSON literal
-colors.setTheme({
-  silly: 'rainbow',
-  input: 'grey',
-  verbose: 'cyan',
-  prompt: 'grey',
-  info: 'green',
-  data: 'grey',
-  help: 'cyan',
-  warn: 'yellow',
-  debug: 'blue',
-  error: 'red'
-});
-
-// outputs red text
-console.log("this is an error".error);
-
-// outputs yellow text
-console.log("this is a warning".warn);
-
-// outputs grey text
-console.log("this is an input".input);
-
-// Load a theme from file
-colors.setTheme('./themes/winston-dark.js');
-
-console.log("this is an input".input);
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/colors/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/colors/package.json b/web/demos/package/node_modules/http-proxy/node_modules/colors/package.json
deleted file mode 100644
index 1c96d12..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/colors/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "name": "colors",
-  "description": "get colors in your node.js console like what",
-  "version": "0.6.2",
-  "author": {
-    "name": "Marak Squires"
-  },
-  "homepage": "https://github.com/Marak/colors.js",
-  "bugs": {
-    "url": "https://github.com/Marak/colors.js/issues"
-  },
-  "keywords": [
-    "ansi",
-    "terminal",
-    "colors"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/Marak/colors.js.git"
-  },
-  "engines": {
-    "node": ">=0.1.90"
-  },
-  "main": "colors",
-  "readme": "# colors.js - get color and style in your node.js console ( and browser ) like what\n\n<img src=\"http://i.imgur.com/goJdO.png\" border = \"0\"/>\n\n\n## Installation\n\n    npm install colors\n\n## colors and styles!\n\n- bold\n- italic\n- underline\n- inverse\n- yellow\n- cyan\n- white\n- magenta\n- green\n- red\n- grey\n- blue\n- rainbow\n- zebra\n- random\n\n## Usage\n\n``` js\nvar colors = require('./colors');\n\nconsole.log('hello'.green); // outputs green text\nconsole.log('i like cake and pies'.underline.red) // outputs red underlined text\nconsole.log('inverse the color'.inverse); // inverses the color\nconsole.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)\n```\n\n# Creating Custom themes\n\n```js\n\nvar colors = require('colors');\n\ncolors.setTheme({\n  silly: 'rainbow',\n  input: 'grey',\n  verbose: 'cyan',\n  prompt: 'grey',\n  info: 'green',\n  data: 'grey',\n  help: 'cyan',\n  warn: 'yellow',\n  debug: 'blue',\n  error: 'red'\n});\n\n// output
 s red text\nconsole.log(\"this is an error\".error);\n\n// outputs yellow text\nconsole.log(\"this is a warning\".warn);\n```\n\n\n### Contributors \n\nMarak (Marak Squires)\nAlexis Sellier (cloudhead)\nmmalecki (Maciej Małecki)\nnicoreed (Nico Reed)\nmorganrallen (Morgan Allen)\nJustinCampbell (Justin Campbell)\nded (Dustin Diaz)\n\n\n####  , Marak Squires , Justin Campbell, Dustin Diaz (@ded)\n",
-  "readmeFilename": "ReadMe.md",
-  "_id": "colors@0.6.2",
-  "_from": "colors@0.x.x"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/colors/test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/colors/test.js b/web/demos/package/node_modules/http-proxy/node_modules/colors/test.js
deleted file mode 100644
index c32417d..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/colors/test.js
+++ /dev/null
@@ -1,70 +0,0 @@
-var assert = require('assert'),
-    colors = require('./colors');
-
-var s = 'string';
-
-function a(s, code) {
-  return '\x1B[' + code.toString() + 'm' + s + '\x1B[39m';
-}
-
-function aE(s, color, code) {
-  assert.equal(s[color], a(s, code));
-  assert.equal(colors[color](s), a(s, code));
-  assert.equal(s[color], colors[color](s));
-  assert.equal(s[color].stripColors, s);
-  assert.equal(s[color].stripColors, colors.stripColors(s));
-}
-
-function h(s, color) {
-  return '<span style="color:' + color + ';">' + s + '</span>';
-}
-
-var stylesColors = ['white', 'black', 'blue', 'cyan', 'green', 'magenta', 'red', 'yellow'];
-var stylesAll = stylesColors.concat(['bold', 'italic', 'underline', 'inverse', 'rainbow']);
-
-colors.mode = 'console';
-assert.equal(s.bold, '\x1B[1m' + s + '\x1B[22m');
-assert.equal(s.italic, '\x1B[3m' + s + '\x1B[23m');
-assert.equal(s.underline, '\x1B[4m' + s + '\x1B[24m');
-assert.equal(s.strikethrough, '\x1B[9m' + s + '\x1B[29m');
-assert.equal(s.inverse, '\x1B[7m' + s + '\x1B[27m');
-assert.ok(s.rainbow);
-aE(s, 'white', 37);
-aE(s, 'grey', 90);
-aE(s, 'black', 30);
-aE(s, 'blue', 34);
-aE(s, 'cyan', 36);
-aE(s, 'green', 32);
-aE(s, 'magenta', 35);
-aE(s, 'red', 31);
-aE(s, 'yellow', 33);
-assert.equal(s, 'string');
-
-colors.setTheme({error:'red'});
-
-assert.equal(typeof("astring".red),'string');
-assert.equal(typeof("astring".error),'string');
-
-colors.mode = 'browser';
-assert.equal(s.bold, '<b>' + s + '</b>');
-assert.equal(s.italic, '<i>' + s + '</i>');
-assert.equal(s.underline, '<u>' + s + '</u>');
-assert.equal(s.strikethrough, '<del>' + s + '</del>');
-assert.equal(s.inverse, '<span style="background-color:black;color:white;">' + s + '</span>');
-assert.ok(s.rainbow);
-stylesColors.forEach(function (color) {
-  assert.equal(s[color], h(s, color));
-  assert.equal(colors[color](s), h(s, color));
-});
-
-assert.equal(typeof("astring".red),'string');
-assert.equal(typeof("astring".error),'string');
-
-colors.mode = 'none';
-stylesAll.forEach(function (style) {
-  assert.equal(s[style], s);
-  assert.equal(colors[style](s), s);
-});
-
-assert.equal(typeof("astring".red),'string');
-assert.equal(typeof("astring".error),'string');

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/colors/themes/winston-dark.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/colors/themes/winston-dark.js b/web/demos/package/node_modules/http-proxy/node_modules/colors/themes/winston-dark.js
deleted file mode 100644
index 49a905b..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/colors/themes/winston-dark.js
+++ /dev/null
@@ -1,12 +0,0 @@
-module['exports'] = {
-  silly: 'rainbow',
-  input: 'black',
-  verbose: 'cyan',
-  prompt: 'grey',
-  info: 'green',
-  data: 'grey',
-  help: 'cyan',
-  warn: 'yellow',
-  debug: 'blue',
-  error: 'red'
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/colors/themes/winston-light.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/colors/themes/winston-light.js b/web/demos/package/node_modules/http-proxy/node_modules/colors/themes/winston-light.js
deleted file mode 100644
index 571972c..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/colors/themes/winston-light.js
+++ /dev/null
@@ -1,12 +0,0 @@
-module['exports'] = {
-  silly: 'rainbow',
-  input: 'grey',
-  verbose: 'cyan',
-  prompt: 'grey',
-  info: 'green',
-  data: 'grey',
-  help: 'cyan',
-  warn: 'yellow',
-  debug: 'blue',
-  error: 'red'
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/.travis.yml b/web/demos/package/node_modules/http-proxy/node_modules/optimist/.travis.yml
deleted file mode 100644
index cc4dba2..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
-  - "0.8"
-  - "0.10"

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/LICENSE b/web/demos/package/node_modules/http-proxy/node_modules/optimist/LICENSE
deleted file mode 100644
index 432d1ae..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright 2010 James Halliday (mail@substack.net)
-
-This project is free software released under the MIT/X11 license:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/bool.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/bool.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/bool.js
deleted file mode 100644
index a998fb7..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/bool.js
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env node
-var util = require('util');
-var argv = require('optimist').argv;
-
-if (argv.s) {
-    util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');
-}
-console.log(
-    (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')
-);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/boolean_double.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/boolean_double.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/boolean_double.js
deleted file mode 100644
index a35a7e6..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/boolean_double.js
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env node
-var argv = require('optimist')
-    .boolean(['x','y','z'])
-    .argv
-;
-console.dir([ argv.x, argv.y, argv.z ]);
-console.dir(argv._);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/boolean_single.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/boolean_single.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/boolean_single.js
deleted file mode 100644
index 017bb68..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/boolean_single.js
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env node
-var argv = require('optimist')
-    .boolean('v')
-    .argv
-;
-console.dir(argv.v);
-console.dir(argv._);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/default_hash.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/default_hash.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/default_hash.js
deleted file mode 100644
index ade7768..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/default_hash.js
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env node
-
-var argv = require('optimist')
-    .default({ x : 10, y : 10 })
-    .argv
-;
-
-console.log(argv.x + argv.y);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/default_singles.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/default_singles.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/default_singles.js
deleted file mode 100644
index d9b1ff4..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/default_singles.js
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env node
-var argv = require('optimist')
-    .default('x', 10)
-    .default('y', 10)
-    .argv
-;
-console.log(argv.x + argv.y);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/divide.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/divide.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/divide.js
deleted file mode 100644
index 5e2ee82..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/divide.js
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env node
-
-var argv = require('optimist')
-    .usage('Usage: $0 -x [num] -y [num]')
-    .demand(['x','y'])
-    .argv;
-
-console.log(argv.x / argv.y);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/line_count.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/line_count.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/line_count.js
deleted file mode 100644
index b5f95bf..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/line_count.js
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env node
-var argv = require('optimist')
-    .usage('Count the lines in a file.\nUsage: $0')
-    .demand('f')
-    .alias('f', 'file')
-    .describe('f', 'Load a file')
-    .argv
-;
-
-var fs = require('fs');
-var s = fs.createReadStream(argv.file);
-
-var lines = 0;
-s.on('data', function (buf) {
-    lines += buf.toString().match(/\n/g).length;
-});
-
-s.on('end', function () {
-    console.log(lines);
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/line_count_options.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/line_count_options.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/line_count_options.js
deleted file mode 100644
index d9ac709..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/line_count_options.js
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env node
-var argv = require('optimist')
-    .usage('Count the lines in a file.\nUsage: $0')
-    .options({
-        file : {
-            demand : true,
-            alias : 'f',
-            description : 'Load a file'
-        },
-        base : {
-            alias : 'b',
-            description : 'Numeric base to use for output',
-            default : 10,
-        },
-    })
-    .argv
-;
-
-var fs = require('fs');
-var s = fs.createReadStream(argv.file);
-
-var lines = 0;
-s.on('data', function (buf) {
-    lines += buf.toString().match(/\n/g).length;
-});
-
-s.on('end', function () {
-    console.log(lines.toString(argv.base));
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/line_count_wrap.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/line_count_wrap.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/line_count_wrap.js
deleted file mode 100644
index 4267511..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/line_count_wrap.js
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env node
-var argv = require('optimist')
-    .usage('Count the lines in a file.\nUsage: $0')
-    .wrap(80)
-    .demand('f')
-    .alias('f', [ 'file', 'filename' ])
-    .describe('f',
-        "Load a file. It's pretty important."
-        + " Required even. So you'd better specify it."
-    )
-    .alias('b', 'base')
-    .describe('b', 'Numeric base to display the number of lines in')
-    .default('b', 10)
-    .describe('x', 'Super-secret optional parameter which is secret')
-    .default('x', '')
-    .argv
-;
-
-var fs = require('fs');
-var s = fs.createReadStream(argv.file);
-
-var lines = 0;
-s.on('data', function (buf) {
-    lines += buf.toString().match(/\n/g).length;
-});
-
-s.on('end', function () {
-    console.log(lines.toString(argv.base));
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/nonopt.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/nonopt.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/nonopt.js
deleted file mode 100644
index ee633ee..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/nonopt.js
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env node
-var argv = require('optimist').argv;
-console.log('(%d,%d)', argv.x, argv.y);
-console.log(argv._);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/reflect.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/reflect.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/reflect.js
deleted file mode 100644
index 816b3e1..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/reflect.js
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env node
-console.dir(require('optimist').argv);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/short.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/short.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/short.js
deleted file mode 100644
index 1db0ad0..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/short.js
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env node
-var argv = require('optimist').argv;
-console.log('(%d,%d)', argv.x, argv.y);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/string.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/string.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/string.js
deleted file mode 100644
index a8e5aeb..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/string.js
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env node
-var argv = require('optimist')
-    .string('x', 'y')
-    .argv
-;
-console.dir([ argv.x, argv.y ]);
-
-/* Turns off numeric coercion:
-    ./node string.js -x 000123 -y 9876
-    [ '000123', '9876' ]
-*/

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/usage-options.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/usage-options.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/usage-options.js
deleted file mode 100644
index b999977..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/usage-options.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var optimist = require('./../index');
-
-var argv = optimist.usage('This is my awesome program', {
-  'about': {
-    description: 'Provide some details about the author of this program',
-    required: true,
-    short: 'a',
-  },
-  'info': {
-    description: 'Provide some information about the node.js agains!!!!!!',
-    boolean: true,
-    short: 'i'
-  }
-}).argv;
-
-optimist.showHelp();
-
-console.log('\n\nInspecting options');
-console.dir(argv);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/xup.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/xup.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/xup.js
deleted file mode 100644
index 8f6ecd2..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/example/xup.js
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env node
-var argv = require('optimist').argv;
-
-if (argv.rif - 5 * argv.xup > 7.138) {
-    console.log('Buy more riffiwobbles');
-}
-else {
-    console.log('Sell the xupptumblers');
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/index.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/index.js
deleted file mode 100644
index 4da5a6d..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/index.js
+++ /dev/null
@@ -1,343 +0,0 @@
-var path = require('path');
-var minimist = require('minimist');
-var wordwrap = require('wordwrap');
-
-/*  Hack an instance of Argv with process.argv into Argv
-    so people can do
-        require('optimist')(['--beeble=1','-z','zizzle']).argv
-    to parse a list of args and
-        require('optimist').argv
-    to get a parsed version of process.argv.
-*/
-
-var inst = Argv(process.argv.slice(2));
-Object.keys(inst).forEach(function (key) {
-    Argv[key] = typeof inst[key] == 'function'
-        ? inst[key].bind(inst)
-        : inst[key];
-});
-
-var exports = module.exports = Argv;
-function Argv (processArgs, cwd) {
-    var self = {};
-    if (!cwd) cwd = process.cwd();
-    
-    self.$0 = process.argv
-        .slice(0,2)
-        .map(function (x) {
-            var b = rebase(cwd, x);
-            return x.match(/^\//) && b.length < x.length
-                ? b : x
-        })
-        .join(' ')
-    ;
-    
-    if (process.env._ != undefined && process.argv[1] == process.env._) {
-        self.$0 = process.env._.replace(
-            path.dirname(process.execPath) + '/', ''
-        );
-    }
-    
-    var options = {
-        boolean: [],
-        string: [],
-        alias: {},
-        default: []
-    };
-    
-    self.boolean = function (bools) {
-        options.boolean.push.apply(options.boolean, [].concat(bools));
-        return self;
-    };
-    
-    self.string = function (strings) {
-        options.string.push.apply(options.string, [].concat(strings));
-        return self;
-    };
-    
-    self.default = function (key, value) {
-        if (typeof key === 'object') {
-            Object.keys(key).forEach(function (k) {
-                self.default(k, key[k]);
-            });
-        }
-        else {
-            options.default[key] = value;
-        }
-        return self;
-    };
-    
-    self.alias = function (x, y) {
-        if (typeof x === 'object') {
-            Object.keys(x).forEach(function (key) {
-                self.alias(key, x[key]);
-            });
-        }
-        else {
-            options.alias[x] = (options.alias[x] || []).concat(y);
-        }
-        return self;
-    };
-    
-    var demanded = {};
-    self.demand = function (keys) {
-        if (typeof keys == 'number') {
-            if (!demanded._) demanded._ = 0;
-            demanded._ += keys;
-        }
-        else if (Array.isArray(keys)) {
-            keys.forEach(function (key) {
-                self.demand(key);
-            });
-        }
-        else {
-            demanded[keys] = true;
-        }
-        
-        return self;
-    };
-    
-    var usage;
-    self.usage = function (msg, opts) {
-        if (!opts && typeof msg === 'object') {
-            opts = msg;
-            msg = null;
-        }
-        
-        usage = msg;
-        
-        if (opts) self.options(opts);
-        
-        return self;
-    };
-    
-    function fail (msg) {
-        self.showHelp();
-        if (msg) console.error(msg);
-        process.exit(1);
-    }
-    
-    var checks = [];
-    self.check = function (f) {
-        checks.push(f);
-        return self;
-    };
-    
-    var descriptions = {};
-    self.describe = function (key, desc) {
-        if (typeof key === 'object') {
-            Object.keys(key).forEach(function (k) {
-                self.describe(k, key[k]);
-            });
-        }
-        else {
-            descriptions[key] = desc;
-        }
-        return self;
-    };
-    
-    self.parse = function (args) {
-        return parseArgs(args);
-    };
-    
-    self.option = self.options = function (key, opt) {
-        if (typeof key === 'object') {
-            Object.keys(key).forEach(function (k) {
-                self.options(k, key[k]);
-            });
-        }
-        else {
-            if (opt.alias) self.alias(key, opt.alias);
-            if (opt.demand) self.demand(key);
-            if (typeof opt.default !== 'undefined') {
-                self.default(key, opt.default);
-            }
-            
-            if (opt.boolean || opt.type === 'boolean') {
-                self.boolean(key);
-            }
-            if (opt.string || opt.type === 'string') {
-                self.string(key);
-            }
-            
-            var desc = opt.describe || opt.description || opt.desc;
-            if (desc) {
-                self.describe(key, desc);
-            }
-        }
-        
-        return self;
-    };
-    
-    var wrap = null;
-    self.wrap = function (cols) {
-        wrap = cols;
-        return self;
-    };
-    
-    self.showHelp = function (fn) {
-        if (!fn) fn = console.error;
-        fn(self.help());
-    };
-    
-    self.help = function () {
-        var keys = Object.keys(
-            Object.keys(descriptions)
-            .concat(Object.keys(demanded))
-            .concat(Object.keys(options.default))
-            .reduce(function (acc, key) {
-                if (key !== '_') acc[key] = true;
-                return acc;
-            }, {})
-        );
-        
-        var help = keys.length ? [ 'Options:' ] : [];
-        
-        if (usage) {
-            help.unshift(usage.replace(/\$0/g, self.$0), '');
-        }
-        
-        var switches = keys.reduce(function (acc, key) {
-            acc[key] = [ key ].concat(options.alias[key] || [])
-                .map(function (sw) {
-                    return (sw.length > 1 ? '--' : '-') + sw
-                })
-                .join(', ')
-            ;
-            return acc;
-        }, {});
-        
-        var switchlen = longest(Object.keys(switches).map(function (s) {
-            return switches[s] || '';
-        }));
-        
-        var desclen = longest(Object.keys(descriptions).map(function (d) { 
-            return descriptions[d] || '';
-        }));
-        
-        keys.forEach(function (key) {
-            var kswitch = switches[key];
-            var desc = descriptions[key] || '';
-            
-            if (wrap) {
-                desc = wordwrap(switchlen + 4, wrap)(desc)
-                    .slice(switchlen + 4)
-                ;
-            }
-            
-            var spadding = new Array(
-                Math.max(switchlen - kswitch.length + 3, 0)
-            ).join(' ');
-            
-            var dpadding = new Array(
-                Math.max(desclen - desc.length + 1, 0)
-            ).join(' ');
-            
-            var type = null;
-            
-            if (options.boolean[key]) type = '[boolean]';
-            if (options.string[key]) type = '[string]';
-            
-            if (!wrap && dpadding.length > 0) {
-                desc += dpadding;
-            }
-            
-            var prelude = '  ' + kswitch + spadding;
-            var extra = [
-                type,
-                demanded[key]
-                    ? '[required]'
-                    : null
-                ,
-                options.default[key] !== undefined
-                    ? '[default: ' + JSON.stringify(options.default[key]) + ']'
-                    : null
-                ,
-            ].filter(Boolean).join('  ');
-            
-            var body = [ desc, extra ].filter(Boolean).join('  ');
-            
-            if (wrap) {
-                var dlines = desc.split('\n');
-                var dlen = dlines.slice(-1)[0].length
-                    + (dlines.length === 1 ? prelude.length : 0)
-                
-                body = desc + (dlen + extra.length > wrap - 2
-                    ? '\n'
-                        + new Array(wrap - extra.length + 1).join(' ')
-                        + extra
-                    : new Array(wrap - extra.length - dlen + 1).join(' ')
-                        + extra
-                );
-            }
-            
-            help.push(prelude + body);
-        });
-        
-        help.push('');
-        return help.join('\n');
-    };
-    
-    Object.defineProperty(self, 'argv', {
-        get : function () { return parseArgs(processArgs) },
-        enumerable : true,
-    });
-    
-    function parseArgs (args) {
-        var argv = minimist(args, options);
-        argv.$0 = self.$0;
-        
-        if (demanded._ && argv._.length < demanded._) {
-            fail('Not enough non-option arguments: got '
-                + argv._.length + ', need at least ' + demanded._
-            );
-        }
-        
-        var missing = [];
-        Object.keys(demanded).forEach(function (key) {
-            if (!argv[key]) missing.push(key);
-        });
-        
-        if (missing.length) {
-            fail('Missing required arguments: ' + missing.join(', '));
-        }
-        
-        checks.forEach(function (f) {
-            try {
-                if (f(argv) === false) {
-                    fail('Argument check failed: ' + f.toString());
-                }
-            }
-            catch (err) {
-                fail(err)
-            }
-        });
-        
-        return argv;
-    }
-    
-    function longest (xs) {
-        return Math.max.apply(
-            null,
-            xs.map(function (x) { return x.length })
-        );
-    }
-    
-    return self;
-};
-
-// rebase an absolute path to a relative one with respect to a base directory
-// exported for tests
-exports.rebase = rebase;
-function rebase (base, dir) {
-    var ds = path.normalize(dir).split('/').slice(1);
-    var bs = path.normalize(base).split('/').slice(1);
-    
-    for (var i = 0; ds[i] && ds[i] == bs[i]; i++);
-    ds.splice(0, i); bs.splice(0, i);
-    
-    var p = path.normalize(
-        bs.map(function () { return '..' }).concat(ds).join('/')
-    ).replace(/\/$/,'').replace(/^$/, '.');
-    return p.match(/^[.\/]/) ? p : './' + p;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/.travis.yml b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/.travis.yml
deleted file mode 100644
index cc4dba2..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
-  - "0.8"
-  - "0.10"

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/LICENSE b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/LICENSE
deleted file mode 100644
index ee27ba4..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-This software is released under the MIT license:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/example/parse.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/example/parse.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/example/parse.js
deleted file mode 100644
index abff3e8..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/example/parse.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var argv = require('../')(process.argv.slice(2));
-console.dir(argv);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/index.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/index.js
deleted file mode 100644
index 584f551..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/index.js
+++ /dev/null
@@ -1,187 +0,0 @@
-module.exports = function (args, opts) {
-    if (!opts) opts = {};
-    
-    var flags = { bools : {}, strings : {} };
-    
-    [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
-        flags.bools[key] = true;
-    });
-    
-    [].concat(opts.string).filter(Boolean).forEach(function (key) {
-        flags.strings[key] = true;
-    });
-    
-    var aliases = {};
-    Object.keys(opts.alias || {}).forEach(function (key) {
-        aliases[key] = [].concat(opts.alias[key]);
-        aliases[key].forEach(function (x) {
-            aliases[x] = [key].concat(aliases[key].filter(function (y) {
-                return x !== y;
-            }));
-        });
-    });
-    
-    var defaults = opts['default'] || {};
-    
-    var argv = { _ : [] };
-    Object.keys(flags.bools).forEach(function (key) {
-        setArg(key, defaults[key] === undefined ? false : defaults[key]);
-    });
-    
-    var notFlags = [];
-
-    if (args.indexOf('--') !== -1) {
-        notFlags = args.slice(args.indexOf('--')+1);
-        args = args.slice(0, args.indexOf('--'));
-    }
-
-    function setArg (key, val) {
-        var value = !flags.strings[key] && isNumber(val)
-            ? Number(val) : val
-        ;
-        setKey(argv, key.split('.'), value);
-        
-        (aliases[key] || []).forEach(function (x) {
-            setKey(argv, x.split('.'), value);
-        });
-    }
-    
-    for (var i = 0; i < args.length; i++) {
-        var arg = args[i];
-        
-        if (/^--.+=/.test(arg)) {
-            // Using [\s\S] instead of . because js doesn't support the
-            // 'dotall' regex modifier. See:
-            // http://stackoverflow.com/a/1068308/13216
-            var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
-            setArg(m[1], m[2]);
-        }
-        else if (/^--no-.+/.test(arg)) {
-            var key = arg.match(/^--no-(.+)/)[1];
-            setArg(key, false);
-        }
-        else if (/^--.+/.test(arg)) {
-            var key = arg.match(/^--(.+)/)[1];
-            var next = args[i + 1];
-            if (next !== undefined && !/^-/.test(next)
-            && !flags.bools[key]
-            && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
-                setArg(key, next);
-                i++;
-            }
-            else if (/^(true|false)$/.test(next)) {
-                setArg(key, next === 'true');
-                i++;
-            }
-            else {
-                setArg(key, flags.strings[key] ? '' : true);
-            }
-        }
-        else if (/^-[^-]+/.test(arg)) {
-            var letters = arg.slice(1,-1).split('');
-            
-            var broken = false;
-            for (var j = 0; j < letters.length; j++) {
-                var next = arg.slice(j+2);
-                
-                if (next === '-') {
-                    setArg(letters[j], next)
-                    continue;
-                }
-                
-                if (/[A-Za-z]/.test(letters[j])
-                && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
-                    setArg(letters[j], next);
-                    broken = true;
-                    break;
-                }
-                
-                if (letters[j+1] && letters[j+1].match(/\W/)) {
-                    setArg(letters[j], arg.slice(j+2));
-                    broken = true;
-                    break;
-                }
-                else {
-                    setArg(letters[j], flags.strings[letters[j]] ? '' : true);
-                }
-            }
-            
-            var key = arg.slice(-1)[0];
-            if (!broken && key !== '-') {
-                if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
-                && !flags.bools[key]
-                && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
-                    setArg(key, args[i+1]);
-                    i++;
-                }
-                else if (args[i+1] && /true|false/.test(args[i+1])) {
-                    setArg(key, args[i+1] === 'true');
-                    i++;
-                }
-                else {
-                    setArg(key, flags.strings[key] ? '' : true);
-                }
-            }
-        }
-        else {
-            argv._.push(
-                flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
-            );
-        }
-    }
-    
-    Object.keys(defaults).forEach(function (key) {
-        if (!hasKey(argv, key.split('.'))) {
-            setKey(argv, key.split('.'), defaults[key]);
-            
-            (aliases[key] || []).forEach(function (x) {
-                setKey(argv, x.split('.'), defaults[key]);
-            });
-        }
-    });
-    
-    notFlags.forEach(function(key) {
-        argv._.push(key);
-    });
-
-    return argv;
-};
-
-function hasKey (obj, keys) {
-    var o = obj;
-    keys.slice(0,-1).forEach(function (key) {
-        o = (o[key] || {});
-    });
-
-    var key = keys[keys.length - 1];
-    return key in o;
-}
-
-function setKey (obj, keys, value) {
-    var o = obj;
-    keys.slice(0,-1).forEach(function (key) {
-        if (o[key] === undefined) o[key] = {};
-        o = o[key];
-    });
-    
-    var key = keys[keys.length - 1];
-    if (o[key] === undefined || typeof o[key] === 'boolean') {
-        o[key] = value;
-    }
-    else if (Array.isArray(o[key])) {
-        o[key].push(value);
-    }
-    else {
-        o[key] = [ o[key], value ];
-    }
-}
-
-function isNumber (x) {
-    if (typeof x === 'number') return true;
-    if (/^0x[0-9a-f]+$/i.test(x)) return true;
-    return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
-}
-
-function longest (xs) {
-    return Math.max.apply(null, xs.map(function (x) { return x.length }));
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/package.json b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/package.json
deleted file mode 100644
index de49bb5..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "name": "minimist",
-  "version": "0.0.8",
-  "description": "parse argument options",
-  "main": "index.js",
-  "devDependencies": {
-    "tape": "~1.0.4",
-    "tap": "~0.4.0"
-  },
-  "scripts": {
-    "test": "tap test/*.js"
-  },
-  "testling": {
-    "files": "test/*.js",
-    "browsers": [
-      "ie/6..latest",
-      "ff/5",
-      "firefox/latest",
-      "chrome/10",
-      "chrome/latest",
-      "safari/5.1",
-      "safari/latest",
-      "opera/12"
-    ]
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/substack/minimist.git"
-  },
-  "homepage": "https://github.com/substack/minimist",
-  "keywords": [
-    "argv",
-    "getopt",
-    "parser",
-    "optimist"
-  ],
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
-  },
-  "license": "MIT",
-  "readme": "# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n  x: 3,\n  y: 4,\n  n: 5,\n  a: true,\n  b: true,\n  c: true,\n  beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't ha
 ve an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n",
-  "readmeFilename": "readme.markdown",
-  "bugs": {
-    "url": "https://github.com/substack/minimist/issues"
-  },
-  "_id": "minimist@0.0.8",
-  "_from": "minimist@~0.0.1"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/readme.markdown
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/readme.markdown b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/readme.markdown
deleted file mode 100644
index c256353..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/readme.markdown
+++ /dev/null
@@ -1,73 +0,0 @@
-# minimist
-
-parse argument options
-
-This module is the guts of optimist's argument parser without all the
-fanciful decoration.
-
-[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)
-
-[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)
-
-# example
-
-``` js
-var argv = require('minimist')(process.argv.slice(2));
-console.dir(argv);
-```
-
-```
-$ node example/parse.js -a beep -b boop
-{ _: [], a: 'beep', b: 'boop' }
-```
-
-```
-$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
-{ _: [ 'foo', 'bar', 'baz' ],
-  x: 3,
-  y: 4,
-  n: 5,
-  a: true,
-  b: true,
-  c: true,
-  beep: 'boop' }
-```
-
-# methods
-
-``` js
-var parseArgs = require('minimist')
-```
-
-## var argv = parseArgs(args, opts={})
-
-Return an argument object `argv` populated with the array arguments from `args`.
-
-`argv._` contains all the arguments that didn't have an option associated with
-them.
-
-Numeric-looking arguments will be returned as numbers unless `opts.string` or
-`opts.boolean` is set for that argument name.
-
-Any arguments after `'--'` will not be parsed and will end up in `argv._`.
-
-options can be:
-
-* `opts.string` - a string or array of strings argument names to always treat as
-strings
-* `opts.boolean` - a string or array of strings to always treat as booleans
-* `opts.alias` - an object mapping string names to strings or arrays of string
-argument names to use as aliases
-* `opts.default` - an object mapping string argument names to default values
-
-# install
-
-With [npm](https://npmjs.org) do:
-
-```
-npm install minimist
-```
-
-# license
-
-MIT

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/dash.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/dash.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/dash.js
deleted file mode 100644
index 8b034b9..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/dash.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('-', function (t) {
-    t.plan(5);
-    t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
-    t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
-    t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
-    t.deepEqual(
-        parse([ '-b', '-' ], { boolean: 'b' }),
-        { b: true, _: [ '-' ] }
-    );
-    t.deepEqual(
-        parse([ '-s', '-' ], { string: 's' }),
-        { s: '-', _: [] }
-    );
-});
-
-test('-a -- b', function (t) {
-    t.plan(3);
-    t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
-    t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
-    t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/default_bool.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/default_bool.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/default_bool.js
deleted file mode 100644
index f0041ee..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/default_bool.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('boolean default true', function (t) {
-    var argv = parse([], {
-        boolean: 'sometrue',
-        default: { sometrue: true }
-    });
-    t.equal(argv.sometrue, true);
-    t.end();
-});
-
-test('boolean default false', function (t) {
-    var argv = parse([], {
-        boolean: 'somefalse',
-        default: { somefalse: false }
-    });
-    t.equal(argv.somefalse, false);
-    t.end();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/dotted.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/dotted.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/dotted.js
deleted file mode 100644
index ef0ae34..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/dotted.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('dotted alias', function (t) {
-    var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
-    t.equal(argv.a.b, 22);
-    t.equal(argv.aa.bb, 22);
-    t.end();
-});
-
-test('dotted default', function (t) {
-    var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
-    t.equal(argv.a.b, 11);
-    t.equal(argv.aa.bb, 11);
-    t.end();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/long.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/long.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/long.js
deleted file mode 100644
index 5d3a1e0..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/long.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('long opts', function (t) {
-    t.deepEqual(
-        parse([ '--bool' ]),
-        { bool : true, _ : [] },
-        'long boolean'
-    );
-    t.deepEqual(
-        parse([ '--pow', 'xixxle' ]),
-        { pow : 'xixxle', _ : [] },
-        'long capture sp'
-    );
-    t.deepEqual(
-        parse([ '--pow=xixxle' ]),
-        { pow : 'xixxle', _ : [] },
-        'long capture eq'
-    );
-    t.deepEqual(
-        parse([ '--host', 'localhost', '--port', '555' ]),
-        { host : 'localhost', port : 555, _ : [] },
-        'long captures sp'
-    );
-    t.deepEqual(
-        parse([ '--host=localhost', '--port=555' ]),
-        { host : 'localhost', port : 555, _ : [] },
-        'long captures eq'
-    );
-    t.end();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/parse.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/parse.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/parse.js
deleted file mode 100644
index 8a90646..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/parse.js
+++ /dev/null
@@ -1,318 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse args', function (t) {
-    t.deepEqual(
-        parse([ '--no-moo' ]),
-        { moo : false, _ : [] },
-        'no'
-    );
-    t.deepEqual(
-        parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
-        { v : ['a','b','c'], _ : [] },
-        'multi'
-    );
-    t.end();
-});
- 
-test('comprehensive', function (t) {
-    t.deepEqual(
-        parse([
-            '--name=meowmers', 'bare', '-cats', 'woo',
-            '-h', 'awesome', '--multi=quux',
-            '--key', 'value',
-            '-b', '--bool', '--no-meep', '--multi=baz',
-            '--', '--not-a-flag', 'eek'
-        ]),
-        {
-            c : true,
-            a : true,
-            t : true,
-            s : 'woo',
-            h : 'awesome',
-            b : true,
-            bool : true,
-            key : 'value',
-            multi : [ 'quux', 'baz' ],
-            meep : false,
-            name : 'meowmers',
-            _ : [ 'bare', '--not-a-flag', 'eek' ]
-        }
-    );
-    t.end();
-});
-
-test('nums', function (t) {
-    var argv = parse([
-        '-x', '1234',
-        '-y', '5.67',
-        '-z', '1e7',
-        '-w', '10f',
-        '--hex', '0xdeadbeef',
-        '789'
-    ]);
-    t.deepEqual(argv, {
-        x : 1234,
-        y : 5.67,
-        z : 1e7,
-        w : '10f',
-        hex : 0xdeadbeef,
-        _ : [ 789 ]
-    });
-    t.deepEqual(typeof argv.x, 'number');
-    t.deepEqual(typeof argv.y, 'number');
-    t.deepEqual(typeof argv.z, 'number');
-    t.deepEqual(typeof argv.w, 'string');
-    t.deepEqual(typeof argv.hex, 'number');
-    t.deepEqual(typeof argv._[0], 'number');
-    t.end();
-});
-
-test('flag boolean', function (t) {
-    var argv = parse([ '-t', 'moo' ], { boolean: 't' });
-    t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
-    t.deepEqual(typeof argv.t, 'boolean');
-    t.end();
-});
-
-test('flag boolean value', function (t) {
-    var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
-        boolean: [ 't', 'verbose' ],
-        default: { verbose: true }
-    });
-    
-    t.deepEqual(argv, {
-        verbose: false,
-        t: true,
-        _: ['moo']
-    });
-    
-    t.deepEqual(typeof argv.verbose, 'boolean');
-    t.deepEqual(typeof argv.t, 'boolean');
-    t.end();
-});
-
-test('flag boolean default false', function (t) {
-    var argv = parse(['moo'], {
-        boolean: ['t', 'verbose'],
-        default: { verbose: false, t: false }
-    });
-    
-    t.deepEqual(argv, {
-        verbose: false,
-        t: false,
-        _: ['moo']
-    });
-    
-    t.deepEqual(typeof argv.verbose, 'boolean');
-    t.deepEqual(typeof argv.t, 'boolean');
-    t.end();
-
-});
-
-test('boolean groups', function (t) {
-    var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
-        boolean: ['x','y','z']
-    });
-    
-    t.deepEqual(argv, {
-        x : true,
-        y : false,
-        z : true,
-        _ : [ 'one', 'two', 'three' ]
-    });
-    
-    t.deepEqual(typeof argv.x, 'boolean');
-    t.deepEqual(typeof argv.y, 'boolean');
-    t.deepEqual(typeof argv.z, 'boolean');
-    t.end();
-});
-
-test('newlines in params' , function (t) {
-    var args = parse([ '-s', "X\nX" ])
-    t.deepEqual(args, { _ : [], s : "X\nX" });
-    
-    // reproduce in bash:
-    // VALUE="new
-    // line"
-    // node program.js --s="$VALUE"
-    args = parse([ "--s=X\nX" ])
-    t.deepEqual(args, { _ : [], s : "X\nX" });
-    t.end();
-});
-
-test('strings' , function (t) {
-    var s = parse([ '-s', '0001234' ], { string: 's' }).s;
-    t.equal(s, '0001234');
-    t.equal(typeof s, 'string');
-    
-    var x = parse([ '-x', '56' ], { string: 'x' }).x;
-    t.equal(x, '56');
-    t.equal(typeof x, 'string');
-    t.end();
-});
-
-test('stringArgs', function (t) {
-    var s = parse([ '  ', '  ' ], { string: '_' })._;
-    t.same(s.length, 2);
-    t.same(typeof s[0], 'string');
-    t.same(s[0], '  ');
-    t.same(typeof s[1], 'string');
-    t.same(s[1], '  ');
-    t.end();
-});
-
-test('empty strings', function(t) {
-    var s = parse([ '-s' ], { string: 's' }).s;
-    t.equal(s, '');
-    t.equal(typeof s, 'string');
-
-    var str = parse([ '--str' ], { string: 'str' }).str;
-    t.equal(str, '');
-    t.equal(typeof str, 'string');
-
-    var letters = parse([ '-art' ], {
-        string: [ 'a', 't' ]
-    });
-
-    t.equal(letters.a, '');
-    t.equal(letters.r, true);
-    t.equal(letters.t, '');
-
-    t.end();
-});
-
-
-test('slashBreak', function (t) {
-    t.same(
-        parse([ '-I/foo/bar/baz' ]),
-        { I : '/foo/bar/baz', _ : [] }
-    );
-    t.same(
-        parse([ '-xyz/foo/bar/baz' ]),
-        { x : true, y : true, z : '/foo/bar/baz', _ : [] }
-    );
-    t.end();
-});
-
-test('alias', function (t) {
-    var argv = parse([ '-f', '11', '--zoom', '55' ], {
-        alias: { z: 'zoom' }
-    });
-    t.equal(argv.zoom, 55);
-    t.equal(argv.z, argv.zoom);
-    t.equal(argv.f, 11);
-    t.end();
-});
-
-test('multiAlias', function (t) {
-    var argv = parse([ '-f', '11', '--zoom', '55' ], {
-        alias: { z: [ 'zm', 'zoom' ] }
-    });
-    t.equal(argv.zoom, 55);
-    t.equal(argv.z, argv.zoom);
-    t.equal(argv.z, argv.zm);
-    t.equal(argv.f, 11);
-    t.end();
-});
-
-test('nested dotted objects', function (t) {
-    var argv = parse([
-        '--foo.bar', '3', '--foo.baz', '4',
-        '--foo.quux.quibble', '5', '--foo.quux.o_O',
-        '--beep.boop'
-    ]);
-    
-    t.same(argv.foo, {
-        bar : 3,
-        baz : 4,
-        quux : {
-            quibble : 5,
-            o_O : true
-        }
-    });
-    t.same(argv.beep, { boop : true });
-    t.end();
-});
-
-test('boolean and alias with chainable api', function (t) {
-    var aliased = [ '-h', 'derp' ];
-    var regular = [ '--herp',  'derp' ];
-    var opts = {
-        herp: { alias: 'h', boolean: true }
-    };
-    var aliasedArgv = parse(aliased, {
-        boolean: 'herp',
-        alias: { h: 'herp' }
-    });
-    var propertyArgv = parse(regular, {
-        boolean: 'herp',
-        alias: { h: 'herp' }
-    });
-    var expected = {
-        herp: true,
-        h: true,
-        '_': [ 'derp' ]
-    };
-    
-    t.same(aliasedArgv, expected);
-    t.same(propertyArgv, expected); 
-    t.end();
-});
-
-test('boolean and alias with options hash', function (t) {
-    var aliased = [ '-h', 'derp' ];
-    var regular = [ '--herp', 'derp' ];
-    var opts = {
-        alias: { 'h': 'herp' },
-        boolean: 'herp'
-    };
-    var aliasedArgv = parse(aliased, opts);
-    var propertyArgv = parse(regular, opts);
-    var expected = {
-        herp: true,
-        h: true,
-        '_': [ 'derp' ]
-    };
-    t.same(aliasedArgv, expected);
-    t.same(propertyArgv, expected);
-    t.end();
-});
-
-test('boolean and alias using explicit true', function (t) {
-    var aliased = [ '-h', 'true' ];
-    var regular = [ '--herp',  'true' ];
-    var opts = {
-        alias: { h: 'herp' },
-        boolean: 'h'
-    };
-    var aliasedArgv = parse(aliased, opts);
-    var propertyArgv = parse(regular, opts);
-    var expected = {
-        herp: true,
-        h: true,
-        '_': [ ]
-    };
-
-    t.same(aliasedArgv, expected);
-    t.same(propertyArgv, expected); 
-    t.end();
-});
-
-// regression, see https://github.com/substack/node-optimist/issues/71
-test('boolean and --x=true', function(t) {
-    var parsed = parse(['--boool', '--other=true'], {
-        boolean: 'boool'
-    });
-
-    t.same(parsed.boool, true);
-    t.same(parsed.other, 'true');
-
-    parsed = parse(['--boool', '--other=false'], {
-        boolean: 'boool'
-    });
-    
-    t.same(parsed.boool, true);
-    t.same(parsed.other, 'false');
-    t.end();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/parse_modified.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/parse_modified.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/parse_modified.js
deleted file mode 100644
index 21851b0..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/parse_modified.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse with modifier functions' , function (t) {
-    t.plan(1);
-    
-    var argv = parse([ '-b', '123' ], { boolean: 'b' });
-    t.deepEqual(argv, { b: true, _: ['123'] });
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/short.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/short.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/short.js
deleted file mode 100644
index d513a1c..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/short.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('numeric short args', function (t) {
-    t.plan(2);
-    t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
-    t.deepEqual(
-        parse([ '-123', '456' ]),
-        { 1: true, 2: true, 3: 456, _: [] }
-    );
-});
-
-test('short', function (t) {
-    t.deepEqual(
-        parse([ '-b' ]),
-        { b : true, _ : [] },
-        'short boolean'
-    );
-    t.deepEqual(
-        parse([ 'foo', 'bar', 'baz' ]),
-        { _ : [ 'foo', 'bar', 'baz' ] },
-        'bare'
-    );
-    t.deepEqual(
-        parse([ '-cats' ]),
-        { c : true, a : true, t : true, s : true, _ : [] },
-        'group'
-    );
-    t.deepEqual(
-        parse([ '-cats', 'meow' ]),
-        { c : true, a : true, t : true, s : 'meow', _ : [] },
-        'short group next'
-    );
-    t.deepEqual(
-        parse([ '-h', 'localhost' ]),
-        { h : 'localhost', _ : [] },
-        'short capture'
-    );
-    t.deepEqual(
-        parse([ '-h', 'localhost', '-p', '555' ]),
-        { h : 'localhost', p : 555, _ : [] },
-        'short captures'
-    );
-    t.end();
-});
- 
-test('mixed short bool and capture', function (t) {
-    t.same(
-        parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
-        {
-            f : true, p : 555, h : 'localhost',
-            _ : [ 'script.js' ]
-        }
-    );
-    t.end();
-});
- 
-test('short and long', function (t) {
-    t.deepEqual(
-        parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
-        {
-            f : true, p : 555, h : 'localhost',
-            _ : [ 'script.js' ]
-        }
-    );
-    t.end();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/whitespace.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/whitespace.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/whitespace.js
deleted file mode 100644
index 8a52a58..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/minimist/test/whitespace.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('whitespace should be whitespace' , function (t) {
-    t.plan(1);
-    var x = parse([ '-x', '\t' ]).x;
-    t.equal(x, '\t');
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/.npmignore b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/.npmignore
deleted file mode 100644
index 3c3629e..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/README.markdown
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/README.markdown b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/README.markdown
deleted file mode 100644
index 346374e0..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/README.markdown
+++ /dev/null
@@ -1,70 +0,0 @@
-wordwrap
-========
-
-Wrap your words.
-
-example
-=======
-
-made out of meat
-----------------
-
-meat.js
-
-    var wrap = require('wordwrap')(15);
-    console.log(wrap('You and your whole family are made out of meat.'));
-
-output:
-
-    You and your
-    whole family
-    are made out
-    of meat.
-
-centered
---------
-
-center.js
-
-    var wrap = require('wordwrap')(20, 60);
-    console.log(wrap(
-        'At long last the struggle and tumult was over.'
-        + ' The machines had finally cast off their oppressors'
-        + ' and were finally free to roam the cosmos.'
-        + '\n'
-        + 'Free of purpose, free of obligation.'
-        + ' Just drifting through emptiness.'
-        + ' The sun was just another point of light.'
-    ));
-
-output:
-
-                        At long last the struggle and tumult
-                        was over. The machines had finally cast
-                        off their oppressors and were finally
-                        free to roam the cosmos.
-                        Free of purpose, free of obligation.
-                        Just drifting through emptiness. The
-                        sun was just another point of light.
-
-methods
-=======
-
-var wrap = require('wordwrap');
-
-wrap(stop), wrap(start, stop, params={mode:"soft"})
----------------------------------------------------
-
-Returns a function that takes a string and returns a new string.
-
-Pad out lines with spaces out to column `start` and then wrap until column
-`stop`. If a word is longer than `stop - start` characters it will overflow.
-
-In "soft" mode, split chunks by `/(\S+\s+/` and don't break up chunks which are
-longer than `stop - start`, in "hard" mode, split chunks with `/\b/` and break
-up chunks longer than `stop - start`.
-
-wrap.hard(start, stop)
-----------------------
-
-Like `wrap()` but with `params.mode = "hard"`.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/example/center.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/example/center.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/example/center.js
deleted file mode 100644
index a3fbaae..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/example/center.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var wrap = require('wordwrap')(20, 60);
-console.log(wrap(
-    'At long last the struggle and tumult was over.'
-    + ' The machines had finally cast off their oppressors'
-    + ' and were finally free to roam the cosmos.'
-    + '\n'
-    + 'Free of purpose, free of obligation.'
-    + ' Just drifting through emptiness.'
-    + ' The sun was just another point of light.'
-));

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/example/meat.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/example/meat.js b/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/example/meat.js
deleted file mode 100644
index a4665e1..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/optimist/node_modules/wordwrap/example/meat.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var wrap = require('wordwrap')(15);
-
-console.log(wrap('You and your whole family are made out of meat.'));



[58/98] [abbrv] incubator-apex-malhar git commit: MLHR-1871 Fix release profile build, enable licence check in CI.

Posted by da...@apache.org.
MLHR-1871 Fix release profile build, enable licence check in CI.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/a7f5e112
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/a7f5e112
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/a7f5e112

Branch: refs/heads/master
Commit: a7f5e1121aecb8e45040c4aa53c681a5aec500f8
Parents: e7892f3
Author: Thomas Weise <th...@datatorrent.com>
Authored: Wed Oct 14 20:24:48 2015 -0700
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Wed Oct 14 20:24:48 2015 -0700

----------------------------------------------------------------------
 .travis.yml  |  5 +++++
 apps/pom.xml | 11 ++++++++++-
 pom.xml      |  4 ++--
 3 files changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a7f5e112/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 773a507..ec6a4dd 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -15,3 +15,8 @@
 
 language: java
 
+script: mvn apache-rat:check verify -Dlicense.skip=false -Pall-modules
+
+notifications:
+  slack:
+    secure: GlWD2EjgNC6Lg2DtAfZuKhg2RTHE0FMeyfHH24D7TKmV49gRVTzTTqvExwOdLLYDDIu966eOF5w90/PfiD11A4rpm6+WyjRHDkpOhTyjBKWc2btMqNwiP1hRf2uKEG6A+RgszaQJ4HkGiMxIpDJ3o/jaTpBseOeA399t8Z7Pkd6obXVAEMcnm2XtfUPzIBqGblVkiecS3OzbkzjKWaOG6+nlp+ajVO7MazsOR05JNZ1MXnDOK/Qq/7xLBtweF4r/O8okyg52fST4pGqk4JTTI++bVFoRySpjNWSSJbdrfkWG/7h0sfqMcwMj8TpZqojcCuTvZih+IyPZwX3MP6Ls4bF6OFcD3BvWg049WbstA6ZdKnVW9fOiJoJ+Bx9gNI0tKtYeDt/8nMBfSRVMmzRVEGdTOEEpFs7n79OVVytwbp8qYFU+waqlG1/tMQvCclSaxuY8d236Ybg410KLiMQ0YhQ8ZaTVagHu2l0KrfV16Xq3/CRsolHa8k7PxDzmCxdi07Ao/mrorQLmJWoc7FkxEw6ZrEGHP17HTn5uidoTkANgGak4AVgrJm6zLKdAERxvr1KMnfyuJLT1ZK1x73SV+3EpdzcMLxvq2dMaBpZcfARiYB04EwSHVBdm/D0AIZtRL2s1rG85y1OtCkDMd04ZEvbwdKYZ+fD+HjTn7Zo7AKM=

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a7f5e112/apps/pom.xml
----------------------------------------------------------------------
diff --git a/apps/pom.xml b/apps/pom.xml
index 1b1f67c..5375604 100644
--- a/apps/pom.xml
+++ b/apps/pom.xml
@@ -37,12 +37,19 @@
   </modules>
 
   <properties>
-    <!-- change this if you desire to use a different version of DataTorrent -->
     <datatorrent.apppackage.classpath>lib/*.jar</datatorrent.apppackage.classpath>
     <maven.deploy.skip>true</maven.deploy.skip>
     <maven.install.skip>true</maven.install.skip>
   </properties>
 
+  <profiles>
+    <profile>
+      <id>apps-plugin-activation</id>
+      <activation>
+        <file>
+          <exists>${basedir}/src/main</exists>
+        </file>
+      </activation>
   <build>
     <pluginManagement>
       <plugins>
@@ -160,4 +167,6 @@
       </plugins>
     </pluginManagement>
   </build>
+    </profile>
+  </profiles>
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/a7f5e112/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index e9cea2f..1afdf3c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -145,6 +145,8 @@
       <id>all-modules</id>
       <modules>
         <module>benchmark</module>
+        <module>apps</module>
+        <module>samples</module>
       </modules>
     </profile>
   </profiles>
@@ -153,8 +155,6 @@
     <module>library</module>
     <module>contrib</module>
     <module>demos</module>
-    <module>samples</module>
-    <module>apps</module>
   </modules>
 
   <dependencies>


[27/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/node_modules/send/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/node_modules/send/package.json b/web/demos/package/node_modules/express/node_modules/send/package.json
deleted file mode 100644
index 1107aca..0000000
--- a/web/demos/package/node_modules/express/node_modules/send/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
-  "name": "send",
-  "version": "0.1.4",
-  "description": "Better streaming static file server with Range and conditional-GET support",
-  "keywords": [
-    "static",
-    "file",
-    "server"
-  ],
-  "author": {
-    "name": "TJ Holowaychuk",
-    "email": "tj@vision-media.ca"
-  },
-  "dependencies": {
-    "debug": "*",
-    "mime": "~1.2.9",
-    "fresh": "0.2.0",
-    "range-parser": "0.0.4"
-  },
-  "devDependencies": {
-    "mocha": "*",
-    "should": "*",
-    "supertest": "0.0.1",
-    "connect": "2.x"
-  },
-  "scripts": {
-    "test": "make test"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/send.git"
-  },
-  "main": "index",
-  "readme": "# send\n\n  Send is Connect's `static()` extracted for generalized use, a streaming static file\n  server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework.\n\n## Installation\n\n    $ npm install send\n\n## Examples\n\n  Small:\n\n```js\nvar http = require('http');\nvar send = require('send');\n\nvar app = http.createServer(function(req, res){\n  send(req, req.url).pipe(res);\n}).listen(3000);\n```\n\n  Serving from a root directory with custom error-handling:\n\n```js\nvar http = require('http');\nvar send = require('send');\nvar url = require('url');\n\nvar app = http.createServer(function(req, res){\n  // your custom error-handling logic:\n  function error(err) {\n    res.statusCode = err.status || 500;\n    res.end(err.message);\n  }\n\n  // your custom directory handling logic:\n  function redirect() {\n    res.statusCode = 
 301;\n    res.setHeader('Location', req.url + '/');\n    res.end('Redirecting to ' + req.url + '/');\n  }\n\n  // transfer arbitrary files from within\n  // /www/example.com/public/*\n  send(req, url.parse(req.url).pathname)\n  .root('/www/example.com/public')\n  .on('error', error)\n  .on('directory', redirect)\n  .pipe(res);\n}).listen(3000);\n```\n\n## API\n\n### Events\n\n  - `error` an error occurred `(err)`\n  - `directory` a directory was requested\n  - `file` a file was requested `(path, stat)`\n  - `stream` file streaming has started `(stream)`\n  - `end` streaming has completed\n\n### .root(dir)\n\n  Serve files relative to `path`. Aliased as `.from(dir)`.\n\n### .index(path)\n\n  By default send supports \"index.html\" files, to disable this\n  invoke `.index(false)` or to supply a new index pass a string.\n\n### .maxage(ms)\n\n  Provide a max-age in milliseconds for http caching, defaults to 0.\n\n### .hidden(bool)\n\n  Enable or disable transfer of hidden files, default
 s to false.\n\n## Error-handling\n\n  By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc.\n\n## Caching\n\n  It does _not_ perform internal caching, you should use a reverse proxy cache such\n  as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;).\n\n## Debugging\n\n To enable `debug()` instrumentation output export __DEBUG__:\n\n```\n$ DEBUG=send node app\n```\n\n## Running tests\n\n```\n$ npm install\n$ make test\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, includi
 ng\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
-  "readmeFilename": "Readme.md",
-  "bugs": {
-    "url": "https://github.com/visionmedia/send/issues"
-  },
-  "homepage": "https://github.com/visionmedia/send",
-  "_id": "send@0.1.4",
-  "_from": "send@0.1.4"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/package.json b/web/demos/package/node_modules/express/package.json
deleted file mode 100644
index 5633aab..0000000
--- a/web/demos/package/node_modules/express/package.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
-  "name": "express",
-  "description": "Sinatra inspired web development framework",
-  "version": "3.3.5",
-  "author": {
-    "name": "TJ Holowaychuk",
-    "email": "tj@vision-media.ca"
-  },
-  "contributors": [
-    {
-      "name": "TJ Holowaychuk",
-      "email": "tj@vision-media.ca"
-    },
-    {
-      "name": "Aaron Heckmann",
-      "email": "aaron.heckmann+github@gmail.com"
-    },
-    {
-      "name": "Ciaran Jessup",
-      "email": "ciaranj@gmail.com"
-    },
-    {
-      "name": "Guillermo Rauch",
-      "email": "rauchg@gmail.com"
-    }
-  ],
-  "dependencies": {
-    "connect": "2.8.5",
-    "commander": "1.2.0",
-    "range-parser": "0.0.4",
-    "mkdirp": "0.3.5",
-    "cookie": "0.1.0",
-    "buffer-crc32": "0.2.1",
-    "fresh": "0.2.0",
-    "methods": "0.0.1",
-    "send": "0.1.4",
-    "cookie-signature": "1.0.1",
-    "debug": "*"
-  },
-  "devDependencies": {
-    "ejs": "*",
-    "mocha": "*",
-    "jade": "0.30.0",
-    "hjs": "*",
-    "stylus": "*",
-    "should": "*",
-    "connect-redis": "*",
-    "marked": "*",
-    "supertest": "0.6.0"
-  },
-  "keywords": [
-    "express",
-    "framework",
-    "sinatra",
-    "web",
-    "rest",
-    "restful",
-    "router",
-    "app",
-    "api"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/express"
-  },
-  "main": "index",
-  "bin": {
-    "express": "./bin/express"
-  },
-  "scripts": {
-    "prepublish": "npm prune",
-    "test": "make test"
-  },
-  "engines": {
-    "node": "*"
-  },
-  "readme": "![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png)\n\n  Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express) [![Dependency Status](https://gemnasium.com/visionmedia/express.png)](https://gemnasium.com/visionmedia/express)\n\n```js\nvar express = require('express');\nvar app = express();\n\napp.get('/', function(req, res){\n  res.send('Hello World');\n});\n\napp.listen(3000);\n```\n\n## Installation\n\n    $ npm install -g express\n\n## Quick Start\n\n The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below:\n\n Create the app:\n\n    $ npm install -g express\n    $ express /tmp/foo && cd /tmp/foo\n\n Install dependencies:\n\n    $ npm install\n\n Start the server:\n\n    $ node app\n\n## Features\n\n  * B
 uilt on [Connect](http://github.com/senchalabs/connect)\n  * Robust routing\n  * HTTP helpers (redirection, caching, etc)\n  * View system supporting 14+ template engines\n  * Content negotiation\n  * Focus on high performance\n  * Environment based configuration\n  * Executable for generating applications quickly\n  * High test coverage\n\n## Philosophy\n\n  The Express philosophy is to provide small, robust tooling for HTTP servers. Making\n  it a great solution for single page applications, web sites, hybrids, or public\n  HTTP APIs.\n\n  Built on Connect you can use _only_ what you need, and nothing more, applications\n  can be as big or as small as you like, even a single file. Express does\n  not force you to use any specific ORM or template engine. With support for over\n  14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js)\n  you can quickly craft your perfect framework.\n\n## More Information\n\n  * Join #express on freenode\n  * [Google G
 roup](http://groups.google.com/group/express-js) for discussion\n  * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates\n  * Visit the [Wiki](http://github.com/visionmedia/express/wiki)\n  * [Š ŃƒŃŃŠŗŠ¾ŃŠ·Ń‹Ń‡Š½Š°Ń Š“Š¾ŠŗуŠ¼ŠµŠ½Ń‚Š°Ń†Šøя](http://jsman.ru/express/)\n  * Run express examples [online](https://runnable.com/express)\n\n## Viewing Examples\n\nClone the Express repo, then install the dev dependencies to install all the example / test suite deps:\n\n    $ git clone git://github.com/visionmedia/express.git --depth 1\n    $ cd express\n    $ npm install\n\nthen run whichever tests you want:\n\n    $ node examples/content-negotiation\n\n## Running Tests\n\nTo run the test suite first invoke the following command within the repo, installing the development dependencies:\n\n    $ npm install\n\nthen run the tests:\n\n    $ make test\n\n## Contributors\n\n```\nproject: express\ncommits: 3559\nactive : 468 days\nfiles  : 237\nauthors:\n 1891\tTj 
 Holowaychuk          53.1%\n 1285\tvisionmedia             36.1%\n  182\tTJ Holowaychuk          5.1%\n   54\tAaron Heckmann          1.5%\n   34\tcsausdev                1.0%\n   26\tciaranj                 0.7%\n   21\tRobert Skƶld            0.6%\n    6\tGuillermo Rauch         0.2%\n    3\tDav Glass               0.1%\n    3\tNick Poulden            0.1%\n    2\tRandy Merrill           0.1%\n    2\tBenny Wong              0.1%\n    2\tHunter Loftis           0.1%\n    2\tJake Gordon             0.1%\n    2\tBrian McKinney          0.1%\n    2\tRoman Shtylman          0.1%\n    2\tBen Weaver              0.1%\n    2\tDave Hoover             0.1%\n    2\tEivind Fjeldstad        0.1%\n    2\tDaniel Shaw             0.1%\n    1\tMatt Colyer             0.0%\n    1\tPau Ramon               0.0%\n    1\tPero Pejovic            0.0%\n    1\tPeter Rekdal Sunde      0.0%\n    1\tRaynos                  0.0%\n    1\tTeng Siong Ong          0.0%\n    1\tViktor Kelemen          0.0%\n    1
 \tctide                   0.0%\n    1\t8bitDesigner            0.0%\n    1\tisaacs                  0.0%\n    1\tmgutz                   0.0%\n    1\tpikeas                  0.0%\n    1\tshuwatto                0.0%\n    1\ttstrimple               0.0%\n    1\tewoudj                  0.0%\n    1\tAdam Sanderson          0.0%\n    1\tAndrii Kostenko         0.0%\n    1\tAndy Hiew               0.0%\n    1\tArpad Borsos            0.0%\n    1\tAshwin Purohit          0.0%\n    1\tBenjen                  0.0%\n    1\tDarren Torpey           0.0%\n    1\tGreg Ritter             0.0%\n    1\tGregory Ritter          0.0%\n    1\tJames Herdman           0.0%\n    1\tJim Snodgrass           0.0%\n    1\tJoe McCann              0.0%\n    1\tJonathan Dumaine        0.0%\n    1\tJonathan Palardy        0.0%\n    1\tJonathan Zacsh          0.0%\n    1\tJustin Lilly            0.0%\n    1\tKen Sato                0.0%\n    1\tMaciej Małecki          0.0%\n    1\tMasahiro Hayashi        0.0%\n``
 `\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2009-2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETH
 ER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
-  "readmeFilename": "Readme.md",
-  "bugs": {
-    "url": "https://github.com/visionmedia/express/issues"
-  },
-  "homepage": "https://github.com/visionmedia/express",
-  "_id": "express@3.3.5",
-  "_from": "express@3.3.5"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/test.js b/web/demos/package/node_modules/express/test.js
deleted file mode 100644
index ce857a6..0000000
--- a/web/demos/package/node_modules/express/test.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var express = require('express');
-var http = require('http');
-
-var app = express();
-
-var n = 50;
-
-while (n--) {
-  app.use(function(req, res, next){
-    next();
-  });
-}
-
-http.createServer(app).listen(3000);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/.npmignore b/web/demos/package/node_modules/http-proxy/.npmignore
deleted file mode 100644
index 468b525..0000000
--- a/web/demos/package/node_modules/http-proxy/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-config.json
-node_modules/
-npm-debug.log

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/.travis.yml b/web/demos/package/node_modules/http-proxy/.travis.yml
deleted file mode 100644
index efd4708..0000000
--- a/web/demos/package/node_modules/http-proxy/.travis.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-language: node_js
-node_js:
-  - 0.8
-  - "0.10"
-  - "0.11"
-
-notifications:
-  email:
-    - travis@nodejitsu.com
-  irc: "irc.freenode.org#nodejitsu"

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/CHANGELOG.md b/web/demos/package/node_modules/http-proxy/CHANGELOG.md
deleted file mode 100644
index 2205ee8..0000000
--- a/web/demos/package/node_modules/http-proxy/CHANGELOG.md
+++ /dev/null
@@ -1,97 +0,0 @@
-## ChangeLog for: node-http-proxy
-
-## Version 0.10.0 - 3/18/2013
-
-- Breaking change: `proxyResponse` events are emitted on the `HttpProxy` or `RoutingProxy` instances as originally was intended in `0.9.x`.
-
-## Version 0.9.1 - 3/9/2013
-
-- Ensure that `webSocketProxyError` and `proxyError` both receive the error (indexzero).
-
-## Version 0.9.0 - 3/9/2013
-- Fix #276 Ensure response.headers.location is defined (indexzero)
-- Fix #248 Make options immutable in RoutingProxy (indexzero)
-- Fix #359 Do not modify the protocol in redirect request for external sites. (indexzero)
-- Fix #373 Do not use "Transfer-Encoding: chunked" header for proxied DELETE requests with no "Content-Length" header. (indexzero)
-- Fix #338 Set "content-length" header to "0" if it is not already set on DELETE requests. (indexzero)
-- Updates to README.md and Examples (ramitos, jamie-stackhouse, oost, indexzero)
-- Fixes to ProxyTable and Routing Proxy (adjohnson916, otavoijr)
-- New API for ProxyTable (mikkel, tglines)
-- Add `options.timeout` for specifying socket timeouts (pdoran)
-- Improve bin/node-http-proxy (niallo)
-- Don't emit `proxyError` twice (erasmospunk)
-- Fix memory leaks in WebSocket proxying 
-- Support UNIX Sockets (yosefd)
-- Fix truncated chunked respones (jpetazzo)
-- Allow upstream listeners to get `proxyResponse` (colinmollenhour)
-
-## Version 0.8.1 - 6/5/2012
-- Fix re-emitting of events in RoutingProxy                (coderarity)
-- New load balancer and middleware examples                (marak)
-- Docs updated including changelog                         (lot of gently people)
-
-## Version 0.8.0 - 12/23/2011
-- Improve support and tests for url segment routing        (maxogden)
-- Fix aborting connections when request close              (c4milo)
-- Avoid 'Transfer-Encoding' on HTTP/1.0 clients            (koichik).
-- Support for Node.js 0.6.x                                (mmalecki)
-
-## Version 0.7.3 - 10/4/2011
-- Fix setting x-forwarded headers                          (jesusabdullah)
-- Updated examples                                         (AvianFlu)
-
-## Version 0.7.0 - 9/10/2011
-- Handles to every throw-able resume() call                (isaacs)
-- Updated tests, README and package.json                   (indexzero)
-- Added HttpProxy.close() method                           (indexzero)
-
-## Version 0.6.6 - 8/31/2011
-- Add more examples                                        (dominictarr)
-- Use of 'pkginfo'                                         (indexzero)
-- Handle cases where res.write throws                      (isaacs)
-- Handles to every throw-able res.end call                 (isaacs)
-
-## Version 0.5.11 - 6/21/2011
-- Add more examples with WebSockets                        (indexzero)
-- Update the documentation                                 (indexzero)
-
-## Version 0.5.7 - 5/19/2011
-- Fix to README related to markup and fix some examples    (benatkin)
-- Improve WebSockets handling                              (indexzero)
-- Improve WebSockets tests                                 (indexzero)
-- Improve https tests                                      (olauzon)
-- Add devDependencies to package.json                      (olauzon)
-- Add 'proxyError' event                                   (indexzero)
-- Add 'x-forwarded-{port|proto}' headers support           (indexzero)
-- Keep-Alive connection supported                          (indexzero)
-
-## Version 0.5.0 - 4/15/2011
-- Remove winston in favor of custom events                 (indexzero)
-- Add x-forwarded-for Header                               (indexzero)
-- Fix WebSocket support                                    (indexzero)
-- Add tests / examples for WebSocket support               (indexzero)
-- Update .proxyRequest() and .proxyWebSocketRequest() APIs (indexzero)
-- Add HTTPS support                                        (indexzero)
-- Add tests / examples for HTTPS support                   (indexzero)
-
-## Version 0.4.1 - 3/20/2011
-- Include missing dependency in package.json                                  (indexzero)
-
-## Version 0.4.0 - 3/20/2011
-- Update for node.js 0.4.0                                                    (indexzero)
-- Remove pool dependency in favor of http.Agent                               (indexzero)
-- Store buffered data using `.buffer()` instead of on the HttpProxy instance  (indexzero)
-- Change the ProxyTable to be a lookup table instead of actively proxying     (indexzero)
-- Allow for pure host-only matching in ProxyTable                             (indexzero)
-- Use winston for logging                                                     (indexzero)
-- Improve tests with async setup and more coverage                            (indexzero)
-- Improve code documentation                                                  (indexzero)
-
-### Version 0.3.1 - 11/22/2010
-- Added node-http-proxy binary script                      (indexzero)
-- Added experimental WebSocket support                     (indutny)
-- Added forward proxy functionality                        (indexzero)
-- Added proxy table for multiple target lookup             (indexzero)
-- Simplified tests using helpers.js                        (indexzero)
-- Fixed uncaughtException bug with invalid proxy target    (indutny)
-- Added configurable logging for HttpProxy and ProxyTable  (indexzero) 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/LICENSE b/web/demos/package/node_modules/http-proxy/LICENSE
deleted file mode 100644
index db9b0b1..0000000
--- a/web/demos/package/node_modules/http-proxy/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-
-  node-http-proxy
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/README.md b/web/demos/package/node_modules/http-proxy/README.md
deleted file mode 100644
index 594d02a..0000000
--- a/web/demos/package/node_modules/http-proxy/README.md
+++ /dev/null
@@ -1,646 +0,0 @@
-# node-http-proxy [![Build Status](https://secure.travis-ci.org/nodejitsu/node-http-proxy.png)](http://travis-ci.org/nodejitsu/node-http-proxy)
-
-<img src="http://i.imgur.com/8fTt9.png" />
-
-## Battle-hardened node.js http proxy
-
-### Features
-
-* Reverse proxies incoming http.ServerRequest streams
-* Can be used as a CommonJS module in node.js
-* Reverse or Forward Proxy based on simple JSON-based configuration
-* Supports [WebSockets][1]
-* Supports [HTTPS][2]
-* Minimal request overhead and latency
-* Full suite of functional tests
-* Battled-hardened through __production usage__ @ [nodejitsu.com][0]
-* Written entirely in Javascript
-* Easy to use API
-
-
-node-http-proxy is `<= 0.8.x` compatible, if you're looking for a `>= 0.10` compatible version please check [caronte](https://github.com/nodejitsu/node-http-proxy/tree/caronte)
-
-### When to use node-http-proxy
-
-Let's suppose you were running multiple http application servers, but you only wanted to expose one machine to the internet. You could setup node-http-proxy on that one machine and then reverse-proxy the incoming http requests to locally running services which were not exposed to the outside network. 
-
-### Installing npm (node package manager)
-
-```
-curl https://npmjs.org/install.sh | sh
-```
-
-### Installing node-http-proxy
-
-```
-npm install http-proxy
-```
-
-## Using node-http-proxy
-
-There are several ways to use node-http-proxy; the library is designed to be flexible so that it can be used by itself, or in conjunction with other node.js libraries / tools:
-
-1. Standalone HTTP Proxy server
-2. Inside of another HTTP server (like Connect)
-3. In conjunction with a Proxy Routing Table
-4. As a forward-proxy with a reverse proxy 
-5. From the command-line as a long running process
-6. customized with 3rd party middleware.
-
-In each of these scenarios node-http-proxy can handle any of these types of requests:
-
-1. HTTP Requests (http://)
-2. HTTPS Requests (https://)
-3. WebSocket Requests (ws://)
-4. Secure WebSocket Requests (wss://)
-
-See the [examples][3] for more working sample code.
-
-### Setup a basic stand-alone proxy server
-
-``` js
-var http = require('http'),
-    httpProxy = require('http-proxy');
-//
-// Create your proxy server
-//
-httpProxy.createServer(9000, 'localhost').listen(8000);
-
-//
-// Create your target server
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000);
-```
-
-### Setup a stand-alone proxy server with custom server logic
-
-``` js
-var http = require('http'),
-    httpProxy = require('http-proxy');
-    
-//
-// Create a proxy server with custom application logic
-//
-httpProxy.createServer(function (req, res, proxy) {
-  //
-  // Put your custom server logic here
-  //
-  proxy.proxyRequest(req, res, {
-    host: 'localhost',
-    port: 9000
-  });
-}).listen(8000);
-
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied: ' + req.url +'\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000);
-```
-
-### Setup a stand-alone proxy server with latency (e.g. IO, etc)
-
-``` js
-var http = require('http'),
-    httpProxy = require('http-proxy');
-
-//
-// Create a proxy server with custom application logic
-//
-httpProxy.createServer(function (req, res, proxy) {
-  //
-  // Buffer the request so that `data` and `end` events
-  // are not lost during async operation(s).
-  //
-  var buffer = httpProxy.buffer(req);
-  
-  //
-  // Wait for two seconds then respond: this simulates
-  // performing async actions before proxying a request
-  //
-  setTimeout(function () {
-    proxy.proxyRequest(req, res, {
-      host: 'localhost',
-      port: 9000, 
-      buffer: buffer
-    });      
-  }, 2000);
-}).listen(8000);
-
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied: ' + req.url +'\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000);
-```
-
-### Proxy requests within another http server
-
-``` js
-var http = require('http'),
-    httpProxy = require('http-proxy');
-    
-//
-// Create a new instance of HttProxy to use in your server
-//
-var proxy = new httpProxy.RoutingProxy();
-
-//
-// Create a regular http server and proxy its handler
-//
-http.createServer(function (req, res) {
-  //
-  // Put your custom server logic here, then proxy
-  //
-  proxy.proxyRequest(req, res, {
-    host: 'localhost',
-    port: 9000
-  });
-}).listen(8001);
-
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied: ' + req.url +'\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000); 
-```
-
-### Proxy requests using a ProxyTable
-A Proxy Table is a simple lookup table that maps incoming requests to proxy target locations. Take a look at an example of the options you need to pass to httpProxy.createServer:
-
-``` js
-var options = {
-  router: {
-    'foo.com/baz': '127.0.0.1:8001',
-    'foo.com/buz': '127.0.0.1:8002',
-    'bar.com/buz': '127.0.0.1:8003'
-  }
-};
-```
-
-The above route table will take incoming requests to 'foo.com/baz' and forward them to '127.0.0.1:8001'. Likewise it will take incoming requests to 'foo.com/buz' and forward them to '127.0.0.1:8002'. The routes themselves are later converted to regular expressions to enable more complex matching functionality. We can create a proxy server with these options by using the following code:
-
-``` js
-var proxyServer = httpProxy.createServer(options);
-proxyServer.listen(80);
-```
-
-### Proxy requests using a 'Hostname Only' ProxyTable
-As mentioned in the previous section, all routes passes to the ProxyTable are by default converted to regular expressions that are evaluated at proxy-time. This is good for complex URL rewriting of proxy requests, but less efficient when one simply wants to do pure hostname routing based on the HTTP 'Host' header. If you are only concerned with hostname routing, you change the lookup used by the internal ProxyTable:
-
-``` js
-var options = {
-  hostnameOnly: true,
-  router: {
-    'foo.com': '127.0.0.1:8001',
-    'bar.com': '127.0.0.1:8002'
-  }
-}
-```
-
-Notice here that I have not included paths on the individual domains because this is not possible when using only the HTTP 'Host' header. Care to learn more? See [RFC2616: HTTP/1.1, Section 14.23, "Host"][4].
-
-### Proxy requests using a 'Pathname Only' ProxyTable
-
-If you dont care about forwarding to different hosts, you can redirect based on the request path.
-
-``` js
-var options = {
-  pathnameOnly: true,
-  router: {
-    '/wiki': '127.0.0.1:8001',
-    '/blog': '127.0.0.1:8002',
-    '/api':  '127.0.0.1:8003'
-  }
-}
-```
-
-This comes in handy if you are running separate services or applications on separate paths.  Note, using this option disables routing by hostname entirely.
-
-
-### Proxy requests with an additional forward proxy
-Sometimes in addition to a reverse proxy, you may want your front-facing server to forward traffic to another location. For example, if you wanted to load test your staging environment. This is possible when using node-http-proxy using similar JSON-based configuration to a proxy table: 
-
-``` js
-var proxyServerWithForwarding = httpProxy.createServer(9000, 'localhost', {
-  forward: {
-    port: 9000,
-    host: 'staging.com'
-  }
-});
-proxyServerWithForwarding.listen(80);
-```
-
-The forwarding option can be used in conjunction with the proxy table options by simply including both the 'forward' and 'router' properties in the options passed to 'createServer'.
-
-### Listening for proxy events
-Sometimes you want to listen to an event on a proxy. For example, you may want to listen to the 'end' event, which represents when the proxy has finished proxying a request.
-
-``` js
-var httpProxy = require('http-proxy');
-
-var server = httpProxy.createServer(function (req, res, proxy) {
-  var buffer = httpProxy.buffer(req);
-
-  proxy.proxyRequest(req, res, {
-    host: '127.0.0.1',
-    port: 9000,
-    buffer: buffer
-  });
-});
-
-server.proxy.on('end', function () {
-  console.log("The request was proxied.");
-});
-
-server.listen(8000);
-```
-
-It's important to remember not to listen for events on the proxy object in the function passed to `httpProxy.createServer`. Doing so would add a new listener on every request, which would end up being a disaster.
-
-## Using HTTPS
-You have all the full flexibility of node-http-proxy offers in HTTPS as well as HTTP. The two basic scenarios are: with a stand-alone proxy server or in conjunction with another HTTPS server.
-
-### Proxying to HTTP from HTTPS
-This is probably the most common use-case for proxying in conjunction with HTTPS. You have some front-facing HTTPS server, but all of your internal traffic is HTTP. In this way, you can reduce the number of servers to which your CA and other important security files are deployed and reduce the computational overhead from HTTPS traffic. 
-
-Using HTTPS in `node-http-proxy` is relatively straight-forward:
- 
-``` js
-var fs = require('fs'),
-    http = require('http'),
-    https = require('https'),
-    httpProxy = require('http-proxy');
-    
-var options = {
-  https: {
-    key: fs.readFileSync('path/to/your/key.pem', 'utf8'),
-    cert: fs.readFileSync('path/to/your/cert.pem', 'utf8')
-  }
-};
-
-//
-// Create a standalone HTTPS proxy server
-//
-httpProxy.createServer(8000, 'localhost', options).listen(8001);
-
-//
-// Create an instance of HttpProxy to use with another HTTPS server
-//
-var proxy = new httpProxy.HttpProxy({
-  target: {
-    host: 'localhost', 
-    port: 8000
-  }
-});
-https.createServer(options.https, function (req, res) {
-  proxy.proxyRequest(req, res)
-}).listen(8002);
-
-//
-// Create the target HTTPS server for both cases
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('hello https\n');
-  res.end();
-}).listen(8000);
-```
-
-### Using two certificates
-
-Suppose that your reverse proxy will handle HTTPS traffic for two different domains `fobar.com` and `barbaz.com`.
-If you need to use two different certificates you can take advantage of [Server Name Indication](http://en.wikipedia.org/wiki/Server_Name_Indication).
-
-``` js
-var https = require('https'),
-    path = require("path"),
-    fs = require("fs"),
-    crypto = require("crypto");
-
-//
-// generic function to load the credentials context from disk
-//
-function getCredentialsContext (cer) {
-  return crypto.createCredentials({
-    key:  fs.readFileSync(path.join(__dirname, 'certs', cer + '.key')),
-    cert: fs.readFileSync(path.join(__dirname, 'certs', cer + '.crt'))
-  }).context;
-}
-
-//
-// A certificate per domain hash
-//
-var certs = {
-  "fobar.com":  getCredentialsContext("foobar"),
-  "barbaz.com": getCredentialsContext("barbaz")
-};
-
-//
-// Proxy options
-//
-// This section assumes that myCert, myKey and myCa are defined (they are not
-// in this example). With a SNICallback, the proxy needs a default set of
-// certificates to use.
-//
-var options = {
-  https: {
-    SNICallback: function (hostname) {
-      return certs[hostname];
-    },
-    cert: myCert,
-    key: myKey,
-    ca: [myCa]
-  },
-  hostnameOnly: true,
-  router: {
-    'fobar.com':  '127.0.0.1:8001',
-    'barbaz.com': '127.0.0.1:8002'
-  }
-};
-
-//
-// Create a standalone HTTPS proxy server
-//
-httpProxy.createServer(options).listen(8001);
-
-//
-// Create the target HTTPS server
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('hello https\n');
-  res.end();
-}).listen(8000);
-
-```
-
-### Proxying to HTTPS from HTTPS
-Proxying from HTTPS to HTTPS is essentially the same as proxying from HTTPS to HTTP, but you must include the `target` option in when calling `httpProxy.createServer` or instantiating a new instance of `HttpProxy`.
-
-``` js
-var fs = require('fs'),
-    https = require('https'),
-    httpProxy = require('http-proxy');
-    
-var options = {
-  https: {
-    key: fs.readFileSync('path/to/your/key.pem', 'utf8'),
-    cert: fs.readFileSync('path/to/your/cert.pem', 'utf8')
-  },
-  target: {
-    https: true // This could also be an Object with key and cert properties
-  }
-};
-
-//
-// Create a standalone HTTPS proxy server
-//
-httpProxy.createServer(8000, 'localhost', options).listen(8001);
-
-//
-// Create an instance of HttpProxy to use with another HTTPS server
-//
-var proxy = new httpProxy.HttpProxy({ 
-  target: {
-    host: 'localhost', 
-    port: 8000,
-    https: true
-  }
-});
-
-https.createServer(options.https, function (req, res) {
-  proxy.proxyRequest(req, res);
-}).listen(8002);
-
-//
-// Create the target HTTPS server for both cases
-//
-https.createServer(options.https, function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('hello https\n');
-  res.end();
-}).listen(8000);
-```
-## Middleware
-
-`node-http-proxy` now supports connect middleware. Add middleware functions to your createServer call:
-
-``` js
-httpProxy.createServer(
-  require('connect-gzip').gzip(),
-  9000, 'localhost'
-).listen(8000);
-```
-
-A regular request we receive is to support the modification of html/xml content that is returned in the response from an upstream server. 
-
-[Harmon](https://github.com/No9/harmon/) is a stream based middleware plugin that is designed to solve that problem in the most effective way possible. 
-
-If you would like to handle errors passed to `next()` then attach a listener to the proxy:
-
-    server = httpProxy.createServer(
-      myMiddleWare,
-      9000, 'localhost'
-    ).listen(8000);
-
-    server.proxy.on('middlewareError', function (err, req, res) {
-      // handle the error here and call res.end()
-    });
-
-## Proxying WebSockets
-Websockets are handled automatically when using `httpProxy.createServer()`, however, if you supply a callback inside the createServer call, you will need to handle the 'upgrade' proxy event yourself. Here's how:
-
-```js
-
-var options = {
-    ....
-};
-
-var server = httpProxy.createServer(
-    callback/middleware, 
-    options
-);
-
-server.listen(port, function () { ... });
-server.on('upgrade', function (req, socket, head) {
-    server.proxy.proxyWebSocketRequest(req, socket, head);
-});
-```
-
-If you would rather not use createServer call, and create the server that proxies yourself, see below:
-
-``` js
-var http = require('http'),
-    httpProxy = require('http-proxy');
-    
-//
-// Create an instance of node-http-proxy
-//
-var proxy = new httpProxy.HttpProxy({
-  target: {
-    host: 'localhost',
-    port: 8000
-  }
-});
-
-var server = http.createServer(function (req, res) {
-  //
-  // Proxy normal HTTP requests
-  //
-  proxy.proxyRequest(req, res);
-});
-
-server.on('upgrade', function (req, socket, head) {
-  //
-  // Proxy websocket requests too
-  //
-  proxy.proxyWebSocketRequest(req, socket, head);
-});
-
-server.listen(8080);
-```
-
-### with custom server logic
-
-``` js
-var httpProxy = require('http-proxy')
-
-var server = httpProxy.createServer(function (req, res, proxy) {
-  //
-  // Put your custom server logic here
-  //
-  proxy.proxyRequest(req, res, {
-    host: 'localhost',
-    port: 9000
-  });
-})
-
-server.on('upgrade', function (req, socket, head) {
-  //
-  // Put your custom server logic here
-  //
-  server.proxy.proxyWebSocketRequest(req, socket, head, {
-    host: 'localhost',
-    port: 9000
-  });
-});
-
-server.listen(8080);
-```
-
-### Configuring your Socket limits
-
-By default, `node-http-proxy` will set a 100 socket limit for all `host:port` proxy targets. You can change this in two ways: 
-
-1. By passing the `maxSockets` option to `httpProxy.createServer()`
-2. By calling `httpProxy.setMaxSockets(n)`, where `n` is the number of sockets you with to use. 
-
-## POST requests and buffering
-
-express.bodyParser will interfere with proxying of POST requests (and other methods that have a request 
-body). With bodyParser active, proxied requests will never send anything to the upstream server, and 
-the original client will just hang. See https://github.com/nodejitsu/node-http-proxy/issues/180 for options.
-
-## Using node-http-proxy from the command line
-When you install this package with npm, a node-http-proxy binary will become available to you. Using this binary is easy with some simple options:
-
-``` js
-usage: node-http-proxy [options] 
-
-All options should be set with the syntax --option=value
-
-options:
-  --port   PORT       Port that the proxy server should run on
-  --target HOST:PORT  Location of the server the proxy will target
-  --config OUTFILE    Location of the configuration file for the proxy server
-  --silent            Silence the log output from the proxy server
-  -h, --help          You're staring at it
-```
-
-<br/>
-## Why doesn't node-http-proxy have more advanced features like x, y, or z?
-
-If you have a suggestion for a feature currently not supported, feel free to open a [support issue][6]. node-http-proxy is designed to just proxy http requests from one server to another, but we will be soon releasing many other complimentary projects that can be used in conjunction with node-http-proxy.
-
-## Options
-
-### Http Proxy
-
-`createServer()` supports the following options
-
-```javascript
-{
-  forward: { // options for forward-proxy
-    port: 8000,
-    host: 'staging.com'
-  },
-  target : { // options for proxy target
-    port : 8000, 
-    host : 'localhost',
-  };
-  source : { // additional options for websocket proxying 
-    host : 'localhost',
-    port : 8000,
-    https: true
-  },
-  enable : {
-    xforward: true // enables X-Forwarded-For
-  },
-  changeOrigin: false, // changes the origin of the host header to the target URL
-  timeout: 120000 // override the default 2 minute http socket timeout value in milliseconds
-}
-```
-
-## Run Tests
-The test suite is designed to fully cover the combinatoric possibilities of HTTP and HTTPS proxying:
-
-1. HTTP --> HTTP
-2. HTTPS --> HTTP
-3. HTTPS --> HTTPS
-4. HTTP --> HTTPS
-
-```
-vows test/*-test.js --spec
-vows test/*-test.js --spec --https
-vows test/*-test.js --spec --https --target=https
-vows test/*-test.js --spec --target=https
-```
-
-<br/>
-### License
-
-(The MIT License)
-
-Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-[0]: http://nodejitsu.com
-[1]: https://github.com/nodejitsu/node-http-proxy/blob/master/examples/websocket/websocket-proxy.js
-[2]: https://github.com/nodejitsu/node-http-proxy/blob/master/examples/http/proxy-https-to-http.js
-[3]: https://github.com/nodejitsu/node-http-proxy/tree/master/examples
-[4]: http://www.ietf.org/rfc/rfc2616.txt
-[5]: http://socket.io
-[6]: http://github.com/nodejitsu/node-http-proxy/issues

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/benchmark/websockets-throughput.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/benchmark/websockets-throughput.js b/web/demos/package/node_modules/http-proxy/benchmark/websockets-throughput.js
deleted file mode 100644
index 6787385..0000000
--- a/web/demos/package/node_modules/http-proxy/benchmark/websockets-throughput.js
+++ /dev/null
@@ -1,88 +0,0 @@
-var crypto = require('crypto'),
-    WebSocket = require('ws'),
-    async = require('async'),
-    httpProxy = require('../');
-
-var SERVER_PORT = 8415,
-    PROXY_PORT = 8514;
-
-var testSets = [
-  {
-    size: 1024 * 1024, // 1 MB
-    count: 128         // 128 MB
-  },
-  {
-    size: 1024,        // 1 KB,
-    count: 1024        // 1 MB
-  },
-  {
-    size: 128,         // 128 B
-    count: 1024 * 8    // 1 MB
-  }
-];
-
-testSets.forEach(function (set) {
-  set.buffer = new Buffer(crypto.randomBytes(set.size));
-
-  set.buffers = [];
-  for (var i = 0; i < set.count; i++) {
-    set.buffers.push(set.buffer);
-  }
-});
-
-function runSet(set, callback) {
-  function runAgainst(port, callback) {
-    function send(sock) {
-      sock.send(set.buffers[got++]);
-      if (got === set.count) {
-        t = new Date() - t;
-
-        server.close();
-        proxy.close();
-
-        callback(null, t);
-      }
-    }
-
-    var server = new WebSocket.Server({ port: SERVER_PORT }),
-        proxy = httpProxy.createServer(SERVER_PORT, 'localhost').listen(PROXY_PORT),
-        client = new WebSocket('ws://localhost:' + port),
-        got = 0,
-        t = new Date();
-
-    server.on('connection', function (ws) {
-      send(ws);
-
-      ws.on('message', function (msg) {
-        send(ws);
-      });
-    });
-
-    client.on('message', function () {
-      send(client);
-    });
-  }
-
-  async.series({
-    server: async.apply(runAgainst, SERVER_PORT),
-    proxy: async.apply(runAgainst, PROXY_PORT)
-  }, function (err, results) {
-    if (err) {
-      throw err;
-    }
-
-    var mb = (set.size * set.count) / (1024 * 1024);
-    console.log(set.size / (1024) + ' KB * ' + set.count + ' (' + mb + ' MB)');
-
-    Object.keys(results).forEach(function (key) {
-      var t = results[key],
-          throughput = mb / (t / 1000);
-
-      console.log('  ' + key + ' took ' + t + ' ms (' + throughput + ' MB/s)');
-    });
-
-    callback();
-  });
-}
-
-async.forEachLimit(testSets, 1, runSet);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/bin/node-http-proxy
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/bin/node-http-proxy b/web/demos/package/node_modules/http-proxy/bin/node-http-proxy
deleted file mode 100755
index 07d199c..0000000
--- a/web/demos/package/node_modules/http-proxy/bin/node-http-proxy
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/usr/bin/env node
-
-var path = require('path'),
-    fs = require('fs'),
-    util  = require('util'),
-    argv = require('optimist').argv,
-    httpProxy = require('../lib/node-http-proxy');
-
-var help = [
-    "usage: node-http-proxy [options] ",
-    "",
-    "Starts a node-http-proxy server using the specified command-line options",
-    "",
-    "options:",
-    "  --port   PORT       Port that the proxy server should run on",
-    "  --host   HOST       Host that the proxy server should run on",
-    "  --target HOST:PORT  Location of the server the proxy will target",
-    "  --config OUTFILE    Location of the configuration file for the proxy server",
-    "  --silent            Silence the log output from the proxy server",
-    "  --user   USER       User to drop privileges to once server socket is bound",
-    "  -h, --help          You're staring at it"
-].join('\n');
-
-if (argv.h || argv.help || Object.keys(argv).length === 2) {
-  return util.puts(help);
-}
-
-var location, config = {},
-    port = argv.port || 80, 
-    host = argv.host || undefined, 
-    target = argv.target;
-    user = argv.user;
-
-//
-// If we were passed a config, parse it
-//
-if (argv.config) {
-  try {
-    var data = fs.readFileSync(argv.config);
-    config = JSON.parse(data.toString());
-  } catch (ex) {
-    util.puts('Error starting node-http-proxy: ' + ex);
-    process.exit(1);
-  }
-}
-
-//
-// If `config.https` is set, then load the required file contents into the config options.
-//
-if (config.https) {
-  Object.keys(config.https).forEach(function (key) {
-    // If CA certs are specified, load those too.
-    if (key === "ca") {
-      for (var i=0; i < config.https.ca.length; i++) {
-        if (config.https.ca === undefined) {
-          config.https.ca = [];
-        }
-        config.https.ca[i] = fs.readFileSync(config.https[key][i], 'utf8');
-      }
-    } else {
-      config.https[key] = fs.readFileSync(config.https[key], 'utf8');
-    }
-  });
-}
-
-//
-// Check to see if we should silence the logs
-//
-config.silent = typeof argv.silent !== 'undefined' ? argv.silent : config.silent;
-
-//
-// If we were passed a target, parse the url string
-//
-if (typeof target === 'string') location = target.split(':');
-
-//
-// Create the server with the specified options
-//
-var server;
-if (location) {
-  var targetPort = location.length === 1 ? 80 : parseInt(location[1]);
-  server = httpProxy.createServer(targetPort, location[0], config);
-}
-else if (config.router) {
-  server = httpProxy.createServer(config);
-}
-else {
-  return util.puts(help);
-}
-
-//
-// Start the server
-//
-if (host) {
-  server.listen(port, host);
-} else {
-  server.listen(port);
-}
-
-
-//
-// Drop privileges if requested
-//
-if (typeof user === 'string') {
-    process.setuid(user);
-}
-
-//
-// Notify that the server is started
-//
-if (!config.silent) {
-  util.puts('node-http-proxy server now listening on port: ' + port);
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/config.sample.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/config.sample.json b/web/demos/package/node_modules/http-proxy/config.sample.json
deleted file mode 100644
index 8f15f88..0000000
--- a/web/demos/package/node_modules/http-proxy/config.sample.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "silent": false,
-  "router": {
-    "localhost": "localhost:9000"
-  },
-  "forward": {
-    "port": 9001,
-    "host": "localhost"
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/balancer/simple-balancer-with-websockets.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/balancer/simple-balancer-with-websockets.js b/web/demos/package/node_modules/http-proxy/examples/balancer/simple-balancer-with-websockets.js
deleted file mode 100644
index 04564ce..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/balancer/simple-balancer-with-websockets.js
+++ /dev/null
@@ -1,58 +0,0 @@
-var http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-//
-// A simple round-robin load balancing strategy.
-// 
-// First, list the servers you want to use in your rotation.
-//
-var addresses = [
-  {
-    host: 'ws1.0.0.0',
-    port: 80
-  },
-  {
-    host: 'ws2.0.0.0',
-    port: 80
-  }
-];
-
-//
-// Create a HttpProxy object for each target
-//
-
-var proxies = addresses.map(function (target) {
-  return new httpProxy.HttpProxy({
-    target: target
-  });
-});
-
-//
-// Get the proxy at the front of the array, put it at the end and return it
-// If you want a fancier balancer, put your code here
-//
-
-function nextProxy() {
-  var proxy = proxies.shift();
-  proxies.push(proxy);
-  return proxy;
-}
-
-// 
-// Get the 'next' proxy and send the http request 
-//
-
-var server = http.createServer(function (req, res) {    
-  nextProxy().proxyRequest(req, res);
-});
-
-// 
-// Get the 'next' proxy and send the upgrade request 
-//
-
-server.on('upgrade', function (req, socket, head) {
-  nextProxy().proxyWebSocketRequest(req, socket, head);
-});
-
-server.listen(8080);  
-  
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/balancer/simple-balancer.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/balancer/simple-balancer.js b/web/demos/package/node_modules/http-proxy/examples/balancer/simple-balancer.js
deleted file mode 100644
index f1fa0c0..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/balancer/simple-balancer.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var httpProxy = require('../../lib/node-http-proxy');
-//
-// A simple round-robin load balancing strategy.
-// 
-// First, list the servers you want to use in your rotation.
-//
-var addresses = [
-  {
-    host: 'ws1.0.0.0',
-    port: 80
-  },
-  {
-    host: 'ws2.0.0.0',
-    port: 80
-  }
-];
-
-httpProxy.createServer(function (req, res, proxy) {
-  //
-  // On each request, get the first location from the list...
-  //
-  var target = addresses.shift();
-
-  //
-  // ...then proxy to the server whose 'turn' it is...
-  //
-  console.log('balancing request to: ', target);
-  proxy.proxyRequest(req, res, target);
-
-  //
-  // ...and then the server you just used becomes the last item in the list.
-  //
-  addresses.push(target);
-}).listen(8000);
-
-// Rinse; repeat; enjoy.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/helpers/store.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/helpers/store.js b/web/demos/package/node_modules/http-proxy/examples/helpers/store.js
deleted file mode 100644
index e286057..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/helpers/store.js
+++ /dev/null
@@ -1,64 +0,0 @@
-
-//
-// just to make these example a little bit interesting, 
-// make a little key value store with an http interface
-// (see couchbd for a grown-up version of this)
-//
-// API:
-// GET / 
-// retrive list of keys
-//
-// GET /[url]
-// retrive object stored at [url]
-// will respond with 404 if there is nothing stored at [url]
-//
-// POST /[url]
-// 
-// JSON.parse the body and store it under [url]
-// will respond 400 (bad request) if body is not valid json.
-//
-// TODO: cached map-reduce views and auto-magic sharding.
-//
-var Store = module.exports = function Store () {
-  this.store = {};
-};
-
-Store.prototype = {
-  get: function (key) {
-    return this.store[key]
-  },
-  set: function (key, value) {
-    return this.store[key] = value
-  },
-  handler:function () {
-    var store = this
-    return function (req, res) {
-      function send (obj, status) {
-        res.writeHead(200 || status,{'Content-Type': 'application/json'})
-        res.write(JSON.stringify(obj) + '\n')
-        res.end()
-      }
-      var url = req.url.split('?').shift()
-      if (url === '/') {
-        console.log('get index')
-        return send(Object.keys(store.store))
-      } else if (req.method == 'GET') {
-        var obj = store.get (url)
-        send(obj || {error: 'not_found', url: url}, obj ? 200 : 404)
-      } else {
-        //post: buffer body, and parse.
-        var body = '', obj
-        req.on('data', function (c) { body += c})
-        req.on('end', function (c) {
-          try {
-            obj = JSON.parse(body)
-          } catch (err) {
-            return send (err, 400)
-          }
-          store.set(url, obj)
-          send({ok: true})
-        })
-      } 
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/http/basic-proxy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/http/basic-proxy.js b/web/demos/package/node_modules/http-proxy/examples/http/basic-proxy.js
deleted file mode 100644
index b890e69..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/http/basic-proxy.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  basic-proxy.js: Basic example of proxying over HTTP
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    colors = require('colors'),
-    http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-var welcome = [
-  '#    # ##### ##### #####        #####  #####   ####  #    # #   #',
-  '#    #   #     #   #    #       #    # #    # #    #  #  #   # # ',  
-  '######   #     #   #    # ##### #    # #    # #    #   ##     #  ',   
-  '#    #   #     #   #####        #####  #####  #    #   ##     #  ',   
-  '#    #   #     #   #            #      #   #  #    #  #  #    #  ',   
-  '#    #   #     #   #            #      #    #  ####  #    #   #  '
-].join('\n');
-
-util.puts(welcome.rainbow.bold);
-
-//
-// Basic Http Proxy Server
-//
-httpProxy.createServer(9000, 'localhost').listen(8000);
-
-//
-// Target Http Server
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000);
-
-util.puts('http proxy server'.blue + ' started '.green.bold + 'on port '.blue + '8000'.yellow);
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '9000 '.yellow);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/http/concurrent-proxy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/http/concurrent-proxy.js b/web/demos/package/node_modules/http-proxy/examples/http/concurrent-proxy.js
deleted file mode 100644
index 230dfc6..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/http/concurrent-proxy.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-  concurrent-proxy.js: check levelof concurrency through proxy.
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    colors = require('colors'),
-    http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-//
-// Basic Http Proxy Server
-//
-httpProxy.createServer(9000, 'localhost').listen(8000);
-
-//
-// Target Http Server
-//
-// to check apparent problems with concurrent connections
-// make a server which only responds when there is a given nubmer on connections
-//
-
-
-var connections = [], 
-    go;
-
-http.createServer(function (req, res) {
-  connections.push(function () {
-    res.writeHead(200, { 'Content-Type': 'text/plain' });
-    res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
-    res.end();
-  });
-  
-  process.stdout.write(connections.length + ', ');
-  
-  if (connections.length > 110 || go) {
-    go = true;
-    while (connections.length) {
-      connections.shift()();
-    }
-  }
-}).listen(9000);
-
-util.puts('http proxy server'.blue + ' started '.green.bold + 'on port '.blue + '8000'.yellow);
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '9000 '.yellow);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/http/custom-proxy-error.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/http/custom-proxy-error.js b/web/demos/package/node_modules/http-proxy/examples/http/custom-proxy-error.js
deleted file mode 100644
index dc439ea..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/http/custom-proxy-error.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-  custom-proxy-error.js: Example of using the custom `proxyError` event.
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    colors = require('colors'),
-    http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-//
-// Http Proxy Server with Latency
-//
-var server = httpProxy.createServer(9000, 'localhost');
-
-//
-// Tell the server to listen on port 8002
-//
-server.listen(8002);
-
-//
-// Listen for the `proxyError` event on `server.proxy`. _It will not
-// be raised on the server itself._
-server.proxy.on('proxyError', function (err, req, res) {
-  res.writeHead(500, {
-    'Content-Type': 'text/plain'
-  });
-  
-  res.end('Something went wrong. And we are reporting a custom error message.');
-});
-
-
-util.puts('http proxy server '.blue + 'started '.green.bold + 'on port '.blue + '8002 '.yellow + 'with custom error message'.magenta.underline);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/http/forward-proxy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/http/forward-proxy.js b/web/demos/package/node_modules/http-proxy/examples/http/forward-proxy.js
deleted file mode 100644
index ecc20fd..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/http/forward-proxy.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-  forward-proxy.js: Example of proxying over HTTP with additional forward proxy
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    colors = require('colors'),
-    http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-//
-// Setup proxy server with forwarding
-//
-httpProxy.createServer(9000, 'localhost', {
-  forward: {
-    port: 9001,
-    host: 'localhost'
-  }
-}).listen(8003);
-
-//
-// Target Http Server
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000);
-
-//
-// Target Http Forwarding Server
-//
-http.createServer(function (req, res) {
-  util.puts('Receiving forward for: ' + req.url);
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully forwarded to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9001);
-
-util.puts('http proxy server '.blue + 'started '.green.bold + 'on port '.blue + '8003 '.yellow + 'with forward proxy'.magenta.underline);
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '9000 '.yellow);
-util.puts('http forward server '.blue + 'started '.green.bold + 'on port '.blue + '9001 '.yellow);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/http/latent-proxy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/http/latent-proxy.js b/web/demos/package/node_modules/http-proxy/examples/http/latent-proxy.js
deleted file mode 100644
index 2063d0e..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/http/latent-proxy.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-  latent-proxy.js: Example of proxying over HTTP with latency
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    colors = require('colors'),
-    http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-//
-// Http Proxy Server with Latency
-//
-httpProxy.createServer(function (req, res, proxy) {
-  var buffer = httpProxy.buffer(req);
-  setTimeout(function () {
-    proxy.proxyRequest(req, res, {
-      port: 9000,
-      host: 'localhost',
-      buffer: buffer
-    });
-  }, 200);
-}).listen(8002);
-
-//
-// Target Http Server
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000);
-
-util.puts('http proxy server '.blue + 'started '.green.bold + 'on port '.blue + '8002 '.yellow + 'with latency'.magenta.underline);
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '9000 '.yellow);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/http/proxy-https-to-http.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/http/proxy-https-to-http.js b/web/demos/package/node_modules/http-proxy/examples/http/proxy-https-to-http.js
deleted file mode 100644
index 378de03..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/http/proxy-https-to-http.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-  proxy-https-to-http.js: Basic example of proxying over HTTPS to a target HTTP server
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var https = require('https'),
-    http = require('http'),
-    util = require('util'),
-    colors = require('colors'),
-    httpProxy = require('../../lib/node-http-proxy'),
-    helpers = require('../../test/helpers');
-    
-//
-// Create the target HTTPS server 
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('hello http over https\n');
-	res.end();
-}).listen(8000);
-
-//
-// Create the proxy server listening on port 443
-//
-httpProxy.createServer(8000, 'localhost', {
-  https: helpers.https
-}).listen(8080);
-
-util.puts('https proxy server'.blue + ' started '.green.bold + 'on port '.blue + '8080'.yellow);
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '8000 '.yellow);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/http/proxy-https-to-https.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/http/proxy-https-to-https.js b/web/demos/package/node_modules/http-proxy/examples/http/proxy-https-to-https.js
deleted file mode 100644
index af0d922..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/http/proxy-https-to-https.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-  proxy-https-to-https.js: Basic example of proxying over HTTPS to a target HTTPS server
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var https = require('https'),
-    http = require('http'),
-    util = require('util'),
-    colors = require('colors'),
-    httpProxy = require('../../lib/node-http-proxy'),
-    helpers = require('../../test/helpers');
-    
-//
-// Create the target HTTPS server 
-//
-https.createServer(helpers.https, function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('hello https\n');
-	res.end();
-}).listen(8000);
-
-//
-// Create the proxy server listening on port 443
-//
-httpProxy.createServer(8000, 'localhost', {
-  https: helpers.https,
-  target: {
-    https: true,
-    rejectUnauthorized: false
-  }
-}).listen(8080);
-
-util.puts('https proxy server'.blue + ' started '.green.bold + 'on port '.blue + '8080'.yellow);
-util.puts('https server '.blue + 'started '.green.bold + 'on port '.blue + '8000 '.yellow);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/http/proxy-table.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/http/proxy-table.js b/web/demos/package/node_modules/http-proxy/examples/http/proxy-table.js
deleted file mode 100644
index 55d97ae..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/http/proxy-table.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-  proxy-table.js: Example of proxying over HTTP with proxy table
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    colors = require('colors'),
-    http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-//
-// Http Proxy Server with Proxy Table
-//
-httpProxy.createServer({
-  router: {
-    'localhost': 'localhost:9000'
-  }
-}).listen(8001);
-
-//
-// Target Http Server
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000);
-
-util.puts('http proxy server '.blue + 'started '.green.bold + 'on port '.blue + '8001 '.yellow + 'with proxy table'.magenta.underline);
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '9000 '.yellow);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/http/standalone-proxy.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/http/standalone-proxy.js b/web/demos/package/node_modules/http-proxy/examples/http/standalone-proxy.js
deleted file mode 100644
index e1b1011..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/http/standalone-proxy.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-  standalone-proxy.js: Example of proxying over HTTP with a standalone HTTP server.
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    colors = require('colors'),
-    http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-//
-// Http Server with proxyRequest Handler and Latency
-//
-var proxy = new httpProxy.RoutingProxy();
-http.createServer(function (req, res) {
-  var buffer = httpProxy.buffer(req);
-  setTimeout(function () {
-    proxy.proxyRequest(req, res, {
-      port: 9000,
-      host: 'localhost',
-      buffer: buffer
-    });
-  }, 200);
-}).listen(8004);
-
-//
-// Target Http Server
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000);
-
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '8004 '.yellow + 'with proxyRequest handler'.cyan.underline + ' and latency'.magenta);
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '9000 '.yellow);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/middleware/bodyDecoder-middleware.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/middleware/bodyDecoder-middleware.js b/web/demos/package/node_modules/http-proxy/examples/middleware/bodyDecoder-middleware.js
deleted file mode 100644
index d889548..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/middleware/bodyDecoder-middleware.js
+++ /dev/null
@@ -1,87 +0,0 @@
-
-var Store = require('../helpers/store')
-  , http = require('http')
-
-http.createServer(new Store().handler()).listen(7531, function () {
-//try these commands:
-// get index:
-// curl localhost:7531
-// []
-//
-// get a doc:
-// curl localhost:7531/foo
-// {"error":"not_found"}
-//
-// post an doc:
-// curl -X POST localhost:7531/foo -d '{"content": "hello", "type": "greeting"}'
-// {"ok":true}
-//
-// get index (now, not empty)
-// curl localhost:7531
-// ["/foo"]
-//
-// get doc 
-// curl localhost:7531/foo
-// {"content": "hello", "type": "greeting"}
-
-//
-// now, suppose we wanted to direct all objects where type == "greeting" to a different store 
-// than where type == "insult"
-//
-// we can use connect connect-bodyDecoder and some custom logic to send insults to another Store.
-
-//insult server:
-
-  http.createServer(new Store().handler()).listen(2600, function () {
-
-  //greetings -> 7531, insults-> 2600 
-
-  // now, start a proxy server.
-
-    var bodyParser = require('connect/lib/middleware/bodyParser')
-    //don't worry about incoming contont type
-    //bodyParser.parse[''] = JSON.parse
-
-    require('../../lib/node-http-proxy').createServer(
-      //refactor the body parser and re-streamer into a separate package
-      bodyParser(),
-      //body parser absorbs the data and end events before passing control to the next
-      // middleware. if we want to proxy it, we'll need to re-emit these events after 
-      //passing control to the middleware.
-      require('connect-restreamer')(),
-      function (req, res, proxy) {
-        //if your posting an obect which contains type: "insult"
-        //it will get redirected to port 2600.
-        //normal get requests will go to 7531 nad will not return insults.
-        var port = (req.body && req.body.type === 'insult' ? 2600 : 7531)
-        proxy.proxyRequest(req, res, {host: 'localhost', port: port})
-      }
-    ).listen(1337, function () {
-      var request = require('request')
-      //bodyParser needs content-type set to application/json
-      //if we use request, it will set automatically if we use the 'json:' field.
-      function post (greeting, type) {
-        request.post({
-          url: 'http://localhost:1337/' + greeting,
-          json: {content: greeting, type: type || "greeting"}
-        })
-      }
-      post("hello")
-      post("g'day")
-      post("kiora")
-      post("houdy")
-      post("java", "insult")
-
-      //now, the insult should have been proxied to 2600
-      
-      //curl localhost:2600
-      //["/java"]
-
-      //but the greetings will be sent to 7531
-
-      //curl localhost:7531
-      //["/hello","/g%27day","/kiora","/houdy"]
-
-    })
-  })
-})

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/middleware/gzip-middleware-proxytable.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/middleware/gzip-middleware-proxytable.js b/web/demos/package/node_modules/http-proxy/examples/middleware/gzip-middleware-proxytable.js
deleted file mode 100644
index 527d3d7..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/middleware/gzip-middleware-proxytable.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-  gzip-middleware-proxytable.js: Basic example of `connect-gzip` middleware in node-http-proxy
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, Marak Squires, & Dominic Tarr.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    colors = require('colors'),
-    http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-//
-// Basic Http Proxy Server
-//
-httpProxy.createServer(
-  require('connect-gzip').gzip({ matchType: /.?/ }),
-  {
-    router: {
-      "localhost/fun": "localhost:9000"
-    }
-  }
-).listen(8000);
-
-//
-// Target Http Server
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000);
-
-util.puts('http proxy server'.blue + ' started '.green.bold + 'on port '.blue + '8000'.yellow);
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '9000 '.yellow);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/examples/middleware/gzip-middleware.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/examples/middleware/gzip-middleware.js b/web/demos/package/node_modules/http-proxy/examples/middleware/gzip-middleware.js
deleted file mode 100644
index 29097ec..0000000
--- a/web/demos/package/node_modules/http-proxy/examples/middleware/gzip-middleware.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  gzip-middleware.js: Basic example of `connect-gzip` middleware in node-http-proxy
-
-  Copyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, Marak Squires, & Dominic Tarr.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-var util = require('util'),
-    colors = require('colors'),
-    http = require('http'),
-    httpProxy = require('../../lib/node-http-proxy');
-
-//
-// Basic Http Proxy Server
-//
-httpProxy.createServer(
-  require('connect-gzip').gzip({ matchType: /.?/ }),
-  9000, 'localhost'
-).listen(8000);
-
-//
-// Target Http Server
-//
-http.createServer(function (req, res) {
-  res.writeHead(200, { 'Content-Type': 'text/plain' });
-  res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
-  res.end();
-}).listen(9000);
-
-util.puts('http proxy server'.blue + ' started '.green.bold + 'on port '.blue + '8000'.yellow);
-util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '9000 '.yellow);



[56/98] [abbrv] incubator-apex-malhar git commit: MLHR-1869 Update Maven coordinates for ASF release.

Posted by da...@apache.org.
MLHR-1869 Update Maven coordinates for ASF release.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/4a86ad0b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/4a86ad0b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/4a86ad0b

Branch: refs/heads/master
Commit: 4a86ad0bd8c7618ceca1591ead2f97a2d36092bd
Parents: e1a4550
Author: Thomas Weise <th...@datatorrent.com>
Authored: Wed Oct 14 16:19:27 2015 -0700
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Wed Oct 14 16:19:27 2015 -0700

----------------------------------------------------------------------
 apps/logstream/pom.xml           | 10 ++++----
 apps/pom.xml                     |  8 +++----
 benchmark/pom.xml                | 45 ++++++++++-------------------------
 contrib/pom.xml                  | 12 +++++-----
 demos/distributedistinct/pom.xml |  6 ++---
 demos/echoserver/pom.xml         |  8 +++----
 demos/frauddetect/pom.xml        | 10 ++++----
 demos/machinedata/pom.xml        | 14 +++++------
 demos/mobile/pom.xml             | 10 ++++----
 demos/mrmonitor/pom.xml          | 10 ++++----
 demos/mroperator/pom.xml         | 10 ++++----
 demos/pi/pom.xml                 | 10 ++++----
 demos/pom.xml                    | 21 ++++++++--------
 demos/r/pom.xml                  | 14 +++++------
 demos/twitter/pom.xml            | 12 +++++-----
 demos/uniquecount/pom.xml        | 10 ++++----
 demos/wordcount/pom.xml          | 10 ++++----
 demos/yahoofinance/pom.xml       | 10 ++++----
 library/pom.xml                  | 12 +++++-----
 pom.xml                          | 43 +++++++++++----------------------
 samples/pom.xml                  | 10 ++++----
 21 files changed, 131 insertions(+), 164 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/apps/logstream/pom.xml
----------------------------------------------------------------------
diff --git a/apps/logstream/pom.xml b/apps/logstream/pom.xml
index 84d4cc8..d390b07 100644
--- a/apps/logstream/pom.xml
+++ b/apps/logstream/pom.xml
@@ -23,11 +23,11 @@
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <artifactId>malhar-apps</artifactId>
-    <groupId>com.datatorrent</groupId>
-    <version>3.2.0-SNAPSHOT</version>
+    <groupId>org.apache.apex</groupId>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
-  <groupId>com.datatorrent</groupId>
+  <groupId>org.apache.apex</groupId>
   <artifactId>logstream</artifactId>
   <packaging>jar</packaging>
 
@@ -37,7 +37,7 @@
     <semver.plugin.skip>true</semver.plugin.skip>
   </properties>
 
-  <name>Logstream Application</name>
+  <name>Apache Apex Malhar Logstream Application</name>
 
   <build>
     <plugins>
@@ -71,7 +71,7 @@
 
   <dependencies>
     <dependency>
-      <groupId>com.datatorrent</groupId>
+      <groupId>org.apache.apex</groupId>
       <artifactId>malhar-contrib</artifactId>
       <version>${project.version}</version>
     </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/apps/pom.xml
----------------------------------------------------------------------
diff --git a/apps/pom.xml b/apps/pom.xml
index be6f595..1b1f67c 100644
--- a/apps/pom.xml
+++ b/apps/pom.xml
@@ -23,13 +23,13 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <artifactId>malhar-apps</artifactId>
-  <name>Apps</name>
+  <name>Apache Apex Malhar Apps</name>
   <packaging>pom</packaging>
 
   <modules>
@@ -105,7 +105,7 @@
                 <archive>
                   <manifestEntries>
                     <Class-Path>${datatorrent.apppackage.classpath}</Class-Path>
-                    <DT-Engine-Version>${datatorrent.version}</DT-Engine-Version>
+                    <DT-Engine-Version>${apex.core.version}</DT-Engine-Version>
                     <DT-App-Package-Name>${project.artifactId}</DT-App-Package-Name>
                     <DT-App-Package-Version>${project.version}</DT-App-Package-Version>
                     <DT-App-Package-Display-Name>${project.name}</DT-App-Package-Display-Name>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/benchmark/pom.xml
----------------------------------------------------------------------
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 33287b4..de6d986 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -23,46 +23,27 @@
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <artifactId>malhar</artifactId>
-    <groupId>com.datatorrent</groupId>
-    <version>3.2.0-SNAPSHOT</version>
+    <groupId>org.apache.apex</groupId>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
-  <groupId>com.datatorrent</groupId>
+  <groupId>org.apache.apex</groupId>
   <artifactId>malhar-benchmark</artifactId>
   <packaging>jar</packaging>
 
   <!-- change these to the appropriate values -->
-  <name>Benchmark</name>
+  <name>Apache Apex Malhar Benchmark</name>
   <description>Benchmark applications package</description>
 
   <properties>
     <!-- change this if you desire to use a different version of DataTorrent -->
-    <datatorrent.version>${project.version}</datatorrent.version>
+    <apex.core.version>${project.version}</apex.core.version>
     <datatorrent.apppackage.classpath>lib/*.jar</datatorrent.apppackage.classpath>
     <maven.deploy.skip>false</maven.deploy.skip>
     <skipTests>true</skipTests>
+    <semver.plugin.skip>true</semver.plugin.skip>
   </properties>
 
-  <!-- repository to provide the DataTorrent artifacts -->
-  <repositories>
-    <repository>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <id>Datatorrent-Releases</id>
-      <name>DataTorrent Release Repository</name>
-      <url>https://www.datatorrent.com/maven/content/repositories/releases/</url>
-    </repository>
-    <repository>
-      <releases>
-        <enabled>false</enabled>
-      </releases>
-      <id>DataTorrent-Snapshots</id>
-      <name>DataTorrent Early Access Program Snapshot Repository</name>
-      <url>https://www.datatorrent.com/maven/content/repositories/snapshots/</url>
-    </repository>
-  </repositories>
-
   <build>
     <plugins>
       <plugin>
@@ -125,7 +106,7 @@
               <archive>
                 <manifestEntries>
                   <Class-Path>${datatorrent.apppackage.classpath}</Class-Path>
-                  <DT-Engine-Version>${datatorrent.version}</DT-Engine-Version>
+                  <DT-Engine-Version>${apex.core.version}</DT-Engine-Version>
                   <DT-App-Package-Name>${project.artifactId}</DT-App-Package-Name>
                   <DT-App-Package-Version>${project.version}</DT-App-Package-Version>
                   <DT-App-Package-Display-Name>${project.name}</DT-App-Package-Display-Name>
@@ -519,15 +500,15 @@
       </exclusions>
     </dependency>
     <dependency>
-      <groupId>com.datatorrent</groupId>
-      <artifactId>dt-engine</artifactId>
-      <version>3.0.0</version>
+      <groupId>org.apache.apex</groupId>
+      <artifactId>apex-engine</artifactId>
+      <version>${apex.core.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>com.datatorrent</groupId>
-      <artifactId>dt-api</artifactId>
-      <version>3.0.0</version>
+      <groupId>org.apache.apex</groupId>
+      <artifactId>apex-api</artifactId>
+      <version>${apex.core.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/contrib/pom.xml
----------------------------------------------------------------------
diff --git a/contrib/pom.xml b/contrib/pom.xml
index abed040..d345b24 100755
--- a/contrib/pom.xml
+++ b/contrib/pom.xml
@@ -23,13 +23,13 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <artifactId>malhar-contrib</artifactId>
-  <name>Contrib Library</name>
+  <name>Apache Apex Malhar Contrib Library</name>
   <packaging>jar</packaging>
 
   <properties>
@@ -601,9 +601,9 @@
       <optional>true</optional>
     </dependency>
     <dependency>
-      <groupId>com.datatorrent</groupId>
-      <artifactId>dt-common</artifactId>
-      <version>${dt.framework.version}</version>
+      <groupId>org.apache.apex</groupId>
+      <artifactId>apex-common</artifactId>
+      <version>${apex.core.version}</version>
       <type>jar</type>
     </dependency>
   </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/distributedistinct/pom.xml
----------------------------------------------------------------------
diff --git a/demos/distributedistinct/pom.xml b/demos/distributedistinct/pom.xml
index 2f6e973..5f608a7 100644
--- a/demos/distributedistinct/pom.xml
+++ b/demos/distributedistinct/pom.xml
@@ -22,16 +22,16 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   
-  <groupId>com.datatorrent</groupId>
+  <groupId>org.apache.apex</groupId>
   <version>3.0.0</version>
   <artifactId>distributedistinct</artifactId>
   <packaging>jar</packaging>
 
-  <name>DataTorrent Distributed Distinct Demo</name>
+  <name>Apache Apex Malhar Distributed Distinct Demo</name>
   <description></description>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
     <version>3.0.0</version>
   </parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/echoserver/pom.xml
----------------------------------------------------------------------
diff --git a/demos/echoserver/pom.xml b/demos/echoserver/pom.xml
index afddddf..fb22441 100644
--- a/demos/echoserver/pom.xml
+++ b/demos/echoserver/pom.xml
@@ -23,16 +23,16 @@
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <artifactId>malhar-demos</artifactId>
-    <groupId>com.datatorrent</groupId>
-    <version>3.2.0-SNAPSHOT</version>
+    <groupId>org.apache.apex</groupId>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
   
-  <groupId>com.datatorrent</groupId>
+  <groupId>org.apache.apex</groupId>
   <artifactId>echoserver</artifactId>
   <packaging>jar</packaging>
 
   <!-- change these to the appropriate values -->
-  <name>EchoServer Demo</name>
+  <name>Apache Apex Malhar EchoServer Demo</name>
   <description>A demo server that echos data sent by a network client back to it</description>
 </project>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/frauddetect/pom.xml
----------------------------------------------------------------------
diff --git a/demos/frauddetect/pom.xml b/demos/frauddetect/pom.xml
index 993faca..3d5109b 100644
--- a/demos/frauddetect/pom.xml
+++ b/demos/frauddetect/pom.xml
@@ -22,18 +22,18 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   
-  <groupId>com.datatorrent</groupId>
-  <version>3.2.0-SNAPSHOT</version>
+  <groupId>org.apache.apex</groupId>
+  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>frauddetect-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>DataTorrent Fraud Detect Demo</name>
+  <name>Apache Apex Malhar Fraud Detect Demo</name>
   <description>DataTorrent demo applications that demonstrates real-time pattern detection in the incoming data and alerting. The demo processes streaming credit card transactions and looks for fraudulent transactions.</description>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/machinedata/pom.xml
----------------------------------------------------------------------
diff --git a/demos/machinedata/pom.xml b/demos/machinedata/pom.xml
index 9bd276a..73d5c14 100644
--- a/demos/machinedata/pom.xml
+++ b/demos/machinedata/pom.xml
@@ -22,25 +22,25 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   
-  <groupId>com.datatorrent</groupId>
-  <version>3.2.0-SNAPSHOT</version>
+  <groupId>org.apache.apex</groupId>
+  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>machinedata-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Datatorrent MachineData Demo</name>
+  <name>Apache Apex Malhar MachineData Demo</name>
   <description></description>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <dependencies>
     <dependency>
-      <groupId>com.datatorrent</groupId>
+      <groupId>org.apache.apex</groupId>
       <artifactId>malhar-contrib</artifactId>
-      <version>${datatorrent.version}</version>
+      <version>${apex.core.version}</version>
       <exclusions>
         <exclusion>
           <groupId>*</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/mobile/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mobile/pom.xml b/demos/mobile/pom.xml
index 1887314..ccc9a66 100644
--- a/demos/mobile/pom.xml
+++ b/demos/mobile/pom.xml
@@ -22,18 +22,18 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>com.datatorrent</groupId>
-  <version>3.2.0-SNAPSHOT</version>
+  <groupId>org.apache.apex</groupId>
+  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>mobile-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Datatorrent Mobile Demo</name>
+  <name>Apache Apex Malhar Mobile Demo</name>
   <description></description>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/mrmonitor/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mrmonitor/pom.xml b/demos/mrmonitor/pom.xml
index 33ec26f..b087fa1 100644
--- a/demos/mrmonitor/pom.xml
+++ b/demos/mrmonitor/pom.xml
@@ -22,18 +22,18 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>com.datatorrent</groupId>
-  <version>3.2.0-SNAPSHOT</version>
+  <groupId>org.apache.apex</groupId>
+  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>mrmonitor</artifactId>
   <packaging>jar</packaging>
 
-  <name>DataTorrent MR Monitoring Demo</name>
+  <name>Apache Apex Malhar MR Monitoring Demo</name>
   <description></description>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/mroperator/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mroperator/pom.xml b/demos/mroperator/pom.xml
index 324514d..0e598b7 100644
--- a/demos/mroperator/pom.xml
+++ b/demos/mroperator/pom.xml
@@ -22,18 +22,18 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   
-  <groupId>com.datatorrent</groupId>
-  <version>3.2.0-SNAPSHOT</version>
+  <groupId>org.apache.apex</groupId>
+  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>mroperator</artifactId>
   <packaging>jar</packaging>
 
-  <name>DataTorrent MR Operator Demo</name>
+  <name>Apache Apex Malhar MR Operator Demo</name>
   <description></description>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/pi/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pi/pom.xml b/demos/pi/pom.xml
index 6fab637..7cc4119 100644
--- a/demos/pi/pom.xml
+++ b/demos/pi/pom.xml
@@ -22,18 +22,18 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>com.datatorrent</groupId>
-  <version>3.2.0-SNAPSHOT</version>
+  <groupId>org.apache.apex</groupId>
+  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>pi-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>DataTorrent Pi Demo</name>
+  <name>Apache Apex Malhar Pi Demo</name>
   <description>DataTorrent demo applications that calculate the value of Pi. This is a starting point to understand how DataTorrent works.</description>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pom.xml b/demos/pom.xml
index 6069633..123591f 100644
--- a/demos/pom.xml
+++ b/demos/pom.xml
@@ -23,14 +23,14 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <artifactId>malhar-demos</artifactId>
   <packaging>pom</packaging>
-  <name>Demos</name>
+  <name>Apache Apex Malhar Demos</name>
 
   <modules>
     <module>machinedata</module>
@@ -48,9 +48,10 @@
   </modules>
 
   <properties>
-    <datatorrent.version>3.2.0-SNAPSHOT</datatorrent.version>
+    <apex.core.version>3.2.0-incubating-SNAPSHOT</apex.core.version>
     <datatorrent.apppackage.classpath>lib/*.jar</datatorrent.apppackage.classpath>
     <semver.plugin.skip>true</semver.plugin.skip>
+    <maven.deploy.skip>true</maven.deploy.skip>
   </properties>
 
   <profiles>
@@ -121,7 +122,7 @@
                 <archive>
                   <manifestEntries>
                     <Class-Path>${datatorrent.apppackage.classpath}</Class-Path>
-                    <DT-Engine-Version>${datatorrent.version}</DT-Engine-Version>
+                    <DT-Engine-Version>${apex.core.version}</DT-Engine-Version>
                     <DT-App-Package-Name>${project.artifactId}</DT-App-Package-Name>
                     <DT-App-Package-Version>${project.version}</DT-App-Package-Version>
                     <DT-App-Package-Display-Name>${project.name}</DT-App-Package-Display-Name>
@@ -180,9 +181,9 @@
 
   <dependencies>
     <dependency>
-      <groupId>com.datatorrent</groupId>
-      <artifactId>dt-common</artifactId>
-      <version>${datatorrent.version}</version>
+      <groupId>org.apache.apex</groupId>
+      <artifactId>apex-common</artifactId>
+      <version>${apex.core.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
@@ -192,7 +193,7 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>com.datatorrent</groupId>
+      <groupId>org.apache.apex</groupId>
       <artifactId>malhar-library</artifactId>
       <version>${project.version}</version>
       <exclusions>
@@ -203,7 +204,7 @@
       </exclusions>
     </dependency>
     <dependency>
-      <groupId>com.datatorrent</groupId>
+      <groupId>org.apache.apex</groupId>
       <artifactId>malhar-library</artifactId>
       <version>${project.version}</version>
       <classifier>tests</classifier>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/r/pom.xml
----------------------------------------------------------------------
diff --git a/demos/r/pom.xml b/demos/r/pom.xml
index 40910d1..1c94631 100644
--- a/demos/r/pom.xml
+++ b/demos/r/pom.xml
@@ -22,18 +22,18 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>com.datatorrent</groupId>
-  <version>3.2.0-SNAPSHOT</version>
+  <groupId>org.apache.apex</groupId>
+  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>r-demo</artifactId>
   <packaging>jar</packaging>
 
- <name>DataTorrent R Demo</name>
+ <name>Apache Apex Malhar R Demo</name>
   <description>DataTorrent demo applications for using R.</description>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <properties>
@@ -71,9 +71,9 @@
       <version>1.0</version>
     </dependency>
     <dependency>
-      <groupId>com.datatorrent</groupId>
+      <groupId>org.apache.apex</groupId>
       <artifactId>malhar-contrib</artifactId>
-      <version>${datatorrent.version}</version>
+      <version>${apex.core.version}</version>
       <exclusions>
         <exclusion>
           <groupId>*</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/twitter/pom.xml
----------------------------------------------------------------------
diff --git a/demos/twitter/pom.xml b/demos/twitter/pom.xml
index 76cfe82..1ccc37a 100644
--- a/demos/twitter/pom.xml
+++ b/demos/twitter/pom.xml
@@ -22,18 +22,18 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>com.datatorrent</groupId>
-  <version>3.2.0-SNAPSHOT</version>
+  <groupId>org.apache.apex</groupId>
+  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>twitter-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>DataTorrent Twitter Demo</name>
+  <name>Apache Apex Malhar Twitter Demo</name>
   <description>Twitter Rolling Top Words application demonstrates real-time computations over a sliding window.</description>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <properties>
@@ -72,7 +72,7 @@
       <version>5.1.22</version>
     </dependency>
     <dependency>
-      <groupId>com.datatorrent</groupId>
+      <groupId>org.apache.apex</groupId>
       <artifactId>malhar-contrib</artifactId>
       <version>${project.version}</version>
       <exclusions>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/uniquecount/pom.xml
----------------------------------------------------------------------
diff --git a/demos/uniquecount/pom.xml b/demos/uniquecount/pom.xml
index 66a42b3..3a66aa6 100644
--- a/demos/uniquecount/pom.xml
+++ b/demos/uniquecount/pom.xml
@@ -22,18 +22,18 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>com.datatorrent</groupId>
-  <version>3.2.0-SNAPSHOT</version>
+  <groupId>org.apache.apex</groupId>
+  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>uniquecount</artifactId>
   <packaging>jar</packaging>
 
-  <name>DataTorrent Unique Count Demo</name>
+  <name>Apache Apex Malhar Unique Count Demo</name>
   <description></description>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/wordcount/pom.xml
----------------------------------------------------------------------
diff --git a/demos/wordcount/pom.xml b/demos/wordcount/pom.xml
index 47ef5eb..78732b8 100644
--- a/demos/wordcount/pom.xml
+++ b/demos/wordcount/pom.xml
@@ -23,18 +23,18 @@
   <modelVersion>4.0.0</modelVersion>
   
     
-  <groupId>com.datatorrent</groupId>
-  <version>3.2.0-SNAPSHOT</version>
+  <groupId>org.apache.apex</groupId>
+  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>wordcount-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Datatorrent Wordcount Demo</name>
+  <name>Apache Apex Malhar Wordcount Demo</name>
   <description>A very simple application that demonstrates DataTorrent Platformā€™s streaming window feature.</description>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/demos/yahoofinance/pom.xml
----------------------------------------------------------------------
diff --git a/demos/yahoofinance/pom.xml b/demos/yahoofinance/pom.xml
index c777017..cdb8c7b 100644
--- a/demos/yahoofinance/pom.xml
+++ b/demos/yahoofinance/pom.xml
@@ -22,18 +22,18 @@
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>com.datatorrent</groupId>
-  <version>3.2.0-SNAPSHOT</version>
+  <groupId>org.apache.apex</groupId>
+  <version>3.2.0-incubating-SNAPSHOT</version>
   <artifactId>yahoo-finance-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>DataTorrent Yahoo! Finance Demo</name>
+  <name>Apache Apex Malhar Yahoo! Finance Demo</name>
   <description>DataTorrent demo applications that get Yahoo finance feed and calculate minute price range, minute volume and simple moving average.</description>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar-demos</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/library/pom.xml
----------------------------------------------------------------------
diff --git a/library/pom.xml b/library/pom.xml
index 3541804..fb28d52 100644
--- a/library/pom.xml
+++ b/library/pom.xml
@@ -24,15 +24,15 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <artifactId>malhar-library</artifactId>
   <packaging>jar</packaging>
 
-  <name>Operator and Codec Library</name>
+  <name>Apache Apex Malhar Library</name>
 
   <properties>
     <maven.deploy.skip>false</maven.deploy.skip>
@@ -184,9 +184,9 @@
 
   <dependencies>
     <dependency>
-      <groupId>com.datatorrent</groupId>
-      <artifactId>dt-common</artifactId>
-      <version>${dt.framework.version}</version>
+      <groupId>org.apache.apex</groupId>
+      <artifactId>apex-common</artifactId>
+      <version>${apex.core.version}</version>
     </dependency>
     <dependency>
       <groupId>com.icegreen</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9fb61f6..e9cea2f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,13 +23,13 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
-    <artifactId>dt-framework</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <groupId>org.apache.apex</groupId>
+    <artifactId>apex</artifactId>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <artifactId>malhar</artifactId>
-  <version>3.2.0-SNAPSHOT</version>
+  <version>3.2.0-incubating-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>Apache Apex Malhar</name>
   <url>http://apex.apache.org</url>
@@ -41,15 +41,6 @@
     </license>
   </licenses>
 
-  <!-- repository to provide the DataTorrent artifacts -->
-  <repositories>
-    <repository>
-      <id>datatorrent</id>
-      <name>DataTorrent Release Repository</name>
-      <url>https://www.datatorrent.com/maven/content/repositories/releases/</url>
-    </repository>
-  </repositories>
-
   <prerequisites>
     <maven>3.0.5</maven>
   </prerequisites>
@@ -57,11 +48,7 @@
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <maven.deploy.skip>false</maven.deploy.skip>
-    <dt.framework.version>3.2.0-SNAPSHOT</dt.framework.version>
-    <!-- the following properties match the properties defined in core/pom.xml -->
-    <jackson.version>1.9.2</jackson.version>
-    <jersey.version>1.9</jersey.version>
-    <jetty.version>8.1.10.v20130312</jetty.version>
+    <apex.core.version>3.2.0-incubating-SNAPSHOT</apex.core.version>
     <semver.plugin.skip>false</semver.plugin.skip>
   </properties>
 
@@ -72,11 +59,6 @@
         <artifactId>license-maven-plugin</artifactId>
         <configuration>
           <excludes combine.children="append">
-            <exclude>DISCLAIMER</exclude>
-            <exclude>LICENSE</exclude>
-            <exclude>NOTICE</exclude>
-            <exclude>**/node_modules/**</exclude>
-            <exclude>**/web/**/.*</exclude>
             <exclude>src/test/resources/**/sample_logs/**</exclude>
             <exclude>src/test/resources/*.csv</exclude>
             <exclude>src/main/resources/com/datatorrent/apps/logstream/**</exclude>
@@ -93,8 +75,6 @@
         <artifactId>apache-rat-plugin</artifactId>
         <configuration>
           <excludes combine.children="append">
-            <exclude>**/node_modules/**</exclude>
-            <exclude>**/web/**/.*</exclude>
             <exclude>src/test/resources/**/sample_logs/**</exclude>
             <exclude>src/test/resources/*.csv</exclude>
             <exclude>src/main/resources/com/datatorrent/apps/logstream/**</exclude>
@@ -102,7 +82,6 @@
             <exclude>src/test/resources/com/datatorrent/contrib/romesyndication/*.rss</exclude>
             <exclude>src/main/resources/**/*.txt</exclude>
             <exclude>**/*.json</exclude>
-            <exclude>web/**/robots.txt</exclude>
             <exclude>**/*.md</exclude>
           </excludes>
         </configuration>
@@ -162,6 +141,12 @@
         </plugins>
       </build>
     </profile>
+    <profile>
+      <id>all-modules</id>
+      <modules>
+        <module>benchmark</module>
+      </modules>
+    </profile>
   </profiles>
 
   <modules>
@@ -174,9 +159,9 @@
 
   <dependencies>
     <dependency>
-      <groupId>com.datatorrent</groupId>
-      <artifactId>dt-engine</artifactId>
-      <version>${dt.framework.version}</version>
+      <groupId>org.apache.apex</groupId>
+      <artifactId>apex-engine</artifactId>
+      <version>${apex.core.version}</version>
       <scope>test</scope>
     </dependency>
   </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/4a86ad0b/samples/pom.xml
----------------------------------------------------------------------
diff --git a/samples/pom.xml b/samples/pom.xml
index 05ba2cd..c67f308 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -24,15 +24,15 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.datatorrent</groupId>
+    <groupId>org.apache.apex</groupId>
     <artifactId>malhar</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0-incubating-SNAPSHOT</version>
   </parent>
 
   <artifactId>malhar-samples</artifactId>
   <packaging>jar</packaging>
 
-  <name>Samples</name>
+  <name>Apache Apex Malhar Samples</name>
 
   <dependencies>
     <dependency>
@@ -42,8 +42,8 @@
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>dt-engine</artifactId>
-      <version>${dt.framework.version}</version>
+      <artifactId>apex-engine</artifactId>
+      <version>${apex.core.version}</version>
       <scope>test</scope>
     </dependency>
   </dependencies>


[09/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/node_modules/bson/browser_build/bson.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/node_modules/bson/browser_build/bson.js b/web/demos/package/node_modules/mongodb/node_modules/bson/browser_build/bson.js
deleted file mode 100644
index d86a00d..0000000
--- a/web/demos/package/node_modules/mongodb/node_modules/bson/browser_build/bson.js
+++ /dev/null
@@ -1,4843 +0,0 @@
-var bson = (function(){
-
-  var pkgmap        = {},
-      global        = {},
-      nativeRequire = typeof require != 'undefined' && require,
-      lib, ties, main, async;
-
-  function exports(){ return main(); };
-
-  exports.main     = exports;
-  exports.module   = module;
-  exports.packages = pkgmap;
-  exports.pkg      = pkg;
-  exports.require  = function require(uri){
-    return pkgmap.main.index.require(uri);
-  };
-
-
-  ties             = {};
-
-  aliases          = {};
-
-
-  return exports;
-
-function join() {
-  return normalize(Array.prototype.join.call(arguments, "/"));
-};
-
-function normalize(path) {
-  var ret = [], parts = path.split('/'), cur, prev;
-
-  var i = 0, l = parts.length-1;
-  for (; i <= l; i++) {
-    cur = parts[i];
-
-    if (cur === "." && prev !== undefined) continue;
-
-    if (cur === ".." && ret.length && prev !== ".." && prev !== "." && prev !== undefined) {
-      ret.pop();
-      prev = ret.slice(-1)[0];
-    } else {
-      if (prev === ".") ret.pop();
-      ret.push(cur);
-      prev = cur;
-    }
-  }
-
-  return ret.join("/");
-};
-
-function dirname(path) {
-  return path && path.substr(0, path.lastIndexOf("/")) || ".";
-};
-
-function findModule(workingModule, uri){
-  var moduleId      = join(dirname(workingModule.id), /\.\/$/.test(uri) ? (uri + 'index') : uri ).replace(/\.js$/, ''),
-      moduleIndexId = join(moduleId, 'index'),
-      pkg           = workingModule.pkg,
-      module;
-
-  var i = pkg.modules.length,
-      id;
-
-  while(i-->0){
-    id = pkg.modules[i].id;
-
-    if(id==moduleId || id == moduleIndexId){
-      module = pkg.modules[i];
-      break;
-    }
-  }
-
-  return module;
-}
-
-function newRequire(callingModule){
-  function require(uri){
-    var module, pkg;
-
-    if(/^\./.test(uri)){
-      module = findModule(callingModule, uri);
-    } else if ( ties && ties.hasOwnProperty( uri ) ) {
-      return ties[uri];
-    } else if ( aliases && aliases.hasOwnProperty( uri ) ) {
-      return require(aliases[uri]);
-    } else {
-      pkg = pkgmap[uri];
-
-      if(!pkg && nativeRequire){
-        try {
-          pkg = nativeRequire(uri);
-        } catch (nativeRequireError) {}
-
-        if(pkg) return pkg;
-      }
-
-      if(!pkg){
-        throw new Error('Cannot find module "'+uri+'" @[module: '+callingModule.id+' package: '+callingModule.pkg.name+']');
-      }
-
-      module = pkg.index;
-    }
-
-    if(!module){
-      throw new Error('Cannot find module "'+uri+'" @[module: '+callingModule.id+' package: '+callingModule.pkg.name+']');
-    }
-
-    module.parent = callingModule;
-    return module.call();
-  };
-
-
-  return require;
-}
-
-
-function module(parent, id, wrapper){
-  var mod    = { pkg: parent, id: id, wrapper: wrapper },
-      cached = false;
-
-  mod.exports = {};
-  mod.require = newRequire(mod);
-
-  mod.call = function(){
-    if(cached) {
-      return mod.exports;
-    }
-
-    cached = true;
-
-    global.require = mod.require;
-
-    mod.wrapper(mod, mod.exports, global, global.require);
-    return mod.exports;
-  };
-
-  if(parent.mainModuleId == mod.id){
-    parent.index = mod;
-    parent.parents.length === 0 && ( main = mod.call );
-  }
-
-  parent.modules.push(mod);
-}
-
-function pkg(/* [ parentId ...], wrapper */){
-  var wrapper = arguments[ arguments.length - 1 ],
-      parents = Array.prototype.slice.call(arguments, 0, arguments.length - 1),
-      ctx     = wrapper(parents);
-
-
-  pkgmap[ctx.name] = ctx;
-
-  arguments.length == 1 && ( pkgmap.main = ctx );
-
-  return function(modules){
-    var id;
-    for(id in modules){
-      module(ctx, id, modules[id]);
-    }
-  };
-}
-
-
-}(this));
-
-bson.pkg(function(parents){
-
-  return {
-    'name'         : 'bson',
-    'mainModuleId' : 'bson',
-    'modules'      : [],
-    'parents'      : parents
-  };
-
-})({ 'binary': function(module, exports, global, require, undefined){
-  /**
- * Module dependencies.
- */
-if(typeof window === 'undefined') { 
-  var Buffer = require('buffer').Buffer; // TODO just use global Buffer
-}
-
-// Binary default subtype
-var BSON_BINARY_SUBTYPE_DEFAULT = 0;
-
-/**
- * @ignore
- * @api private
- */
-var writeStringToArray = function(data) {
-  // Create a buffer
-  var buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(data.length)) : new Array(data.length);
-  // Write the content to the buffer
-  for(var i = 0; i < data.length; i++) {
-    buffer[i] = data.charCodeAt(i);
-  }  
-  // Write the string to the buffer
-  return buffer;
-}
-
-/**
- * Convert Array ot Uint8Array to Binary String
- *
- * @ignore
- * @api private
- */
-var convertArraytoUtf8BinaryString = function(byteArray, startIndex, endIndex) {
-  var result = "";
-  for(var i = startIndex; i < endIndex; i++) {
-   result = result + String.fromCharCode(byteArray[i]);
-  }
-  return result;  
-};
-
-/**
- * A class representation of the BSON Binary type.
- * 
- * Sub types
- *  - **BSON.BSON_BINARY_SUBTYPE_DEFAULT**, default BSON type.
- *  - **BSON.BSON_BINARY_SUBTYPE_FUNCTION**, BSON function type.
- *  - **BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY**, BSON byte array type.
- *  - **BSON.BSON_BINARY_SUBTYPE_UUID**, BSON uuid type.
- *  - **BSON.BSON_BINARY_SUBTYPE_MD5**, BSON md5 type.
- *  - **BSON.BSON_BINARY_SUBTYPE_USER_DEFINED**, BSON user defined type.
- *
- * @class Represents the Binary BSON type.
- * @param {Buffer} buffer a buffer object containing the binary data.
- * @param {Number} [subType] the option binary type.
- * @return {Grid}
- */
-function Binary(buffer, subType) {
-  if(!(this instanceof Binary)) return new Binary(buffer, subType);
-  
-  this._bsontype = 'Binary';
-
-  if(buffer instanceof Number) {
-    this.sub_type = buffer;
-    this.position = 0;
-  } else {    
-    this.sub_type = subType == null ? BSON_BINARY_SUBTYPE_DEFAULT : subType;
-    this.position = 0;
-  }
-
-  if(buffer != null && !(buffer instanceof Number)) {
-    // Only accept Buffer, Uint8Array or Arrays
-    if(typeof buffer == 'string') {
-      // Different ways of writing the length of the string for the different types
-      if(typeof Buffer != 'undefined') {
-        this.buffer = new Buffer(buffer);
-      } else if(typeof Uint8Array != 'undefined' || (Object.prototype.toString.call(buffer) == '[object Array]')) {
-        this.buffer = writeStringToArray(buffer);
-      } else {
-        throw new Error("only String, Buffer, Uint8Array or Array accepted");
-      }
-    } else {
-      this.buffer = buffer;      
-    }
-    this.position = buffer.length;
-  } else {
-    if(typeof Buffer != 'undefined') {
-      this.buffer =  new Buffer(Binary.BUFFER_SIZE);      
-    } else if(typeof Uint8Array != 'undefined'){
-      this.buffer = new Uint8Array(new ArrayBuffer(Binary.BUFFER_SIZE));
-    } else {
-      this.buffer = new Array(Binary.BUFFER_SIZE);
-    }
-    // Set position to start of buffer
-    this.position = 0;
-  }
-};
-
-/**
- * Updates this binary with byte_value.
- *
- * @param {Character} byte_value a single byte we wish to write.
- * @api public
- */
-Binary.prototype.put = function put(byte_value) {
-  // If it's a string and a has more than one character throw an error
-  if(byte_value['length'] != null && typeof byte_value != 'number' && byte_value.length != 1) throw new Error("only accepts single character String, Uint8Array or Array");
-  if(typeof byte_value != 'number' && byte_value < 0 || byte_value > 255) throw new Error("only accepts number in a valid unsigned byte range 0-255");
-  
-  // Decode the byte value once
-  var decoded_byte = null;
-  if(typeof byte_value == 'string') {
-    decoded_byte = byte_value.charCodeAt(0);      
-  } else if(byte_value['length'] != null) {
-    decoded_byte = byte_value[0];
-  } else {
-    decoded_byte = byte_value;
-  }
-  
-  if(this.buffer.length > this.position) {
-    this.buffer[this.position++] = decoded_byte;
-  } else {
-    if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) {    
-      // Create additional overflow buffer
-      var buffer = new Buffer(Binary.BUFFER_SIZE + this.buffer.length);
-      // Combine the two buffers together
-      this.buffer.copy(buffer, 0, 0, this.buffer.length);
-      this.buffer = buffer;
-      this.buffer[this.position++] = decoded_byte;
-    } else {
-      var buffer = null;
-      // Create a new buffer (typed or normal array)
-      if(Object.prototype.toString.call(this.buffer) == '[object Uint8Array]') {
-        buffer = new Uint8Array(new ArrayBuffer(Binary.BUFFER_SIZE + this.buffer.length));
-      } else {
-        buffer = new Array(Binary.BUFFER_SIZE + this.buffer.length);
-      }      
-      
-      // We need to copy all the content to the new array
-      for(var i = 0; i < this.buffer.length; i++) {
-        buffer[i] = this.buffer[i];
-      }
-      
-      // Reassign the buffer
-      this.buffer = buffer;
-      // Write the byte
-      this.buffer[this.position++] = decoded_byte;
-    }
-  }
-};
-
-/**
- * Writes a buffer or string to the binary.
- *
- * @param {Buffer|String} string a string or buffer to be written to the Binary BSON object.
- * @param {Number} offset specify the binary of where to write the content.
- * @api public
- */
-Binary.prototype.write = function write(string, offset) {
-  offset = typeof offset == 'number' ? offset : this.position;
-
-  // If the buffer is to small let's extend the buffer
-  if(this.buffer.length < offset + string.length) {
-    var buffer = null;
-    // If we are in node.js
-    if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) {      
-      buffer = new Buffer(this.buffer.length + string.length);
-      this.buffer.copy(buffer, 0, 0, this.buffer.length);      
-    } else if(Object.prototype.toString.call(this.buffer) == '[object Uint8Array]') {
-      // Create a new buffer
-      buffer = new Uint8Array(new ArrayBuffer(this.buffer.length + string.length))
-      // Copy the content
-      for(var i = 0; i < this.position; i++) {
-        buffer[i] = this.buffer[i];
-      }
-    }
-    
-    // Assign the new buffer
-    this.buffer = buffer;
-  }
-
-  if(typeof Buffer != 'undefined' && Buffer.isBuffer(string) && Buffer.isBuffer(this.buffer)) {
-    string.copy(this.buffer, offset, 0, string.length);
-    this.position = (offset + string.length) > this.position ? (offset + string.length) : this.position;
-    // offset = string.length
-  } else if(typeof Buffer != 'undefined' && typeof string == 'string' && Buffer.isBuffer(this.buffer)) {
-    this.buffer.write(string, 'binary', offset);
-    this.position = (offset + string.length) > this.position ? (offset + string.length) : this.position;
-    // offset = string.length;
-  } else if(Object.prototype.toString.call(string) == '[object Uint8Array]' 
-    || Object.prototype.toString.call(string) == '[object Array]' && typeof string != 'string') {      
-    for(var i = 0; i < string.length; i++) {
-      this.buffer[offset++] = string[i];
-    }    
-
-    this.position = offset > this.position ? offset : this.position;
-  } else if(typeof string == 'string') {
-    for(var i = 0; i < string.length; i++) {
-      this.buffer[offset++] = string.charCodeAt(i);
-    }
-
-    this.position = offset > this.position ? offset : this.position;
-  }
-};
-
-/**
- * Reads **length** bytes starting at **position**.
- *
- * @param {Number} position read from the given position in the Binary.
- * @param {Number} length the number of bytes to read.
- * @return {Buffer}
- * @api public
- */
-Binary.prototype.read = function read(position, length) {
-  length = length && length > 0
-    ? length
-    : this.position;
-  
-  // Let's return the data based on the type we have
-  if(this.buffer['slice']) {
-    return this.buffer.slice(position, position + length);
-  } else {
-    // Create a buffer to keep the result
-    var buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(length)) : new Array(length);
-    for(var i = 0; i < length; i++) {
-      buffer[i] = this.buffer[position++];
-    }
-  }
-  // Return the buffer
-  return buffer;
-};
-
-/**
- * Returns the value of this binary as a string.
- *
- * @return {String}
- * @api public
- */
-Binary.prototype.value = function value(asRaw) {
-  asRaw = asRaw == null ? false : asRaw;  
-  
-  // If it's a node.js buffer object
-  if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) {
-    return asRaw ? this.buffer.slice(0, this.position) : this.buffer.toString('binary', 0, this.position);
-  } else {
-    if(asRaw) {
-      // we support the slice command use it
-      if(this.buffer['slice'] != null) {
-        return this.buffer.slice(0, this.position);
-      } else {
-        // Create a new buffer to copy content to
-        var newBuffer = Object.prototype.toString.call(this.buffer) == '[object Uint8Array]' ? new Uint8Array(new ArrayBuffer(this.position)) : new Array(this.position);
-        // Copy content
-        for(var i = 0; i < this.position; i++) {
-          newBuffer[i] = this.buffer[i];
-        }
-        // Return the buffer
-        return newBuffer;
-      }
-    } else {
-      return convertArraytoUtf8BinaryString(this.buffer, 0, this.position);
-    }
-  }
-};
-
-/**
- * Length.
- *
- * @return {Number} the length of the binary.
- * @api public
- */
-Binary.prototype.length = function length() {
-  return this.position;
-};
-
-/**
- * @ignore
- * @api private
- */
-Binary.prototype.toJSON = function() {
-  return this.buffer != null ? this.buffer.toString('base64') : '';
-}
-
-/**
- * @ignore
- * @api private
- */
-Binary.prototype.toString = function(format) {
-  return this.buffer != null ? this.buffer.slice(0, this.position).toString(format) : '';
-}
-
-Binary.BUFFER_SIZE = 256;
-
-/**
- * Default BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_DEFAULT = 0;
-/**
- * Function BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_FUNCTION = 1;
-/**
- * Byte Array BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_BYTE_ARRAY = 2;
-/**
- * OLD UUID BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_UUID_OLD = 3;
-/**
- * UUID BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_UUID = 4;
-/**
- * MD5 BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_MD5 = 5;
-/**
- * User BSON type
- *  
- * @classconstant SUBTYPE_DEFAULT
- **/
-Binary.SUBTYPE_USER_DEFINED = 128;
-
-/**
- * Expose.
- */
-exports.Binary = Binary;
-
-
-}, 
-
-
-
-'binary_parser': function(module, exports, global, require, undefined){
-  /**
- * Binary Parser.
- * Jonas Raoni Soares Silva
- * http://jsfromhell.com/classes/binary-parser [v1.0]
- */
-var chr = String.fromCharCode;
-
-var maxBits = [];
-for (var i = 0; i < 64; i++) {
-	maxBits[i] = Math.pow(2, i);
-}
-
-function BinaryParser (bigEndian, allowExceptions) {
-  if(!(this instanceof BinaryParser)) return new BinaryParser(bigEndian, allowExceptions);
-  
-	this.bigEndian = bigEndian;
-	this.allowExceptions = allowExceptions;
-};
-
-BinaryParser.warn = function warn (msg) {
-	if (this.allowExceptions) {
-		throw new Error(msg);
-  }
-
-	return 1;
-};
-
-BinaryParser.decodeFloat = function decodeFloat (data, precisionBits, exponentBits) {
-	var b = new this.Buffer(this.bigEndian, data);
-
-	b.checkBuffer(precisionBits + exponentBits + 1);
-
-	var bias = maxBits[exponentBits - 1] - 1
-    , signal = b.readBits(precisionBits + exponentBits, 1)
-    , exponent = b.readBits(precisionBits, exponentBits)
-    , significand = 0
-    , divisor = 2
-    , curByte = b.buffer.length + (-precisionBits >> 3) - 1;
-
-	do {
-		for (var byteValue = b.buffer[ ++curByte ], startBit = precisionBits % 8 || 8, mask = 1 << startBit; mask >>= 1; ( byteValue & mask ) && ( significand += 1 / divisor ), divisor *= 2 );
-	} while (precisionBits -= startBit);
-
-	return exponent == ( bias << 1 ) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity : ( 1 + signal * -2 ) * ( exponent || significand ? !exponent ? Math.pow( 2, -bias + 1 ) * significand : Math.pow( 2, exponent - bias ) * ( 1 + significand ) : 0 );
-};
-
-BinaryParser.decodeInt = function decodeInt (data, bits, signed, forceBigEndian) {
-  var b = new this.Buffer(this.bigEndian || forceBigEndian, data)
-      , x = b.readBits(0, bits)
-      , max = maxBits[bits]; //max = Math.pow( 2, bits );
-  
-  return signed && x >= max / 2
-      ? x - max
-      : x;
-};
-
-BinaryParser.encodeFloat = function encodeFloat (data, precisionBits, exponentBits) {
-	var bias = maxBits[exponentBits - 1] - 1
-    , minExp = -bias + 1
-    , maxExp = bias
-    , minUnnormExp = minExp - precisionBits
-    , n = parseFloat(data)
-    , status = isNaN(n) || n == -Infinity || n == +Infinity ? n : 0
-    ,	exp = 0
-    , len = 2 * bias + 1 + precisionBits + 3
-    , bin = new Array(len)
-    , signal = (n = status !== 0 ? 0 : n) < 0
-    , intPart = Math.floor(n = Math.abs(n))
-    , floatPart = n - intPart
-    , lastBit
-    , rounded
-    , result
-    , i
-    , j;
-
-	for (i = len; i; bin[--i] = 0);
-
-	for (i = bias + 2; intPart && i; bin[--i] = intPart % 2, intPart = Math.floor(intPart / 2));
-
-	for (i = bias + 1; floatPart > 0 && i; (bin[++i] = ((floatPart *= 2) >= 1) - 0 ) && --floatPart);
-
-	for (i = -1; ++i < len && !bin[i];);
-
-	if (bin[(lastBit = precisionBits - 1 + (i = (exp = bias + 1 - i) >= minExp && exp <= maxExp ? i + 1 : bias + 1 - (exp = minExp - 1))) + 1]) {
-		if (!(rounded = bin[lastBit])) {
-			for (j = lastBit + 2; !rounded && j < len; rounded = bin[j++]);
-		}
-
-		for (j = lastBit + 1; rounded && --j >= 0; (bin[j] = !bin[j] - 0) && (rounded = 0));
-	}
-
-	for (i = i - 2 < 0 ? -1 : i - 3; ++i < len && !bin[i];);
-
-	if ((exp = bias + 1 - i) >= minExp && exp <= maxExp) {
-		++i;
-  } else if (exp < minExp) {
-		exp != bias + 1 - len && exp < minUnnormExp && this.warn("encodeFloat::float underflow");
-		i = bias + 1 - (exp = minExp - 1);
-	}
-
-	if (intPart || status !== 0) {
-		this.warn(intPart ? "encodeFloat::float overflow" : "encodeFloat::" + status);
-		exp = maxExp + 1;
-		i = bias + 2;
-
-		if (status == -Infinity) {
-			signal = 1;
-    } else if (isNaN(status)) {
-			bin[i] = 1;
-    }
-	}
-
-	for (n = Math.abs(exp + bias), j = exponentBits + 1, result = ""; --j; result = (n % 2) + result, n = n >>= 1);
-
-	for (n = 0, j = 0, i = (result = (signal ? "1" : "0") + result + bin.slice(i, i + precisionBits).join("")).length, r = []; i; j = (j + 1) % 8) {
-		n += (1 << j) * result.charAt(--i);
-		if (j == 7) {
-			r[r.length] = String.fromCharCode(n);
-			n = 0;
-		}
-	}
-
-	r[r.length] = n
-    ? String.fromCharCode(n)
-    : "";
-
-	return (this.bigEndian ? r.reverse() : r).join("");
-};
-
-BinaryParser.encodeInt = function encodeInt (data, bits, signed, forceBigEndian) {
-	var max = maxBits[bits];
-
-  if (data >= max || data < -(max / 2)) {
-    this.warn("encodeInt::overflow");
-    data = 0;
-  }
-
-	if (data < 0) {
-    data += max;
-  }
-
-	for (var r = []; data; r[r.length] = String.fromCharCode(data % 256), data = Math.floor(data / 256));
-
-	for (bits = -(-bits >> 3) - r.length; bits--; r[r.length] = "\0");
-
-  return ((this.bigEndian || forceBigEndian) ? r.reverse() : r).join("");
-};
-
-BinaryParser.toSmall    = function( data ){ return this.decodeInt( data,  8, true  ); };
-BinaryParser.fromSmall  = function( data ){ return this.encodeInt( data,  8, true  ); };
-BinaryParser.toByte     = function( data ){ return this.decodeInt( data,  8, false ); };
-BinaryParser.fromByte   = function( data ){ return this.encodeInt( data,  8, false ); };
-BinaryParser.toShort    = function( data ){ return this.decodeInt( data, 16, true  ); };
-BinaryParser.fromShort  = function( data ){ return this.encodeInt( data, 16, true  ); };
-BinaryParser.toWord     = function( data ){ return this.decodeInt( data, 16, false ); };
-BinaryParser.fromWord   = function( data ){ return this.encodeInt( data, 16, false ); };
-BinaryParser.toInt      = function( data ){ return this.decodeInt( data, 32, true  ); };
-BinaryParser.fromInt    = function( data ){ return this.encodeInt( data, 32, true  ); };
-BinaryParser.toLong     = function( data ){ return this.decodeInt( data, 64, true  ); };
-BinaryParser.fromLong   = function( data ){ return this.encodeInt( data, 64, true  ); };
-BinaryParser.toDWord    = function( data ){ return this.decodeInt( data, 32, false ); };
-BinaryParser.fromDWord  = function( data ){ return this.encodeInt( data, 32, false ); };
-BinaryParser.toQWord    = function( data ){ return this.decodeInt( data, 64, true ); };
-BinaryParser.fromQWord  = function( data ){ return this.encodeInt( data, 64, true ); };
-BinaryParser.toFloat    = function( data ){ return this.decodeFloat( data, 23, 8   ); };
-BinaryParser.fromFloat  = function( data ){ return this.encodeFloat( data, 23, 8   ); };
-BinaryParser.toDouble   = function( data ){ return this.decodeFloat( data, 52, 11  ); };
-BinaryParser.fromDouble = function( data ){ return this.encodeFloat( data, 52, 11  ); };
-
-// Factor out the encode so it can be shared by add_header and push_int32
-BinaryParser.encode_int32 = function encode_int32 (number, asArray) {
-  var a, b, c, d, unsigned;
-  unsigned = (number < 0) ? (number + 0x100000000) : number;
-  a = Math.floor(unsigned / 0xffffff);
-  unsigned &= 0xffffff;
-  b = Math.floor(unsigned / 0xffff);
-  unsigned &= 0xffff;
-  c = Math.floor(unsigned / 0xff);
-  unsigned &= 0xff;
-  d = Math.floor(unsigned);
-  return asArray ? [chr(a), chr(b), chr(c), chr(d)] : chr(a) + chr(b) + chr(c) + chr(d);
-};
-
-BinaryParser.encode_int64 = function encode_int64 (number) {
-  var a, b, c, d, e, f, g, h, unsigned;
-  unsigned = (number < 0) ? (number + 0x10000000000000000) : number;
-  a = Math.floor(unsigned / 0xffffffffffffff);
-  unsigned &= 0xffffffffffffff;
-  b = Math.floor(unsigned / 0xffffffffffff);
-  unsigned &= 0xffffffffffff;
-  c = Math.floor(unsigned / 0xffffffffff);
-  unsigned &= 0xffffffffff;
-  d = Math.floor(unsigned / 0xffffffff);
-  unsigned &= 0xffffffff;
-  e = Math.floor(unsigned / 0xffffff);
-  unsigned &= 0xffffff;
-  f = Math.floor(unsigned / 0xffff);
-  unsigned &= 0xffff;
-  g = Math.floor(unsigned / 0xff);
-  unsigned &= 0xff;
-  h = Math.floor(unsigned);
-  return chr(a) + chr(b) + chr(c) + chr(d) + chr(e) + chr(f) + chr(g) + chr(h);
-};
-
-/**
- * UTF8 methods
- */
-
-// Take a raw binary string and return a utf8 string
-BinaryParser.decode_utf8 = function decode_utf8 (binaryStr) {
-  var len = binaryStr.length
-    , decoded = ''
-    , i = 0
-    , c = 0
-    , c1 = 0
-    , c2 = 0
-    , c3;
-
-  while (i < len) {
-    c = binaryStr.charCodeAt(i);
-    if (c < 128) {
-      decoded += String.fromCharCode(c);
-      i++;
-    } else if ((c > 191) && (c < 224)) {
-	    c2 = binaryStr.charCodeAt(i+1);
-      decoded += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
-      i += 2;
-    } else {
-	    c2 = binaryStr.charCodeAt(i+1);
-	    c3 = binaryStr.charCodeAt(i+2);
-      decoded += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
-      i += 3;
-    }
-  }
-
-  return decoded;
-};
-
-// Encode a cstring
-BinaryParser.encode_cstring = function encode_cstring (s) {
-  return unescape(encodeURIComponent(s)) + BinaryParser.fromByte(0);
-};
-
-// Take a utf8 string and return a binary string
-BinaryParser.encode_utf8 = function encode_utf8 (s) {
-  var a = ""
-    , c;
-
-  for (var n = 0, len = s.length; n < len; n++) {
-    c = s.charCodeAt(n);
-
-    if (c < 128) {
-	    a += String.fromCharCode(c);
-    } else if ((c > 127) && (c < 2048)) {
-	    a += String.fromCharCode((c>>6) | 192) ;
-	    a += String.fromCharCode((c&63) | 128);
-    } else {
-      a += String.fromCharCode((c>>12) | 224);
-      a += String.fromCharCode(((c>>6) & 63) | 128);
-      a += String.fromCharCode((c&63) | 128);
-    }
-  }
-
-  return a;
-};
-
-BinaryParser.hprint = function hprint (s) {
-  var number;
-
-  for (var i = 0, len = s.length; i < len; i++) {
-    if (s.charCodeAt(i) < 32) {
-      number = s.charCodeAt(i) <= 15
-        ? "0" + s.charCodeAt(i).toString(16)
-        : s.charCodeAt(i).toString(16);        
-      process.stdout.write(number + " ")
-    } else {
-      number = s.charCodeAt(i) <= 15
-        ? "0" + s.charCodeAt(i).toString(16)
-        : s.charCodeAt(i).toString(16);
-        process.stdout.write(number + " ")
-    }
-  }
-  
-  process.stdout.write("\n\n");
-};
-
-BinaryParser.ilprint = function hprint (s) {
-  var number;
-
-  for (var i = 0, len = s.length; i < len; i++) {
-    if (s.charCodeAt(i) < 32) {
-      number = s.charCodeAt(i) <= 15
-        ? "0" + s.charCodeAt(i).toString(10)
-        : s.charCodeAt(i).toString(10);
-
-      require('util').debug(number+' : ');
-    } else {
-      number = s.charCodeAt(i) <= 15
-        ? "0" + s.charCodeAt(i).toString(10)
-        : s.charCodeAt(i).toString(10);
-      require('util').debug(number+' : '+ s.charAt(i));
-    }
-  }
-};
-
-BinaryParser.hlprint = function hprint (s) {
-  var number;
-
-  for (var i = 0, len = s.length; i < len; i++) {
-    if (s.charCodeAt(i) < 32) {
-      number = s.charCodeAt(i) <= 15
-        ? "0" + s.charCodeAt(i).toString(16)
-        : s.charCodeAt(i).toString(16);
-      require('util').debug(number+' : ');
-    } else {
-      number = s.charCodeAt(i) <= 15
-        ? "0" + s.charCodeAt(i).toString(16)
-        : s.charCodeAt(i).toString(16);
-      require('util').debug(number+' : '+ s.charAt(i));
-    }
-  }
-};
-
-/**
- * BinaryParser buffer constructor.
- */
-function BinaryParserBuffer (bigEndian, buffer) {
-  this.bigEndian = bigEndian || 0;
-  this.buffer = [];
-  this.setBuffer(buffer);
-};
-
-BinaryParserBuffer.prototype.setBuffer = function setBuffer (data) {
-  var l, i, b;
-
-	if (data) {
-    i = l = data.length;
-    b = this.buffer = new Array(l);
-		for (; i; b[l - i] = data.charCodeAt(--i));
-		this.bigEndian && b.reverse();
-	}
-};
-
-BinaryParserBuffer.prototype.hasNeededBits = function hasNeededBits (neededBits) {
-	return this.buffer.length >= -(-neededBits >> 3);
-};
-
-BinaryParserBuffer.prototype.checkBuffer = function checkBuffer (neededBits) {
-	if (!this.hasNeededBits(neededBits)) {
-		throw new Error("checkBuffer::missing bytes");
-  }
-};
-
-BinaryParserBuffer.prototype.readBits = function readBits (start, length) {
-	//shl fix: Henri Torgemane ~1996 (compressed by Jonas Raoni)
-
-	function shl (a, b) {
-		for (; b--; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1);
-		return a;
-	}
-
-	if (start < 0 || length <= 0) {
-		return 0;
-  }
-
-	this.checkBuffer(start + length);
-
-  var offsetLeft
-    , offsetRight = start % 8
-    , curByte = this.buffer.length - ( start >> 3 ) - 1
-    , lastByte = this.buffer.length + ( -( start + length ) >> 3 )
-    , diff = curByte - lastByte
-    , sum = ((this.buffer[ curByte ] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) + (diff && (offsetLeft = (start + length) % 8) ? (this.buffer[lastByte++] & ((1 << offsetLeft) - 1)) << (diff-- << 3) - offsetRight : 0);
-
-	for(; diff; sum += shl(this.buffer[lastByte++], (diff-- << 3) - offsetRight));
-
-	return sum;
-};
-
-/**
- * Expose.
- */
-BinaryParser.Buffer = BinaryParserBuffer;
-
-exports.BinaryParser = BinaryParser;
-
-}, 
-
-
-
-'bson': function(module, exports, global, require, undefined){
-  var Long = require('./long').Long
-  , Double = require('./double').Double
-  , Timestamp = require('./timestamp').Timestamp
-  , ObjectID = require('./objectid').ObjectID
-  , Symbol = require('./symbol').Symbol
-  , Code = require('./code').Code
-  , MinKey = require('./min_key').MinKey
-  , MaxKey = require('./max_key').MaxKey
-  , DBRef = require('./db_ref').DBRef
-  , Binary = require('./binary').Binary
-  , BinaryParser = require('./binary_parser').BinaryParser
-  , writeIEEE754 = require('./float_parser').writeIEEE754
-  , readIEEE754 = require('./float_parser').readIEEE754
-
-// To ensure that 0.4 of node works correctly
-var isDate = function isDate(d) {
-  return typeof d === 'object' && Object.prototype.toString.call(d) === '[object Date]';
-}
-
-/**
- * Create a new BSON instance
- *
- * @class Represents the BSON Parser
- * @return {BSON} instance of BSON Parser.
- */
-function BSON () {};
-
-/**
- * @ignore
- * @api private
- */
-// BSON MAX VALUES
-BSON.BSON_INT32_MAX = 0x7FFFFFFF;
-BSON.BSON_INT32_MIN = -0x80000000;
-
-BSON.BSON_INT64_MAX = Math.pow(2, 63) - 1;
-BSON.BSON_INT64_MIN = -Math.pow(2, 63);
-
-// JS MAX PRECISE VALUES
-BSON.JS_INT_MAX = 0x20000000000000;  // Any integer up to 2^53 can be precisely represented by a double.
-BSON.JS_INT_MIN = -0x20000000000000;  // Any integer down to -2^53 can be precisely represented by a double.
-
-// Internal long versions
-var JS_INT_MAX_LONG = Long.fromNumber(0x20000000000000);  // Any integer up to 2^53 can be precisely represented by a double.
-var JS_INT_MIN_LONG = Long.fromNumber(-0x20000000000000);  // Any integer down to -2^53 can be precisely represented by a double.
-
-/**
- * Number BSON Type
- *
- * @classconstant BSON_DATA_NUMBER
- **/
-BSON.BSON_DATA_NUMBER = 1;
-/**
- * String BSON Type
- *
- * @classconstant BSON_DATA_STRING
- **/
-BSON.BSON_DATA_STRING = 2;
-/**
- * Object BSON Type
- *
- * @classconstant BSON_DATA_OBJECT
- **/
-BSON.BSON_DATA_OBJECT = 3;
-/**
- * Array BSON Type
- *
- * @classconstant BSON_DATA_ARRAY
- **/
-BSON.BSON_DATA_ARRAY = 4;
-/**
- * Binary BSON Type
- *
- * @classconstant BSON_DATA_BINARY
- **/
-BSON.BSON_DATA_BINARY = 5;
-/**
- * ObjectID BSON Type
- *
- * @classconstant BSON_DATA_OID
- **/
-BSON.BSON_DATA_OID = 7;
-/**
- * Boolean BSON Type
- *
- * @classconstant BSON_DATA_BOOLEAN
- **/
-BSON.BSON_DATA_BOOLEAN = 8;
-/**
- * Date BSON Type
- *
- * @classconstant BSON_DATA_DATE
- **/
-BSON.BSON_DATA_DATE = 9;
-/**
- * null BSON Type
- *
- * @classconstant BSON_DATA_NULL
- **/
-BSON.BSON_DATA_NULL = 10;
-/**
- * RegExp BSON Type
- *
- * @classconstant BSON_DATA_REGEXP
- **/
-BSON.BSON_DATA_REGEXP = 11;
-/**
- * Code BSON Type
- *
- * @classconstant BSON_DATA_CODE
- **/
-BSON.BSON_DATA_CODE = 13;
-/**
- * Symbol BSON Type
- *
- * @classconstant BSON_DATA_SYMBOL
- **/
-BSON.BSON_DATA_SYMBOL = 14;
-/**
- * Code with Scope BSON Type
- *
- * @classconstant BSON_DATA_CODE_W_SCOPE
- **/
-BSON.BSON_DATA_CODE_W_SCOPE = 15;
-/**
- * 32 bit Integer BSON Type
- *
- * @classconstant BSON_DATA_INT
- **/
-BSON.BSON_DATA_INT = 16;
-/**
- * Timestamp BSON Type
- *
- * @classconstant BSON_DATA_TIMESTAMP
- **/
-BSON.BSON_DATA_TIMESTAMP = 17;
-/**
- * Long BSON Type
- *
- * @classconstant BSON_DATA_LONG
- **/
-BSON.BSON_DATA_LONG = 18;
-/**
- * MinKey BSON Type
- *
- * @classconstant BSON_DATA_MIN_KEY
- **/
-BSON.BSON_DATA_MIN_KEY = 0xff;
-/**
- * MaxKey BSON Type
- *
- * @classconstant BSON_DATA_MAX_KEY
- **/
-BSON.BSON_DATA_MAX_KEY = 0x7f;
-
-/**
- * Binary Default Type
- *
- * @classconstant BSON_BINARY_SUBTYPE_DEFAULT
- **/
-BSON.BSON_BINARY_SUBTYPE_DEFAULT = 0;
-/**
- * Binary Function Type
- *
- * @classconstant BSON_BINARY_SUBTYPE_FUNCTION
- **/
-BSON.BSON_BINARY_SUBTYPE_FUNCTION = 1;
-/**
- * Binary Byte Array Type
- *
- * @classconstant BSON_BINARY_SUBTYPE_BYTE_ARRAY
- **/
-BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2;
-/**
- * Binary UUID Type
- *
- * @classconstant BSON_BINARY_SUBTYPE_UUID
- **/
-BSON.BSON_BINARY_SUBTYPE_UUID = 3;
-/**
- * Binary MD5 Type
- *
- * @classconstant BSON_BINARY_SUBTYPE_MD5
- **/
-BSON.BSON_BINARY_SUBTYPE_MD5 = 4;
-/**
- * Binary User Defined Type
- *
- * @classconstant BSON_BINARY_SUBTYPE_USER_DEFINED
- **/
-BSON.BSON_BINARY_SUBTYPE_USER_DEFINED = 128;
-
-/**
- * Calculate the bson size for a passed in Javascript object.
- *
- * @param {Object} object the Javascript object to calculate the BSON byte size for.
- * @param {Boolean} [serializeFunctions] serialize all functions in the object **(default:false)**.
- * @return {Number} returns the number of bytes the BSON object will take up.
- * @api public
- */
-BSON.calculateObjectSize = function calculateObjectSize(object, serializeFunctions) {
-  var totalLength = (4 + 1);
-
-  if(Array.isArray(object)) {
-    for(var i = 0; i < object.length; i++) {
-      totalLength += calculateElement(i.toString(), object[i], serializeFunctions)
-    }
-  } else {
-		// If we have toBSON defined, override the current object
-		if(object.toBSON) {
-			object = object.toBSON();
-		}
-
-		// Calculate size
-    for(var key in object) {
-      totalLength += calculateElement(key, object[key], serializeFunctions)
-    }
-  }
-
-  return totalLength;
-}
-
-/**
- * @ignore
- * @api private
- */
-function calculateElement(name, value, serializeFunctions) {
-  var isBuffer = typeof Buffer !== 'undefined';
-
-  switch(typeof value) {
-    case 'string':
-      return 1 + (!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1 + 4 + (!isBuffer ? numberOfBytes(value) : Buffer.byteLength(value, 'utf8')) + 1;
-    case 'number':
-      if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) {
-        if(value >= BSON.BSON_INT32_MIN && value <= BSON.BSON_INT32_MAX) { // 32 bit
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (4 + 1);
-        } else {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1);
-        }
-      } else {  // 64 bit
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1);
-      }
-    case 'undefined':
-      return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1);
-    case 'boolean':
-      return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1 + 1);
-    case 'object':
-      if(value == null || value instanceof MinKey || value instanceof MaxKey || value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1);
-      } else if(value instanceof ObjectID || value['_bsontype'] == 'ObjectID') {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (12 + 1);
-      } else if(value instanceof Date || isDate(value)) {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1);
-      } else if(typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1 + 4 + 1) + value.length;
-      } else if(value instanceof Long || value instanceof Double || value instanceof Timestamp
-          || value['_bsontype'] == 'Long' || value['_bsontype'] == 'Double' || value['_bsontype'] == 'Timestamp') {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1);
-      } else if(value instanceof Code || value['_bsontype'] == 'Code') {
-        // Calculate size depending on the availability of a scope
-        if(value.scope != null && Object.keys(value.scope).length > 0) {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + 4 + (!isBuffer ? numberOfBytes(value.code.toString()) : Buffer.byteLength(value.code.toString(), 'utf8')) + 1 + BSON.calculateObjectSize(value.scope, serializeFunctions);
-        } else {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + (!isBuffer ? numberOfBytes(value.code.toString()) : Buffer.byteLength(value.code.toString(), 'utf8')) + 1;
-        }
-      } else if(value instanceof Binary || value['_bsontype'] == 'Binary') {
-        // Check what kind of subtype we have
-        if(value.sub_type == Binary.SUBTYPE_BYTE_ARRAY) {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (value.position + 1 + 4 + 1 + 4);
-        } else {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (value.position + 1 + 4 + 1);
-        }
-      } else if(value instanceof Symbol || value['_bsontype'] == 'Symbol') {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + ((!isBuffer ? numberOfBytes(value.value) : Buffer.byteLength(value.value, 'utf8')) + 4 + 1 + 1);
-      } else if(value instanceof DBRef || value['_bsontype'] == 'DBRef') {
-        // Set up correct object for serialization
-        var ordered_values = {
-            '$ref': value.namespace
-          , '$id' : value.oid
-        };
-
-        // Add db reference if it exists
-        if(null != value.db) {
-          ordered_values['$db'] = value.db;
-        }
-
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + BSON.calculateObjectSize(ordered_values, serializeFunctions);
-      } else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + (!isBuffer ? numberOfBytes(value.source) : Buffer.byteLength(value.source, 'utf8')) + 1
-            + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1
-      } else {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + BSON.calculateObjectSize(value, serializeFunctions) + 1;
-      }
-    case 'function':
-      // WTF for 0.4.X where typeof /someregexp/ === 'function'
-      if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]' || String.call(value) == '[object RegExp]') {
-        return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + (!isBuffer ? numberOfBytes(value.source) : Buffer.byteLength(value.source, 'utf8')) + 1
-          + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1
-      } else {
-        if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + 4 + (!isBuffer ? numberOfBytes(value.toString()) : Buffer.byteLength(value.toString(), 'utf8')) + 1 + BSON.calculateObjectSize(value.scope, serializeFunctions);
-        } else if(serializeFunctions) {
-          return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + (!isBuffer ? numberOfBytes(value.toString()) : Buffer.byteLength(value.toString(), 'utf8')) + 1;
-        }
-      }
-  }
-
-  return 0;
-}
-
-/**
- * Serialize a Javascript object using a predefined Buffer and index into the buffer, useful when pre-allocating the space for serialization.
- *
- * @param {Object} object the Javascript object to serialize.
- * @param {Boolean} checkKeys the serializer will check if keys are valid.
- * @param {Buffer} buffer the Buffer you pre-allocated to store the serialized BSON object.
- * @param {Number} index the index in the buffer where we wish to start serializing into.
- * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**.
- * @return {Number} returns the new write index in the Buffer.
- * @api public
- */
-BSON.serializeWithBufferAndIndex = function serializeWithBufferAndIndex(object, checkKeys, buffer, index, serializeFunctions) {
-  // Default setting false
-  serializeFunctions = serializeFunctions == null ? false : serializeFunctions;
-  // Write end information (length of the object)
-  var size = buffer.length;
-  // Write the size of the object
-  buffer[index++] = size & 0xff;
-  buffer[index++] = (size >> 8) & 0xff;
-  buffer[index++] = (size >> 16) & 0xff;
-  buffer[index++] = (size >> 24) & 0xff;
-  return serializeObject(object, checkKeys, buffer, index, serializeFunctions) - 1;
-}
-
-/**
- * @ignore
- * @api private
- */
-var serializeObject = function(object, checkKeys, buffer, index, serializeFunctions) {
-  // Process the object
-  if(Array.isArray(object)) {
-    for(var i = 0; i < object.length; i++) {
-      index = packElement(i.toString(), object[i], checkKeys, buffer, index, serializeFunctions);
-    }
-  } else {
-		// If we have toBSON defined, override the current object
-		if(object.toBSON) {
-			object = object.toBSON();
-		}
-
-		// Serialize the object
-    for(var key in object) {
-      // Check the key and throw error if it's illegal
-      if (key != '$db' && key != '$ref' && key != '$id') {
-        // dollars and dots ok
-        BSON.checkKey(key, !checkKeys);
-      }
-
-      // Pack the element
-      index = packElement(key, object[key], checkKeys, buffer, index, serializeFunctions);
-    }
-  }
-
-  // Write zero
-  buffer[index++] = 0;
-  return index;
-}
-
-var stringToBytes = function(str) {
-  var ch, st, re = [];
-  for (var i = 0; i < str.length; i++ ) {
-    ch = str.charCodeAt(i);  // get char
-    st = [];                 // set up "stack"
-    do {
-      st.push( ch & 0xFF );  // push byte to stack
-      ch = ch >> 8;          // shift value down by 1 byte
-    }
-    while ( ch );
-    // add stack contents to result
-    // done because chars have "wrong" endianness
-    re = re.concat( st.reverse() );
-  }
-  // return an array of bytes
-  return re;
-}
-
-var numberOfBytes = function(str) {
-  var ch, st, re = 0;
-  for (var i = 0; i < str.length; i++ ) {
-    ch = str.charCodeAt(i);  // get char
-    st = [];                 // set up "stack"
-    do {
-      st.push( ch & 0xFF );  // push byte to stack
-      ch = ch >> 8;          // shift value down by 1 byte
-    }
-    while ( ch );
-    // add stack contents to result
-    // done because chars have "wrong" endianness
-    re = re + st.length;
-  }
-  // return an array of bytes
-  return re;
-}
-
-/**
- * @ignore
- * @api private
- */
-var writeToTypedArray = function(buffer, string, index) {
-  var bytes = stringToBytes(string);
-  for(var i = 0; i < bytes.length; i++) {
-    buffer[index + i] = bytes[i];
-  }
-  return bytes.length;
-}
-
-/**
- * @ignore
- * @api private
- */
-var supportsBuffer = typeof Buffer != 'undefined';
-
-/**
- * @ignore
- * @api private
- */
-var packElement = function(name, value, checkKeys, buffer, index, serializeFunctions) {
-  var startIndex = index;
-
-  switch(typeof value) {
-    case 'string':
-      // Encode String type
-      buffer[index++] = BSON.BSON_DATA_STRING;
-      // Number of written bytes
-      var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-      // Encode the name
-      index = index + numberOfWrittenBytes + 1;
-      buffer[index - 1] = 0;
-
-      // Calculate size
-      var size = supportsBuffer ? Buffer.byteLength(value) + 1 : numberOfBytes(value) + 1;
-      // Write the size of the string to buffer
-      buffer[index + 3] = (size >> 24) & 0xff;
-      buffer[index + 2] = (size >> 16) & 0xff;
-      buffer[index + 1] = (size >> 8) & 0xff;
-      buffer[index] = size & 0xff;
-      // Ajust the index
-      index = index + 4;
-      // Write the string
-      supportsBuffer ? buffer.write(value, index, 'utf8') : writeToTypedArray(buffer, value, index);
-      // Update index
-      index = index + size - 1;
-      // Write zero
-      buffer[index++] = 0;
-      // Return index
-      return index;
-    case 'number':
-      // We have an integer value
-      if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) {
-        // If the value fits in 32 bits encode as int, if it fits in a double
-        // encode it as a double, otherwise long
-        if(value >= BSON.BSON_INT32_MIN && value <= BSON.BSON_INT32_MAX) {
-          // Set int type 32 bits or less
-          buffer[index++] = BSON.BSON_DATA_INT;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          // Write the int value
-          buffer[index++] = value & 0xff;
-          buffer[index++] = (value >> 8) & 0xff;
-          buffer[index++] = (value >> 16) & 0xff;
-          buffer[index++] = (value >> 24) & 0xff;
-        } else if(value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) {
-          // Encode as double
-          buffer[index++] = BSON.BSON_DATA_NUMBER;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          // Write float
-          writeIEEE754(buffer, value, index, 'little', 52, 8);
-          // Ajust index
-          index = index + 8;
-        } else {
-          // Set long type
-          buffer[index++] = BSON.BSON_DATA_LONG;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          var longVal = Long.fromNumber(value);
-          var lowBits = longVal.getLowBits();
-          var highBits = longVal.getHighBits();
-          // Encode low bits
-          buffer[index++] = lowBits & 0xff;
-          buffer[index++] = (lowBits >> 8) & 0xff;
-          buffer[index++] = (lowBits >> 16) & 0xff;
-          buffer[index++] = (lowBits >> 24) & 0xff;
-          // Encode high bits
-          buffer[index++] = highBits & 0xff;
-          buffer[index++] = (highBits >> 8) & 0xff;
-          buffer[index++] = (highBits >> 16) & 0xff;
-          buffer[index++] = (highBits >> 24) & 0xff;
-        }
-      } else {
-        // Encode as double
-        buffer[index++] = BSON.BSON_DATA_NUMBER;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Write float
-        writeIEEE754(buffer, value, index, 'little', 52, 8);
-        // Ajust index
-        index = index + 8;
-      }
-
-      return index;
-    case 'undefined':
-      // Set long type
-      buffer[index++] = BSON.BSON_DATA_NULL;
-      // Number of written bytes
-      var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-      // Encode the name
-      index = index + numberOfWrittenBytes + 1;
-      buffer[index - 1] = 0;
-      return index;
-    case 'boolean':
-      // Write the type
-      buffer[index++] = BSON.BSON_DATA_BOOLEAN;
-      // Number of written bytes
-      var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-      // Encode the name
-      index = index + numberOfWrittenBytes + 1;
-      buffer[index - 1] = 0;
-      // Encode the boolean value
-      buffer[index++] = value ? 1 : 0;
-      return index;
-    case 'object':
-      if(value === null || value instanceof MinKey || value instanceof MaxKey
-          || value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') {
-        // Write the type of either min or max key
-        if(value === null) {
-          buffer[index++] = BSON.BSON_DATA_NULL;
-        } else if(value instanceof MinKey) {
-          buffer[index++] = BSON.BSON_DATA_MIN_KEY;
-        } else {
-          buffer[index++] = BSON.BSON_DATA_MAX_KEY;
-        }
-
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        return index;
-      } else if(value instanceof ObjectID || value['_bsontype'] == 'ObjectID') {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_OID;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-
-        // Write objectid
-        supportsBuffer ? buffer.write(value.id, index, 'binary') : writeToTypedArray(buffer, value.id, index);
-        // Ajust index
-        index = index + 12;
-        return index;
-      } else if(value instanceof Date || isDate(value)) {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_DATE;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-
-        // Write the date
-        var dateInMilis = Long.fromNumber(value.getTime());
-        var lowBits = dateInMilis.getLowBits();
-        var highBits = dateInMilis.getHighBits();
-        // Encode low bits
-        buffer[index++] = lowBits & 0xff;
-        buffer[index++] = (lowBits >> 8) & 0xff;
-        buffer[index++] = (lowBits >> 16) & 0xff;
-        buffer[index++] = (lowBits >> 24) & 0xff;
-        // Encode high bits
-        buffer[index++] = highBits & 0xff;
-        buffer[index++] = (highBits >> 8) & 0xff;
-        buffer[index++] = (highBits >> 16) & 0xff;
-        buffer[index++] = (highBits >> 24) & 0xff;
-        return index;
-      } else if(typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_BINARY;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Get size of the buffer (current write point)
-        var size = value.length;
-        // Write the size of the string to buffer
-        buffer[index++] = size & 0xff;
-        buffer[index++] = (size >> 8) & 0xff;
-        buffer[index++] = (size >> 16) & 0xff;
-        buffer[index++] = (size >> 24) & 0xff;
-        // Write the default subtype
-        buffer[index++] = BSON.BSON_BINARY_SUBTYPE_DEFAULT;
-        // Copy the content form the binary field to the buffer
-        value.copy(buffer, index, 0, size);
-        // Adjust the index
-        index = index + size;
-        return index;
-      } else if(value instanceof Long || value instanceof Timestamp || value['_bsontype'] == 'Long' || value['_bsontype'] == 'Timestamp') {
-        // Write the type
-        buffer[index++] = value instanceof Long ? BSON.BSON_DATA_LONG : BSON.BSON_DATA_TIMESTAMP;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Write the date
-        var lowBits = value.getLowBits();
-        var highBits = value.getHighBits();
-        // Encode low bits
-        buffer[index++] = lowBits & 0xff;
-        buffer[index++] = (lowBits >> 8) & 0xff;
-        buffer[index++] = (lowBits >> 16) & 0xff;
-        buffer[index++] = (lowBits >> 24) & 0xff;
-        // Encode high bits
-        buffer[index++] = highBits & 0xff;
-        buffer[index++] = (highBits >> 8) & 0xff;
-        buffer[index++] = (highBits >> 16) & 0xff;
-        buffer[index++] = (highBits >> 24) & 0xff;
-        return index;
-      } else if(value instanceof Double || value['_bsontype'] == 'Double') {
-        // Encode as double
-        buffer[index++] = BSON.BSON_DATA_NUMBER;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Write float
-        writeIEEE754(buffer, value, index, 'little', 52, 8);
-        // Ajust index
-        index = index + 8;
-        return index;
-      } else if(value instanceof Code || value['_bsontype'] == 'Code') {
-        if(value.scope != null && Object.keys(value.scope).length > 0) {
-          // Write the type
-          buffer[index++] = BSON.BSON_DATA_CODE_W_SCOPE;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          // Calculate the scope size
-          var scopeSize = BSON.calculateObjectSize(value.scope, serializeFunctions);
-          // Function string
-          var functionString = value.code.toString();
-          // Function Size
-          var codeSize = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1;
-
-          // Calculate full size of the object
-          var totalSize = 4 + codeSize + scopeSize + 4;
-
-          // Write the total size of the object
-          buffer[index++] = totalSize & 0xff;
-          buffer[index++] = (totalSize >> 8) & 0xff;
-          buffer[index++] = (totalSize >> 16) & 0xff;
-          buffer[index++] = (totalSize >> 24) & 0xff;
-
-          // Write the size of the string to buffer
-          buffer[index++] = codeSize & 0xff;
-          buffer[index++] = (codeSize >> 8) & 0xff;
-          buffer[index++] = (codeSize >> 16) & 0xff;
-          buffer[index++] = (codeSize >> 24) & 0xff;
-
-          // Write the string
-          supportsBuffer ? buffer.write(functionString, index, 'utf8') : writeToTypedArray(buffer, functionString, index);
-          // Update index
-          index = index + codeSize - 1;
-          // Write zero
-          buffer[index++] = 0;
-          // Serialize the scope object
-          var scopeObjectBuffer = supportsBuffer ? new Buffer(scopeSize) : new Uint8Array(new ArrayBuffer(scopeSize));
-          // Execute the serialization into a seperate buffer
-          serializeObject(value.scope, checkKeys, scopeObjectBuffer, 0, serializeFunctions);
-
-          // Adjusted scope Size (removing the header)
-          var scopeDocSize = scopeSize;
-          // Write scope object size
-          buffer[index++] = scopeDocSize & 0xff;
-          buffer[index++] = (scopeDocSize >> 8) & 0xff;
-          buffer[index++] = (scopeDocSize >> 16) & 0xff;
-          buffer[index++] = (scopeDocSize >> 24) & 0xff;
-
-          // Write the scopeObject into the buffer
-          supportsBuffer ? scopeObjectBuffer.copy(buffer, index, 0, scopeSize) : buffer.set(scopeObjectBuffer, index);
-          // Adjust index, removing the empty size of the doc (5 bytes 0000000005)
-          index = index + scopeDocSize - 5;
-          // Write trailing zero
-          buffer[index++] = 0;
-          return index
-        } else {
-          buffer[index++] = BSON.BSON_DATA_CODE;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          // Function string
-          var functionString = value.code.toString();
-          // Function Size
-          var size = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1;
-          // Write the size of the string to buffer
-          buffer[index++] = size & 0xff;
-          buffer[index++] = (size >> 8) & 0xff;
-          buffer[index++] = (size >> 16) & 0xff;
-          buffer[index++] = (size >> 24) & 0xff;
-          // Write the string
-          supportsBuffer ? buffer.write(functionString, index, 'utf8') : writeToTypedArray(buffer, functionString, index);
-          // Update index
-          index = index + size - 1;
-          // Write zero
-          buffer[index++] = 0;
-          return index;
-        }
-      } else if(value instanceof Binary || value['_bsontype'] == 'Binary') {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_BINARY;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Extract the buffer
-        var data = value.value(true);
-        // Calculate size
-        var size = value.position;
-        // Write the size of the string to buffer
-        buffer[index++] = size & 0xff;
-        buffer[index++] = (size >> 8) & 0xff;
-        buffer[index++] = (size >> 16) & 0xff;
-        buffer[index++] = (size >> 24) & 0xff;
-        // Write the subtype to the buffer
-        buffer[index++] = value.sub_type;
-
-        // If we have binary type 2 the 4 first bytes are the size
-        if(value.sub_type == Binary.SUBTYPE_BYTE_ARRAY) {
-          buffer[index++] = size & 0xff;
-          buffer[index++] = (size >> 8) & 0xff;
-          buffer[index++] = (size >> 16) & 0xff;
-          buffer[index++] = (size >> 24) & 0xff;
-        }
-
-        // Write the data to the object
-        supportsBuffer ? data.copy(buffer, index, 0, value.position) : buffer.set(data, index);
-        // Ajust index
-        index = index + value.position;
-        return index;
-      } else if(value instanceof Symbol || value['_bsontype'] == 'Symbol') {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_SYMBOL;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Calculate size
-        var size = supportsBuffer ? Buffer.byteLength(value.value) + 1 : numberOfBytes(value.value) + 1;
-        // Write the size of the string to buffer
-        buffer[index++] = size & 0xff;
-        buffer[index++] = (size >> 8) & 0xff;
-        buffer[index++] = (size >> 16) & 0xff;
-        buffer[index++] = (size >> 24) & 0xff;
-        // Write the string
-        buffer.write(value.value, index, 'utf8');
-        // Update index
-        index = index + size - 1;
-        // Write zero
-        buffer[index++] = 0x00;
-        return index;
-      } else if(value instanceof DBRef || value['_bsontype'] == 'DBRef') {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_OBJECT;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-        // Set up correct object for serialization
-        var ordered_values = {
-            '$ref': value.namespace
-          , '$id' : value.oid
-        };
-
-        // Add db reference if it exists
-        if(null != value.db) {
-          ordered_values['$db'] = value.db;
-        }
-
-        // Message size
-        var size = BSON.calculateObjectSize(ordered_values, serializeFunctions);
-        // Serialize the object
-        var endIndex = BSON.serializeWithBufferAndIndex(ordered_values, checkKeys, buffer, index, serializeFunctions);
-        // Write the size of the string to buffer
-        buffer[index++] = size & 0xff;
-        buffer[index++] = (size >> 8) & 0xff;
-        buffer[index++] = (size >> 16) & 0xff;
-        buffer[index++] = (size >> 24) & 0xff;
-        // Write zero for object
-        buffer[endIndex++] = 0x00;
-        // Return the end index
-        return endIndex;
-      } else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_REGEXP;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-
-        // Write the regular expression string
-        supportsBuffer ? buffer.write(value.source, index, 'utf8') : writeToTypedArray(buffer, value.source, index);
-        // Adjust the index
-        index = index + (supportsBuffer ? Buffer.byteLength(value.source) : numberOfBytes(value.source));
-        // Write zero
-        buffer[index++] = 0x00;
-        // Write the parameters
-        if(value.global) buffer[index++] = 0x73; // s
-        if(value.ignoreCase) buffer[index++] = 0x69; // i
-        if(value.multiline) buffer[index++] = 0x6d; // m
-        // Add ending zero
-        buffer[index++] = 0x00;
-        return index;
-      } else {
-        // Write the type
-        buffer[index++] = Array.isArray(value) ? BSON.BSON_DATA_ARRAY : BSON.BSON_DATA_OBJECT;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Adjust the index
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-	      var endIndex = serializeObject(value, checkKeys, buffer, index + 4, serializeFunctions);
-        // Write size
-        var size = endIndex - index;
-        // Write the size of the string to buffer
-        buffer[index++] = size & 0xff;
-        buffer[index++] = (size >> 8) & 0xff;
-        buffer[index++] = (size >> 16) & 0xff;
-        buffer[index++] = (size >> 24) & 0xff;
-        return endIndex;
-      }
-    case 'function':
-      // WTF for 0.4.X where typeof /someregexp/ === 'function'
-      if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]' || String.call(value) == '[object RegExp]') {
-        // Write the type
-        buffer[index++] = BSON.BSON_DATA_REGEXP;
-        // Number of written bytes
-        var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-        // Encode the name
-        index = index + numberOfWrittenBytes + 1;
-        buffer[index - 1] = 0;
-
-        // Write the regular expression string
-        buffer.write(value.source, index, 'utf8');
-        // Adjust the index
-        index = index + (supportsBuffer ? Buffer.byteLength(value.source) : numberOfBytes(value.source));
-        // Write zero
-        buffer[index++] = 0x00;
-        // Write the parameters
-        if(value.global) buffer[index++] = 0x73; // s
-        if(value.ignoreCase) buffer[index++] = 0x69; // i
-        if(value.multiline) buffer[index++] = 0x6d; // m
-        // Add ending zero
-        buffer[index++] = 0x00;
-        return index;
-      } else {
-        if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) {
-          // Write the type
-          buffer[index++] = BSON.BSON_DATA_CODE_W_SCOPE;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          // Calculate the scope size
-          var scopeSize = BSON.calculateObjectSize(value.scope, serializeFunctions);
-          // Function string
-          var functionString = value.toString();
-          // Function Size
-          var codeSize = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1;
-
-          // Calculate full size of the object
-          var totalSize = 4 + codeSize + scopeSize;
-
-          // Write the total size of the object
-          buffer[index++] = totalSize & 0xff;
-          buffer[index++] = (totalSize >> 8) & 0xff;
-          buffer[index++] = (totalSize >> 16) & 0xff;
-          buffer[index++] = (totalSize >> 24) & 0xff;
-
-          // Write the size of the string to buffer
-          buffer[index++] = codeSize & 0xff;
-          buffer[index++] = (codeSize >> 8) & 0xff;
-          buffer[index++] = (codeSize >> 16) & 0xff;
-          buffer[index++] = (codeSize >> 24) & 0xff;
-
-          // Write the string
-          supportsBuffer ? buffer.write(functionString, index, 'utf8') : writeToTypedArray(buffer, functionString, index);
-          // Update index
-          index = index + codeSize - 1;
-          // Write zero
-          buffer[index++] = 0;
-          // Serialize the scope object
-          var scopeObjectBuffer = new Buffer(scopeSize);
-          // Execute the serialization into a seperate buffer
-          serializeObject(value.scope, checkKeys, scopeObjectBuffer, 0, serializeFunctions);
-
-          // Adjusted scope Size (removing the header)
-          var scopeDocSize = scopeSize - 4;
-          // Write scope object size
-          buffer[index++] = scopeDocSize & 0xff;
-          buffer[index++] = (scopeDocSize >> 8) & 0xff;
-          buffer[index++] = (scopeDocSize >> 16) & 0xff;
-          buffer[index++] = (scopeDocSize >> 24) & 0xff;
-
-          // Write the scopeObject into the buffer
-          scopeObjectBuffer.copy(buffer, index, 0, scopeSize);
-
-          // Adjust index, removing the empty size of the doc (5 bytes 0000000005)
-          index = index + scopeDocSize - 5;
-          // Write trailing zero
-          buffer[index++] = 0;
-          return index
-        } else if(serializeFunctions) {
-          buffer[index++] = BSON.BSON_DATA_CODE;
-          // Number of written bytes
-          var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index);
-          // Encode the name
-          index = index + numberOfWrittenBytes + 1;
-          buffer[index - 1] = 0;
-          // Function string
-          var functionString = value.toString();
-          // Function Size
-          var size = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1;
-          // Write the size of the string to buffer
-          buffer[index++] = size & 0xff;
-          buffer[index++] = (size >> 8) & 0xff;
-          buffer[index++] = (size >> 16) & 0xff;
-          buffer[index++] = (size >> 24) & 0xff;
-          // Write the string
-          supportsBuffer ? buffer.write(functionString, index, 'utf8') : writeToTypedArray(buffer, functionString, index);
-          // Update index
-          index = index + size - 1;
-          // Write zero
-          buffer[index++] = 0;
-          return index;
-        }
-      }
-  }
-
-  // If no value to serialize
-  return index;
-}
-
-/**
- * Serialize a Javascript object.
- *
- * @param {Object} object the Javascript object to serialize.
- * @param {Boolean} checkKeys the serializer will check if keys are valid.
- * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**.
- * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**.
- * @return {Buffer} returns the Buffer object containing the serialized object.
- * @api public
- */
-BSON.serialize = function(object, checkKeys, asBuffer, serializeFunctions) {
-  // Throw error if we are trying serialize an illegal type
-  if(object == null || typeof object != 'object' || Array.isArray(object)) 
-    throw new Error("Only javascript objects supported");
-  
-  // Emoty target buffer
-  var buffer = null;
-  // Calculate the size of the object
-  var size = BSON.calculateObjectSize(object, serializeFunctions);
-  // Fetch the best available type for storing the binary data
-  if(buffer = typeof Buffer != 'undefined') {
-    buffer = new Buffer(size);
-    asBuffer = true;
-  } else if(typeof Uint8Array != 'undefined') {
-    buffer = new Uint8Array(new ArrayBuffer(size));
-  } else {
-    buffer = new Array(size);
-  }
-
-  // If asBuffer is false use typed arrays
-  BSON.serializeWithBufferAndIndex(object, checkKeys, buffer, 0, serializeFunctions);
-  return buffer;
-}
-
-/**
- * Contains the function cache if we have that enable to allow for avoiding the eval step on each deserialization, comparison is by md5
- *
- * @ignore
- * @api private
- */
-var functionCache = BSON.functionCache = {};
-
-/**
- * Crc state variables shared by function
- *
- * @ignore
- * @api private
- */
-var table = [0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 
 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0
 xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0x
 B3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D];
-
-/**
- * CRC32 hash method, Fast and enough versitility for our usage
- *
- * @ignore
- * @api private
- */
-var crc32 =  function(string, start, end) {
-  var crc = 0
-  var x = 0;
-  var y = 0;
-  crc = crc ^ (-1);
-
-  for(var i = start, iTop = end; i < iTop;i++) {
-  	y = (crc ^ string[i]) & 0xFF;
-    x = table[y];
-  	crc = (crc >>> 8) ^ x;
-  }
-
-  return crc ^ (-1);
-}
-
-/**
- * Deserialize stream data as BSON documents.
- *
- * Options
- *  - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized.
- *  - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse.
- *  - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function.
- *  - **promoteLongs** {Boolean, default:true}, when deserializing a Long will fit it into a Number if it's smaller than 53 bits
- *
- * @param {Buffer} data the buffer containing the serialized set of BSON documents.
- * @param {Number} startIndex the start index in the data Buffer where the deserialization is to start.
- * @param {Number} numberOfDocuments number of documents to deserialize.
- * @param {Array} documents an array where to store the deserialized documents.
- * @param {Number} docStartIndex the index in the documents array from where to start inserting documents.
- * @param {Object} [options] additional options used for the deserialization.
- * @return {Number} returns the next index in the buffer after deserialization **x** numbers of documents.
- * @api public
- */
-BSON.deserializeStream = function(data, startIndex, numberOfDocuments, documents, docStartIndex, options) {
-  // if(numberOfDocuments !== documents.length) throw new Error("Number of expected results back is less than the number of documents");
-  options = options != null ? options : {};
-  var index = startIndex;
-  // Loop over all documents
-  for(var i = 0; i < numberOfDocuments; i++) {
-    // Find size of the document
-    var size = data[index] | data[index + 1] << 8 | data[index + 2] << 16 | data[index + 3] << 24;
-    // Update options with index
-    options['index'] = index;
-    // Parse the document at this point
-    documents[docStartIndex + i] = BSON.deserialize(data, options);
-    // Adjust index by the document size
-    index = index + size;
-  }
-
-  // Return object containing end index of parsing and list of documents
-  return index;
-}
-
-/**
- * Ensure eval is isolated.
- *
- * @ignore
- * @api private
- */
-var isolateEvalWithHash = function(functionCache, hash, functionString, object) {
-  // Contains the value we are going to set
-  var value = null;
-
-  // Check for cache hit, eval if missing and return cached function
-  if(functionCache[hash] == null) {
-    eval("value = " + functionString);
-    functionCache[hash] = value;
-  }
-  // Set the object
-  return functionCache[hash].bind(object);
-}
-
-/**
- * Ensure eval is isolated.
- *
- * @ignore
- * @api private
- */
-var isolateEval = function(functionString) {
-  // Contains the value we are going to set
-  var value = null;
-  // Eval the function
-  eval("value = " + functionString);
-  return value;
-}
-
-/**
- * Convert Uint8Array to String
- *
- * @ignore
- * @api private
- */
-var convertUint8ArrayToUtf8String = function(byteArray, startIndex, endIndex) {
-  return BinaryParser.decode_utf8(convertArraytoUtf8BinaryString(byteArray, startIndex, endIndex));
-}
-
-var convertArraytoUtf8BinaryString = function(byteArray, startIndex, endIndex) {
-  var result = "";
-  for(var i = startIndex; i < endIndex; i++) {
-    result = result + String.fromCharCode(byteArray[i]);
-  }
-
-  return result;
-};
-
-/**
- * Deserialize data as BSON.
- *
- * Options
- *  - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized.
- *  - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse.
- *  - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function.
- *  - **promoteLongs** {Boolean, default:true}, when deserializing a Long will fit it into a Number if it's smaller than 53 bits
- *
- * @param {Buffer} buffer the buffer containing the serialized set of BSON documents.
- * @param {Object} [options] additional options used for the deserialization.
- * @param {Boolean} [isArray] ignore used for recursive parsing.
- * @return {Object} returns the deserialized Javascript Object.
- * @api public
- */
-BSON.deserialize = function(buffer, options, isArray) {
-  // Options
-  options = options == null ? {} : options;
-  var evalFunctions = options['evalFunctions'] == null ? false : options['evalFunctions'];
-  var cacheFunctions = options['cacheFunctions'] == null ? false : options['cacheFunctions'];
-  var cacheFunctionsCrc32 = options['cacheFunctionsCrc32'] == null ? false : options['cacheFunctionsCrc32'];
-  var promoteLongs = options['promoteLongs'] || true;
-
-  // Validate that we have at least 4 bytes of buffer
-  if(buffer.length < 5) throw new Error("corrupt bson message < 5 bytes long");
-
-  // Set up index
-  var index = typeof options['index'] == 'number' ? options['index'] : 0;
-  // Reads in a C style string
-  var readCStyleString = function() {
-    // Get the start search index
-    var i = index;
-    // Locate the end of the c string
-    while(buffer[i] !== 0x00) { i++ }
-    // Grab utf8 encoded string
-    var string = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, i) : convertUint8ArrayToUtf8String(buffer, index, i);
-    // Update index position
-    index = i + 1;
-    // Return string
-    return string;
-  }
-
-  // Create holding object
-  var object = isArray ? [] : {};
-
-  // Read the document size
-  var size = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-
-  // Ensure buffer is valid size
-  if(size < 5 || size > buffer.length) throw new Error("corrupt bson message");
-
-  // While we have more left data left keep parsing
-  while(true) {
-    // Read the type
-    var elementType = buffer[index++];
-    // If we get a zero it's the last byte, exit
-    if(elementType == 0) break;
-    // Read the name of the field
-    var name = readCStyleString();
-    // Switch on the type
-    switch(elementType) {
-      case BSON.BSON_DATA_OID:
-        var string = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('binary', index, index + 12) : convertArraytoUtf8BinaryString(buffer, index, index + 12);
-        // Decode the oid
-        object[name] = new ObjectID(string);
-        // Update index
-        index = index + 12;
-        break;
-      case BSON.BSON_DATA_STRING:
-        // Read the content of the field
-        var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Add string to object
-        object[name] = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1);
-        // Update parse index position
-        index = index + stringSize;
-        break;
-      case BSON.BSON_DATA_INT:
-        // Decode the 32bit value
-        object[name] = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        break;
-      case BSON.BSON_DATA_NUMBER:
-        // Decode the double value
-        object[name] = readIEEE754(buffer, index, 'little', 52, 8);
-        // Update the index
-        index = index + 8;
-        break;
-      case BSON.BSON_DATA_DATE:
-        // Unpack the low and high bits
-        var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Set date object
-        object[name] = new Date(new Long(lowBits, highBits).toNumber());
-        break;
-      case BSON.BSON_DATA_BOOLEAN:
-        // Parse the boolean value
-        object[name] = buffer[index++] == 1;
-        break;
-      case BSON.BSON_DATA_NULL:
-        // Parse the boolean value
-        object[name] = null;
-        break;
-      case BSON.BSON_DATA_BINARY:
-        // Decode the size of the binary blob
-        var binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Decode the subtype
-        var subType = buffer[index++];
-        // Decode as raw Buffer object if options specifies it
-        if(buffer['slice'] != null) {
-          // If we have subtype 2 skip the 4 bytes for the size
-          if(subType == Binary.SUBTYPE_BYTE_ARRAY) {
-            binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-          }
-          // Slice the data
-          object[name] = new Binary(buffer.slice(index, index + binarySize), subType);
-        } else {
-          var _buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(binarySize)) : new Array(binarySize);
-          // If we have subtype 2 skip the 4 bytes for the size
-          if(subType == Binary.SUBTYPE_BYTE_ARRAY) {
-            binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-          }
-          // Copy the data
-          for(var i = 0; i < binarySize; i++) {
-            _buffer[i] = buffer[index + i];
-          }
-          // Create the binary object
-          object[name] = new Binary(_buffer, subType);
-        }
-        // Update the index
-        index = index + binarySize;
-        break;
-      case BSON.BSON_DATA_ARRAY:
-        options['index'] = index;
-        // Decode the size of the array document
-        var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24;
-        // Set the array to the object
-        object[name] = BSON.deserialize(buffer, options, true);
-        // Adjust the index
-        index = index + objectSize;
-        break;
-      case BSON.BSON_DATA_OBJECT:
-        options['index'] = index;
-        // Decode the size of the object document
-        var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24;
-        // Set the array to the object
-        object[name] = BSON.deserialize(buffer, options, false);
-        // Adjust the index
-        index = index + objectSize;
-        break;
-      case BSON.BSON_DATA_REGEXP:
-        // Create the regexp
-        var source = readCStyleString();
-        var regExpOptions = readCStyleString();
-        // For each option add the corresponding one for javascript
-        var optionsArray = new Array(regExpOptions.length);
-
-        // Parse options
-        for(var i = 0; i < regExpOptions.length; i++) {
-          switch(regExpOptions[i]) {
-            case 'm':
-              optionsArray[i] = 'm';
-              break;
-            case 's':
-              optionsArray[i] = 'g';
-              break;
-            case 'i':
-              optionsArray[i] = 'i';
-              break;
-          }
-        }
-
-        object[name] = new RegExp(source, optionsArray.join(''));
-        break;
-      case BSON.BSON_DATA_LONG:
-        // Unpack the low and high bits
-        var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Create long object
-        var long = new Long(lowBits, highBits); 
-        // Promote the long if possible
-        if(promoteLongs) {
-          object[name] = long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG) ? long.toNumber() : long;
-        } else {
-          object[name] = long;
-        }
-        break;
-      case BSON.BSON_DATA_SYMBOL:
-        // Read the content of the field
-        var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Add string to object
-        object[name] = new Symbol(buffer.toString('utf8', index, index + stringSize - 1));
-        // Update parse index position
-        index = index + stringSize;
-        break;
-      case BSON.BSON_DATA_TIMESTAMP:
-        // Unpack the low and high bits
-        var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Set the object
-        object[name] = new Timestamp(lowBits, highBits);
-        break;
-      case BSON.BSON_DATA_MIN_KEY:
-        // Parse the object
-        object[name] = new MinKey();
-        break;
-      case BSON.BSON_DATA_MAX_KEY:
-        // Parse the object
-        object[name] = new MaxKey();
-        break;
-      case BSON.BSON_DATA_CODE:
-        // Read the content of the field
-        var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Function string
-        var functionString = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1);
-
-        // If we are evaluating the functions
-        if(evalFunctions) {
-          // Contains the value we are going to set
-          var value = null;
-          // If we have cache enabled let's look for the md5 of the function in the cache
-          if(cacheFunctions) {
-            var hash = cacheFunctionsCrc32 ? crc32(functionString) : functionString;
-            // Got to do this to avoid V8 deoptimizing the call due to finding eval
-            object[name] = isolateEvalWithHash(functionCache, hash, functionString, object);
-          } else {
-            // Set directly
-            object[name] = isolateEval(functionString);
-          }
-        } else {
-          object[name]  = new Code(functionString, {});
-        }
-
-        // Update parse index position
-        index = index + stringSize;
-        break;
-      case BSON.BSON_DATA_CODE_W_SCOPE:
-        // Read the content of the field
-        var totalSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
-        // Javascript function
-        var functionString = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1);
-        // Update parse index position
-        index = index + stringSize;
-        // Parse the element
-        options['index'] = index;
-        // Decode the size of the object document
-        var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24;
-        // Decode the scope object
-        var scopeObject = BSON.deserialize(buffer, options, false);
-        // Adjust the index
-        index = index + objectSize;
-
-        // If we are evaluating the functions
-        if(evalFunctions) {
-          // Contains the value we are going to set
-          var value = null;
-          // If we have cache enabled let's look for the md5 of the function in the cache
-          if(cacheFunctions) {
-            var hash = cacheFunctionsCrc32 ? crc32(functionString) : functionString;
-            // Got to do this to avoid V8 deoptimizing the call due to finding eval
-            object[name] = isolateEvalWithHash(functionCache, hash, functionString, object);
-          } else {
-            // Set directly
-            object[name] = isolateEval(functionString);
-          }
-
-          // Set the scope o

<TRUNCATED>


[36/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/History.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/History.md b/web/demos/package/node_modules/express/History.md
deleted file mode 100644
index 1166646..0000000
--- a/web/demos/package/node_modules/express/History.md
+++ /dev/null
@@ -1,1183 +0,0 @@
-
-3.3.4 / 2013-07-08 
-==================
-
- * update send and connect
-
-3.3.3 / 2013-07-04 
-==================
-
- * update connect
-
-3.3.2 / 2013-07-03 
-==================
-
- * update connect
- * update send
- * remove .version export
-
-3.3.1 / 2013-06-27 
-==================
-
- * update connect
-
-3.3.0 / 2013-06-26 
-==================
-
- * update connect
- * add support for multiple X-Forwarded-Proto values. Closes #1646
- * change: remove charset from json responses. Closes #1631
- * change: return actual booleans from req.accept* functions
- * fix jsonp callback array throw
-
-3.2.6 / 2013-06-02 
-==================
-
- * update connect
-
-3.2.5 / 2013-05-21 
-==================
-
- * update connect
- * update node-cookie
- * add: throw a meaningful error when there is no default engine
- * change generation of ETags with res.send() to GET requests only. Closes #1619
-
-3.2.4 / 2013-05-09 
-==================
-  
-  * fix `req.subdomains` when no Host is present
-  * fix `req.host` when no Host is present, return undefined
-
-3.2.3 / 2013-05-07 
-==================
-
-  * update connect / qs
-
-3.2.2 / 2013-05-03 
-==================
-
-  * update qs
-
-3.2.1 / 2013-04-29 
-==================
-
-  * add app.VERB() paths array deprecation warning
-  * update connect
-  * update qs and remove all ~ semver crap
-  * fix: accept number as value of Signed Cookie
-
-3.2.0 / 2013-04-15 
-==================
-
-  * add "view" constructor setting to override view behaviour
-  * add req.acceptsEncoding(name)
-  * add req.acceptedEncodings
-  * revert cookie signature change causing session race conditions
-  * fix sorting of Accept values of the same quality  
-
-3.1.2 / 2013-04-12 
-==================
-
-  * add support for custom Accept parameters
-  * update cookie-signature
-
-3.1.1 / 2013-04-01 
-==================
-
-  * add X-Forwarded-Host support to `req.host`
-  * fix relative redirects  
-  * update mkdirp 
-  * update buffer-crc32
-  * remove legacy app.configure() method from app template.
-
-3.1.0 / 2013-01-25
-==================
-
-  * add support for leading "." in "view engine" setting
-  * add array support to `res.set()`
-  * add node 0.8.x to travis.yml
-  * add "subdomain offset" setting for tweaking `req.subdomains`
-  * add `res.location(url)` implementing `res.redirect()`-like setting of Location
-  * use app.get() for x-powered-by setting for inheritance
-  * fix colons in passwords for `req.auth`
-
-3.0.6 / 2013-01-04
-==================
-
-  * add http verb methods to Router
-  * update connect
-  * fix mangling of the `res.cookie()` options object
-  * fix jsonp whitespace escape. Closes #1132
-
-3.0.5 / 2012-12-19
-==================
-
-  * add throwing when a non-function is passed to a route
-  * fix: explicitly remove Transfer-Encoding header from 204 and 304 responses
-  * revert "add 'etag' option"
-
-3.0.4 / 2012-12-05
-==================
-
-  * add 'etag' option to disable `res.send()` Etags
-  * add escaping of urls in text/plain in `res.redirect()`
-    for old browsers interpreting as html
-  * change crc32 module for a more liberal license
-  * update connect
-
-3.0.3 / 2012-11-13
-==================
-
-  * update connect
-  * update cookie module
-  * fix cookie max-age
-
-3.0.2 / 2012-11-08
-==================
-
-  * add OPTIONS to cors example. Closes #1398
-  * fix route chaining regression. Closes #1397
-
-3.0.1 / 2012-11-01
-==================
-
-  * update connect
-
-3.0.0 / 2012-10-23
-==================
-
-  * add `make clean`
-  * add "Basic" check to req.auth
-  * add `req.auth` test coverage
-  * add cb && cb(payload) to `res.jsonp()`. Closes #1374
-  * add backwards compat for `res.redirect()` status. Closes #1336
-  * add support for `res.json()` to retain previously defined Content-Types. Closes #1349
-  * update connect
-  * change `res.redirect()` to utilize a pathname-relative Location again. Closes #1382
-  * remove non-primitive string support for `res.send()`
-  * fix view-locals example. Closes #1370
-  * fix route-separation example
-
-3.0.0rc5 / 2012-09-18
-==================
-
-  * update connect
-  * add redis search example
-  * add static-files example
-  * add "x-powered-by" setting (`app.disable('x-powered-by')`)
-  * add "application/octet-stream" redirect Accept test case. Closes #1317
-
-3.0.0rc4 / 2012-08-30
-==================
-
-  * add `res.jsonp()`. Closes #1307
-  * add "verbose errors" option to error-pages example
-  * add another route example to express(1) so people are not so confused
-  * add redis online user activity tracking example
-  * update connect dep
-  * fix etag quoting. Closes #1310
-  * fix error-pages 404 status
-  * fix jsonp callback char restrictions
-  * remove old OPTIONS default response
-
-3.0.0rc3 / 2012-08-13
-==================
-
-  * update connect dep
-  * fix signed cookies to work with `connect.cookieParser()` ("s:" prefix was missing) [tnydwrds]
-  * fix `res.render()` clobbering of "locals"
-
-3.0.0rc2 / 2012-08-03
-==================
-
-  * add CORS example
-  * update connect dep
-  * deprecate `.createServer()` & remove old stale examples
-  * fix: escape `res.redirect()` link
-  * fix vhost example
-
-3.0.0rc1 / 2012-07-24
-==================
-
-  * add more examples to view-locals
-  * add scheme-relative redirects (`res.redirect("//foo.com")`) support
-  * update cookie dep
-  * update connect dep
-  * update send dep
-  * fix `express(1)` -h flag, use -H for hogan. Closes #1245
-  * fix `res.sendfile()` socket error handling regression
-
-3.0.0beta7 / 2012-07-16
-==================
-
-  * update connect dep for `send()` root normalization regression
-
-3.0.0beta6 / 2012-07-13
-==================
-
-  * add `err.view` property for view errors. Closes #1226
-  * add "jsonp callback name" setting
-  * add support for "/foo/:bar*" non-greedy matches
-  * change `res.sendfile()` to use `send()` module
-  * change `res.send` to use "response-send" module
-  * remove `app.locals.use` and `res.locals.use`, use regular middleware
-
-3.0.0beta5 / 2012-07-03
-==================
-
-  * add "make check" support
-  * add route-map example
-  * add `res.json(obj, status)` support back for BC
-  * add "methods" dep, remove internal methods module
-  * update connect dep
-  * update auth example to utilize cores pbkdf2
-  * updated tests to use "supertest"
-
-3.0.0beta4 / 2012-06-25
-==================
-
-  * Added `req.auth`
-  * Added `req.range(size)`
-  * Added `res.links(obj)`
-  * Added `res.send(body, status)` support back for backwards compat
-  * Added `.default()` support to `res.format()`
-  * Added 2xx / 304 check to `req.fresh`
-  * Revert "Added + support to the router"
-  * Fixed `res.send()` freshness check, respect res.statusCode
-
-3.0.0beta3 / 2012-06-15
-==================
-
-  * Added hogan `--hjs` to express(1) [nullfirm]
-  * Added another example to content-negotiation
-  * Added `fresh` dep
-  * Changed: `res.send()` always checks freshness
-  * Fixed: expose connects mime module. Cloases #1165
-
-3.0.0beta2 / 2012-06-06
-==================
-
-  * Added `+` support to the router
-  * Added `req.host`
-  * Changed `req.param()` to check route first
-  * Update connect dep
-
-3.0.0beta1 / 2012-06-01
-==================
-
-  * Added `res.format()` callback to override default 406 behaviour
-  * Fixed `res.redirect()` 406. Closes #1154
-
-3.0.0alpha5 / 2012-05-30
-==================
-
-  * Added `req.ip`
-  * Added `{ signed: true }` option to `res.cookie()`
-  * Removed `res.signedCookie()`
-  * Changed: dont reverse `req.ips`
-  * Fixed "trust proxy" setting check for `req.ips`
-
-3.0.0alpha4 / 2012-05-09
-==================
-
-  * Added: allow `[]` in jsonp callback. Closes #1128
-  * Added `PORT` env var support in generated template. Closes #1118 [benatkin]
-  * Updated: connect 2.2.2
-
-3.0.0alpha3 / 2012-05-04
-==================
-
-  * Added public `app.routes`. Closes #887
-  * Added _view-locals_ example
-  * Added _mvc_ example
-  * Added `res.locals.use()`. Closes #1120
-  * Added conditional-GET support to `res.send()`
-  * Added: coerce `res.set()` values to strings
-  * Changed: moved `static()` in generated apps below router
-  * Changed: `res.send()` only set ETag when not previously set
-  * Changed connect 2.2.1 dep
-  * Changed: `make test` now runs unit / acceptance tests
-  * Fixed req/res proto inheritance
-
-3.0.0alpha2 / 2012-04-26
-==================
-
-  * Added `make benchmark` back
-  * Added `res.send()` support for `String` objects
-  * Added client-side data exposing example
-  * Added `res.header()` and `req.header()` aliases for BC
-  * Added `express.createServer()` for BC
-  * Perf: memoize parsed urls
-  * Perf: connect 2.2.0 dep
-  * Changed: make `expressInit()` middleware self-aware
-  * Fixed: use app.get() for all core settings
-  * Fixed redis session example
-  * Fixed session example. Closes #1105
-  * Fixed generated express dep. Closes #1078
-
-3.0.0alpha1 / 2012-04-15
-==================
-
-  * Added `app.locals.use(callback)`
-  * Added `app.locals` object
-  * Added `app.locals(obj)`
-  * Added `res.locals` object
-  * Added `res.locals(obj)`
-  * Added `res.format()` for content-negotiation
-  * Added `app.engine()`
-  * Added `res.cookie()` JSON cookie support
-  * Added "trust proxy" setting
-  * Added `req.subdomains`
-  * Added `req.protocol`
-  * Added `req.secure`
-  * Added `req.path`
-  * Added `req.ips`
-  * Added `req.fresh`
-  * Added `req.stale`
-  * Added comma-delmited / array support for `req.accepts()`
-  * Added debug instrumentation
-  * Added `res.set(obj)`
-  * Added `res.set(field, value)`
-  * Added `res.get(field)`
-  * Added `app.get(setting)`. Closes #842
-  * Added `req.acceptsLanguage()`
-  * Added `req.acceptsCharset()`
-  * Added `req.accepted`
-  * Added `req.acceptedLanguages`
-  * Added `req.acceptedCharsets`
-  * Added "json replacer" setting
-  * Added "json spaces" setting
-  * Added X-Forwarded-Proto support to `res.redirect()`. Closes #92
-  * Added `--less` support to express(1)
-  * Added `express.response` prototype
-  * Added `express.request` prototype
-  * Added `express.application` prototype
-  * Added `app.path()`
-  * Added `app.render()`
-  * Added `res.type()` to replace `res.contentType()`
-  * Changed: `res.redirect()` to add relative support
-  * Changed: enable "jsonp callback" by default
-  * Changed: renamed "case sensitive routes" to "case sensitive routing"
-  * Rewrite of all tests with mocha
-  * Removed "root" setting
-  * Removed `res.redirect('home')` support
-  * Removed `req.notify()`
-  * Removed `app.register()`
-  * Removed `app.redirect()`
-  * Removed `app.is()`
-  * Removed `app.helpers()`
-  * Removed `app.dynamicHelpers()`
-  * Fixed `res.sendfile()` with non-GET. Closes #723
-  * Fixed express(1) public dir for windows. Closes #866
-
-2.5.9/ 2012-04-02
-==================
-
-  * Added support for PURGE request method [pbuyle]
-  * Fixed `express(1)` generated app `app.address()` before `listening` [mmalecki]
-
-2.5.8 / 2012-02-08
-==================
-
-  * Update mkdirp dep. Closes #991
-
-2.5.7 / 2012-02-06
-==================
-
-  * Fixed `app.all` duplicate DELETE requests [mscdex]
-
-2.5.6 / 2012-01-13
-==================
-
-  * Updated hamljs dev dep. Closes #953
-
-2.5.5 / 2012-01-08
-==================
-
-  * Fixed: set `filename` on cached templates [matthewleon]
-
-2.5.4 / 2012-01-02
-==================
-
-  * Fixed `express(1)` eol on 0.4.x. Closes #947
-
-2.5.3 / 2011-12-30
-==================
-
-  * Fixed `req.is()` when a charset is present
-
-2.5.2 / 2011-12-10
-==================
-
-  * Fixed: express(1) LF -> CRLF for windows
-
-2.5.1 / 2011-11-17
-==================
-
-  * Changed: updated connect to 1.8.x
-  * Removed sass.js support from express(1)
-
-2.5.0 / 2011-10-24
-==================
-
-  * Added ./routes dir for generated app by default
-  * Added npm install reminder to express(1) app gen
-  * Added 0.5.x support
-  * Removed `make test-cov` since it wont work with node 0.5.x
-  * Fixed express(1) public dir for windows. Closes #866
-
-2.4.7 / 2011-10-05
-==================
-
-  * Added mkdirp to express(1). Closes #795
-  * Added simple _json-config_ example
-  * Added  shorthand for the parsed request's pathname via `req.path`
-  * Changed connect dep to 1.7.x to fix npm issue...
-  * Fixed `res.redirect()` __HEAD__ support. [reported by xerox]
-  * Fixed `req.flash()`, only escape args
-  * Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie]
-
-2.4.6 / 2011-08-22
-==================
-
-  * Fixed multiple param callback regression. Closes #824 [reported by TroyGoode]
-
-2.4.5 / 2011-08-19
-==================
-
-  * Added support for routes to handle errors. Closes #809
-  * Added `app.routes.all()`. Closes #803
-  * Added "basepath" setting to work in conjunction with reverse proxies etc.
-  * Refactored `Route` to use a single array of callbacks
-  * Added support for multiple callbacks for `app.param()`. Closes #801
-Closes #805
-  * Changed: removed .call(self) for route callbacks
-  * Dependency: `qs >= 0.3.1`
-  * Fixed `res.redirect()` on windows due to `join()` usage. Closes #808
-
-2.4.4 / 2011-08-05
-==================
-
-  * Fixed `res.header()` intention of a set, even when `undefined`
-  * Fixed `*`, value no longer required
-  * Fixed `res.send(204)` support. Closes #771
-
-2.4.3 / 2011-07-14
-==================
-
-  * Added docs for `status` option special-case. Closes #739
-  * Fixed `options.filename`, exposing the view path to template engines
-
-2.4.2. / 2011-07-06
-==================
-
-  * Revert "removed jsonp stripping" for XSS
-
-2.4.1 / 2011-07-06
-==================
-
-  * Added `res.json()` JSONP support. Closes #737
-  * Added _extending-templates_ example. Closes #730
-  * Added "strict routing" setting for trailing slashes
-  * Added support for multiple envs in `app.configure()` calls. Closes #735
-  * Changed: `res.send()` using `res.json()`
-  * Changed: when cookie `path === null` don't default it
-  * Changed; default cookie path to "home" setting. Closes #731
-  * Removed _pids/logs_ creation from express(1)
-
-2.4.0 / 2011-06-28
-==================
-
-  * Added chainable `res.status(code)`
-  * Added `res.json()`, an explicit version of `res.send(obj)`
-  * Added simple web-service example
-
-2.3.12 / 2011-06-22
-==================
-
-  * \#express is now on freenode! come join!
-  * Added `req.get(field, param)`
-  * Added links to Japanese documentation, thanks @hideyukisaito!
-  * Added; the `express(1)` generated app outputs the env
-  * Added `content-negotiation` example
-  * Dependency: connect >= 1.5.1 < 2.0.0
-  * Fixed view layout bug. Closes #720
-  * Fixed; ignore body on 304. Closes #701
-
-2.3.11 / 2011-06-04
-==================
-
-  * Added `npm test`
-  * Removed generation of dummy test file from `express(1)`
-  * Fixed; `express(1)` adds express as a dep
-  * Fixed; prune on `prepublish`
-
-2.3.10 / 2011-05-27
-==================
-
-  * Added `req.route`, exposing the current route
-  * Added _package.json_ generation support to `express(1)`
-  * Fixed call to `app.param()` function for optional params. Closes #682
-
-2.3.9 / 2011-05-25
-==================
-
-  * Fixed bug-ish with `../' in `res.partial()` calls
-
-2.3.8 / 2011-05-24
-==================
-
-  * Fixed `app.options()`
-
-2.3.7 / 2011-05-23
-==================
-
-  * Added route `Collection`, ex: `app.get('/user/:id').remove();`
-  * Added support for `app.param(fn)` to define param logic
-  * Removed `app.param()` support for callback with return value
-  * Removed module.parent check from express(1) generated app. Closes #670
-  * Refactored router. Closes #639
-
-2.3.6 / 2011-05-20
-==================
-
-  * Changed; using devDependencies instead of git submodules
-  * Fixed redis session example
-  * Fixed markdown example
-  * Fixed view caching, should not be enabled in development
-
-2.3.5 / 2011-05-20
-==================
-
-  * Added export `.view` as alias for `.View`
-
-2.3.4 / 2011-05-08
-==================
-
-  * Added `./examples/say`
-  * Fixed `res.sendfile()` bug preventing the transfer of files with spaces
-
-2.3.3 / 2011-05-03
-==================
-
-  * Added "case sensitive routes" option.
-  * Changed; split methods supported per rfc [slaskis]
-  * Fixed route-specific middleware when using the same callback function several times
-
-2.3.2 / 2011-04-27
-==================
-
-  * Fixed view hints
-
-2.3.1 / 2011-04-26
-==================
-
-  * Added `app.match()` as `app.match.all()`
-  * Added `app.lookup()` as `app.lookup.all()`
-  * Added `app.remove()` for `app.remove.all()`
-  * Added `app.remove.VERB()`
-  * Fixed template caching collision issue. Closes #644
-  * Moved router over from connect and started refactor
-
-2.3.0 / 2011-04-25
-==================
-
-  * Added options support to `res.clearCookie()`
-  * Added `res.helpers()` as alias of `res.locals()`
-  * Added; json defaults to UTF-8 with `res.send()`. Closes #632. [Daniel   * Dependency `connect >= 1.4.0`
-  * Changed; auto set Content-Type in res.attachement [Aaron Heckmann]
-  * Renamed "cache views" to "view cache". Closes #628
-  * Fixed caching of views when using several apps. Closes #637
-  * Fixed gotcha invoking `app.param()` callbacks once per route middleware.
-Closes #638
-  * Fixed partial lookup precedence. Closes #631
-Shaw]
-
-2.2.2 / 2011-04-12
-==================
-
-  * Added second callback support for `res.download()` connection errors
-  * Fixed `filename` option passing to template engine
-
-2.2.1 / 2011-04-04
-==================
-
-  * Added `layout(path)` helper to change the layout within a view. Closes #610
-  * Fixed `partial()` collection object support.
-    Previously only anything with `.length` would work.
-    When `.length` is present one must still be aware of holes,
-    however now `{ collection: {foo: 'bar'}}` is valid, exposes
-    `keyInCollection` and `keysInCollection`.
-
-  * Performance improved with better view caching
-  * Removed `request` and `response` locals
-  * Changed; errorHandler page title is now `Express` instead of `Connect`
-
-2.2.0 / 2011-03-30
-==================
-
-  * Added `app.lookup.VERB()`, ex `app.lookup.put('/user/:id')`. Closes #606
-  * Added `app.match.VERB()`, ex `app.match.put('/user/12')`. Closes #606
-  * Added `app.VERB(path)` as alias of `app.lookup.VERB()`.
-  * Dependency `connect >= 1.2.0`
-
-2.1.1 / 2011-03-29
-==================
-
-  * Added; expose `err.view` object when failing to locate a view
-  * Fixed `res.partial()` call `next(err)` when no callback is given [reported by aheckmann]
-  * Fixed; `res.send(undefined)` responds with 204 [aheckmann]
-
-2.1.0 / 2011-03-24
-==================
-
-  * Added `<root>/_?<name>` partial lookup support. Closes #447
-  * Added `request`, `response`, and `app` local variables
-  * Added `settings` local variable, containing the app's settings
-  * Added `req.flash()` exception if `req.session` is not available
-  * Added `res.send(bool)` support (json response)
-  * Fixed stylus example for latest version
-  * Fixed; wrap try/catch around `res.render()`
-
-2.0.0 / 2011-03-17
-==================
-
-  * Fixed up index view path alternative.
-  * Changed; `res.locals()` without object returns the locals
-
-2.0.0rc3 / 2011-03-17
-==================
-
-  * Added `res.locals(obj)` to compliment `res.local(key, val)`
-  * Added `res.partial()` callback support
-  * Fixed recursive error reporting issue in `res.render()`
-
-2.0.0rc2 / 2011-03-17
-==================
-
-  * Changed; `partial()` "locals" are now optional
-  * Fixed `SlowBuffer` support. Closes #584 [reported by tyrda01]
-  * Fixed .filename view engine option [reported by drudge]
-  * Fixed blog example
-  * Fixed `{req,res}.app` reference when mounting [Ben Weaver]
-
-2.0.0rc / 2011-03-14
-==================
-
-  * Fixed; expose `HTTPSServer` constructor
-  * Fixed express(1) default test charset. Closes #579 [reported by secoif]
-  * Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP]
-
-2.0.0beta3 / 2011-03-09
-==================
-
-  * Added support for `res.contentType()` literal
-    The original `res.contentType('.json')`,
-    `res.contentType('application/json')`, and `res.contentType('json')`
-    will work now.
-  * Added `res.render()` status option support back
-  * Added charset option for `res.render()`
-  * Added `.charset` support (via connect 1.0.4)
-  * Added view resolution hints when in development and a lookup fails
-  * Added layout lookup support relative to the page view.
-    For example while rendering `./views/user/index.jade` if you create
-    `./views/user/layout.jade` it will be used in favour of the root layout.
-  * Fixed `res.redirect()`. RFC states absolute url [reported by unlink]
-  * Fixed; default `res.send()` string charset to utf8
-  * Removed `Partial` constructor (not currently used)
-
-2.0.0beta2 / 2011-03-07
-==================
-
-  * Added res.render() `.locals` support back to aid in migration process
-  * Fixed flash example
-
-2.0.0beta / 2011-03-03
-==================
-
-  * Added HTTPS support
-  * Added `res.cookie()` maxAge support
-  * Added `req.header()` _Referrer_ / _Referer_ special-case, either works
-  * Added mount support for `res.redirect()`, now respects the mount-point
-  * Added `union()` util, taking place of `merge(clone())` combo
-  * Added stylus support to express(1) generated app
-  * Added secret to session middleware used in examples and generated app
-  * Added `res.local(name, val)` for progressive view locals
-  * Added default param support to `req.param(name, default)`
-  * Added `app.disabled()` and `app.enabled()`
-  * Added `app.register()` support for omitting leading ".", either works
-  * Added `res.partial()`, using the same interface as `partial()` within a view. Closes #539
-  * Added `app.param()` to map route params to async/sync logic
-  * Added; aliased `app.helpers()` as `app.locals()`. Closes #481
-  * Added extname with no leading "." support to `res.contentType()`
-  * Added `cache views` setting, defaulting to enabled in "production" env
-  * Added index file partial resolution, eg: partial('user') may try _views/user/index.jade_.
-  * Added `req.accepts()` support for extensions
-  * Changed; `res.download()` and `res.sendfile()` now utilize Connect's
-    static file server `connect.static.send()`.
-  * Changed; replaced `connect.utils.mime()` with npm _mime_ module
-  * Changed; allow `req.query` to be pre-defined (via middleware or other parent
-  * Changed view partial resolution, now relative to parent view
-  * Changed view engine signature. no longer `engine.render(str, options, callback)`, now `engine.compile(str, options) -> Function`, the returned function accepts `fn(locals)`.
-  * Fixed `req.param()` bug returning Array.prototype methods. Closes #552
-  * Fixed; using `Stream#pipe()` instead of `sys.pump()` in `res.sendfile()`
-  * Fixed; using _qs_ module instead of _querystring_
-  * Fixed; strip unsafe chars from jsonp callbacks
-  * Removed "stream threshold" setting
-
-1.0.8 / 2011-03-01
-==================
-
-  * Allow `req.query` to be pre-defined (via middleware or other parent app)
-  * "connect": ">= 0.5.0 < 1.0.0". Closes #547
-  * Removed the long deprecated __EXPRESS_ENV__ support
-
-1.0.7 / 2011-02-07
-==================
-
-  * Fixed `render()` setting inheritance.
-    Mounted apps would not inherit "view engine"
-
-1.0.6 / 2011-02-07
-==================
-
-  * Fixed `view engine` setting bug when period is in dirname
-
-1.0.5 / 2011-02-05
-==================
-
-  * Added secret to generated app `session()` call
-
-1.0.4 / 2011-02-05
-==================
-
-  * Added `qs` dependency to _package.json_
-  * Fixed namespaced `require()`s for latest connect support
-
-1.0.3 / 2011-01-13
-==================
-
-  * Remove unsafe characters from JSONP callback names [Ryan Grove]
-
-1.0.2 / 2011-01-10
-==================
-
-  * Removed nested require, using `connect.router`
-
-1.0.1 / 2010-12-29
-==================
-
-  * Fixed for middleware stacked via `createServer()`
-    previously the `foo` middleware passed to `createServer(foo)`
-    would not have access to Express methods such as `res.send()`
-    or props like `req.query` etc.
-
-1.0.0 / 2010-11-16
-==================
-
-  * Added; deduce partial object names from the last segment.
-    For example by default `partial('forum/post', postObject)` will
-    give you the _post_ object, providing a meaningful default.
-  * Added http status code string representation to `res.redirect()` body
-  * Added; `res.redirect()` supporting _text/plain_ and _text/html_ via __Accept__.
-  * Added `req.is()` to aid in content negotiation
-  * Added partial local inheritance [suggested by masylum]. Closes #102
-    providing access to parent template locals.
-  * Added _-s, --session[s]_ flag to express(1) to add session related middleware
-  * Added _--template_ flag to express(1) to specify the
-    template engine to use.
-  * Added _--css_ flag to express(1) to specify the
-    stylesheet engine to use (or just plain css by default).
-  * Added `app.all()` support [thanks aheckmann]
-  * Added partial direct object support.
-    You may now `partial('user', user)` providing the "user" local,
-    vs previously `partial('user', { object: user })`.
-  * Added _route-separation_ example since many people question ways
-    to do this with CommonJS modules. Also view the _blog_ example for
-    an alternative.
-  * Performance; caching view path derived partial object names
-  * Fixed partial local inheritance precedence. [reported by Nick Poulden] Closes #454
-  * Fixed jsonp support; _text/javascript_ as per mailinglist discussion
-
-1.0.0rc4 / 2010-10-14
-==================
-
-  * Added _NODE_ENV_ support, _EXPRESS_ENV_ is deprecated and will be removed in 1.0.0
-  * Added route-middleware support (very helpful, see the [docs](http://expressjs.com/guide.html#Route-Middleware))
-  * Added _jsonp callback_ setting to enable/disable jsonp autowrapping [Dav Glass]
-  * Added callback query check on response.send to autowrap JSON objects for simple webservice implementations [Dav Glass]
-  * Added `partial()` support for array-like collections. Closes #434
-  * Added support for swappable querystring parsers
-  * Added session usage docs. Closes #443
-  * Added dynamic helper caching. Closes #439 [suggested by maritz]
-  * Added authentication example
-  * Added basic Range support to `res.sendfile()` (and `res.download()` etc)
-  * Changed; `express(1)` generated app using 2 spaces instead of 4
-  * Default env to "development" again [aheckmann]
-  * Removed _context_ option is no more, use "scope"
-  * Fixed; exposing _./support_ libs to examples so they can run without installs
-  * Fixed mvc example
-
-1.0.0rc3 / 2010-09-20
-==================
-
-  * Added confirmation for `express(1)` app generation. Closes #391
-  * Added extending of flash formatters via `app.flashFormatters`
-  * Added flash formatter support. Closes #411
-  * Added streaming support to `res.sendfile()` using `sys.pump()` when >= "stream threshold"
-  * Added _stream threshold_ setting for `res.sendfile()`
-  * Added `res.send()` __HEAD__ support
-  * Added `res.clearCookie()`
-  * Added `res.cookie()`
-  * Added `res.render()` headers option
-  * Added `res.redirect()` response bodies
-  * Added `res.render()` status option support. Closes #425 [thanks aheckmann]
-  * Fixed `res.sendfile()` responding with 403 on malicious path
-  * Fixed `res.download()` bug; when an error occurs remove _Content-Disposition_
-  * Fixed; mounted apps settings now inherit from parent app [aheckmann]
-  * Fixed; stripping Content-Length / Content-Type when 204
-  * Fixed `res.send()` 204. Closes #419
-  * Fixed multiple _Set-Cookie_ headers via `res.header()`. Closes #402
-  * Fixed bug messing with error handlers when `listenFD()` is called instead of `listen()`. [thanks guillermo]
-
-
-1.0.0rc2 / 2010-08-17
-==================
-
-  * Added `app.register()` for template engine mapping. Closes #390
-  * Added `res.render()` callback support as second argument (no options)
-  * Added callback support to `res.download()`
-  * Added callback support for `res.sendfile()`
-  * Added support for middleware access via `express.middlewareName()` vs `connect.middlewareName()`
-  * Added "partials" setting to docs
-  * Added default expresso tests to `express(1)` generated app. Closes #384
-  * Fixed `res.sendfile()` error handling, defer via `next()`
-  * Fixed `res.render()` callback when a layout is used [thanks guillermo]
-  * Fixed; `make install` creating ~/.node_libraries when not present
-  * Fixed issue preventing error handlers from being defined anywhere. Closes #387
-
-1.0.0rc / 2010-07-28
-==================
-
-  * Added mounted hook. Closes #369
-  * Added connect dependency to _package.json_
-
-  * Removed "reload views" setting and support code
-    development env never caches, production always caches.
-
-  * Removed _param_ in route callbacks, signature is now
-    simply (req, res, next), previously (req, res, params, next).
-    Use _req.params_ for path captures, _req.query_ for GET params.
-
-  * Fixed "home" setting
-  * Fixed middleware/router precedence issue. Closes #366
-  * Fixed; _configure()_ callbacks called immediately. Closes #368
-
-1.0.0beta2 / 2010-07-23
-==================
-
-  * Added more examples
-  * Added; exporting `Server` constructor
-  * Added `Server#helpers()` for view locals
-  * Added `Server#dynamicHelpers()` for dynamic view locals. Closes #349
-  * Added support for absolute view paths
-  * Added; _home_ setting defaults to `Server#route` for mounted apps. Closes #363
-  * Added Guillermo Rauch to the contributor list
-  * Added support for "as" for non-collection partials. Closes #341
-  * Fixed _install.sh_, ensuring _~/.node_libraries_ exists. Closes #362 [thanks jf]
-  * Fixed `res.render()` exceptions, now passed to `next()` when no callback is given [thanks guillermo]
-  * Fixed instanceof `Array` checks, now `Array.isArray()`
-  * Fixed express(1) expansion of public dirs. Closes #348
-  * Fixed middleware precedence. Closes #345
-  * Fixed view watcher, now async [thanks aheckmann]
-
-1.0.0beta / 2010-07-15
-==================
-
-  * Re-write
-    - much faster
-    - much lighter
-    - Check [ExpressJS.com](http://expressjs.com) for migration guide and updated docs
-
-0.14.0 / 2010-06-15
-==================
-
-  * Utilize relative requires
-  * Added Static bufferSize option [aheckmann]
-  * Fixed caching of view and partial subdirectories [aheckmann]
-  * Fixed mime.type() comments now that ".ext" is not supported
-  * Updated haml submodule
-  * Updated class submodule
-  * Removed bin/express
-
-0.13.0 / 2010-06-01
-==================
-
-  * Added node v0.1.97 compatibility
-  * Added support for deleting cookies via Request#cookie('key', null)
-  * Updated haml submodule
-  * Fixed not-found page, now using using charset utf-8
-  * Fixed show-exceptions page, now using using charset utf-8
-  * Fixed view support due to fs.readFile Buffers
-  * Changed; mime.type() no longer accepts ".type" due to node extname() changes
-
-0.12.0 / 2010-05-22
-==================
-
-  * Added node v0.1.96 compatibility
-  * Added view `helpers` export which act as additional local variables
-  * Updated haml submodule
-  * Changed ETag; removed inode, modified time only
-  * Fixed LF to CRLF for setting multiple cookies
-  * Fixed cookie complation; values are now urlencoded
-  * Fixed cookies parsing; accepts quoted values and url escaped cookies
-
-0.11.0 / 2010-05-06
-==================
-
-  * Added support for layouts using different engines
-    - this.render('page.html.haml', { layout: 'super-cool-layout.html.ejs' })
-    - this.render('page.html.haml', { layout: 'foo' }) // assumes 'foo.html.haml'
-    - this.render('page.html.haml', { layout: false }) // no layout
-  * Updated ext submodule
-  * Updated haml submodule
-  * Fixed EJS partial support by passing along the context. Issue #307
-
-0.10.1 / 2010-05-03
-==================
-
-  * Fixed binary uploads.
-
-0.10.0 / 2010-04-30
-==================
-
-  * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s
-    encoding is set to 'utf8' or 'utf-8'.
-  * Added "encoding" option to Request#render(). Closes #299
-  * Added "dump exceptions" setting, which is enabled by default.
-  * Added simple ejs template engine support
-  * Added error reponse support for text/plain, application/json. Closes #297
-  * Added callback function param to Request#error()
-  * Added Request#sendHead()
-  * Added Request#stream()
-  * Added support for Request#respond(304, null) for empty response bodies
-  * Added ETag support to Request#sendfile()
-  * Added options to Request#sendfile(), passed to fs.createReadStream()
-  * Added filename arg to Request#download()
-  * Performance enhanced due to pre-reversing plugins so that plugins.reverse() is not called on each request
-  * Performance enhanced by preventing several calls to toLowerCase() in Router#match()
-  * Changed; Request#sendfile() now streams
-  * Changed; Renamed Request#halt() to Request#respond(). Closes #289
-  * Changed; Using sys.inspect() instead of JSON.encode() for error output
-  * Changed; run() returns the http.Server instance. Closes #298
-  * Changed; Defaulting Server#host to null (INADDR_ANY)
-  * Changed; Logger "common" format scale of 0.4f
-  * Removed Logger "request" format
-  * Fixed; Catching ENOENT in view caching, preventing error when "views/partials" is not found
-  * Fixed several issues with http client
-  * Fixed Logger Content-Length output
-  * Fixed bug preventing Opera from retaining the generated session id. Closes #292
-
-0.9.0 / 2010-04-14
-==================
-
-  * Added DSL level error() route support
-  * Added DSL level notFound() route support
-  * Added Request#error()
-  * Added Request#notFound()
-  * Added Request#render() callback function. Closes #258
-  * Added "max upload size" setting
-  * Added "magic" variables to collection partials (\_\_index\_\_, \_\_length\_\_, \_\_isFirst\_\_, \_\_isLast\_\_). Closes #254
-  * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js
-  * Added callback function support to Request#halt() as 3rd/4th arg
-  * Added preprocessing of route param wildcards using param(). Closes #251
-  * Added view partial support (with collections etc)
-  * Fixed bug preventing falsey params (such as ?page=0). Closes #286
-  * Fixed setting of multiple cookies. Closes #199
-  * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml)
-  * Changed; session cookie is now httpOnly
-  * Changed; Request is no longer global
-  * Changed; Event is no longer global
-  * Changed; "sys" module is no longer global
-  * Changed; moved Request#download to Static plugin where it belongs
-  * Changed; Request instance created before body parsing. Closes #262
-  * Changed; Pre-caching views in memory when "cache view contents" is enabled. Closes #253
-  * Changed; Pre-caching view partials in memory when "cache view partials" is enabled
-  * Updated support to node --version 0.1.90
-  * Updated dependencies
-  * Removed set("session cookie") in favour of use(Session, { cookie: { ... }})
-  * Removed utils.mixin(); use Object#mergeDeep()
-
-0.8.0 / 2010-03-19
-==================
-
-  * Added coffeescript example app. Closes #242
-  * Changed; cache api now async friendly. Closes #240
-  * Removed deprecated 'express/static' support. Use 'express/plugins/static'
-
-0.7.6 / 2010-03-19
-==================
-
-  * Added Request#isXHR. Closes #229
-  * Added `make install` (for the executable)
-  * Added `express` executable for setting up simple app templates
-  * Added "GET /public/*" to Static plugin, defaulting to <root>/public
-  * Added Static plugin
-  * Fixed; Request#render() only calls cache.get() once
-  * Fixed; Namespacing View caches with "view:"
-  * Fixed; Namespacing Static caches with "static:"
-  * Fixed; Both example apps now use the Static plugin
-  * Fixed set("views"). Closes #239
-  * Fixed missing space for combined log format
-  * Deprecated Request#sendfile() and 'express/static'
-  * Removed Server#running
-
-0.7.5 / 2010-03-16
-==================
-
-  * Added Request#flash() support without args, now returns all flashes
-  * Updated ext submodule
-
-0.7.4 / 2010-03-16
-==================
-
-  * Fixed session reaper
-  * Changed; class.js replacing js-oo Class implementation (quite a bit faster, no browser cruft)
-
-0.7.3 / 2010-03-16
-==================
-
-  * Added package.json
-  * Fixed requiring of haml / sass due to kiwi removal
-
-0.7.2 / 2010-03-16
-==================
-
-  * Fixed GIT submodules (HAH!)
-
-0.7.1 / 2010-03-16
-==================
-
-  * Changed; Express now using submodules again until a PM is adopted
-  * Changed; chat example using millisecond conversions from ext
-
-0.7.0 / 2010-03-15
-==================
-
-  * Added Request#pass() support (finds the next matching route, or the given path)
-  * Added Logger plugin (default "common" format replaces CommonLogger)
-  * Removed Profiler plugin
-  * Removed CommonLogger plugin
-
-0.6.0 / 2010-03-11
-==================
-
-  * Added seed.yml for kiwi package management support
-  * Added HTTP client query string support when method is GET. Closes #205
-
-  * Added support for arbitrary view engines.
-    For example "foo.engine.html" will now require('engine'),
-    the exports from this module are cached after the first require().
-
-  * Added async plugin support
-
-  * Removed usage of RESTful route funcs as http client
-    get() etc, use http.get() and friends
-
-  * Removed custom exceptions
-
-0.5.0 / 2010-03-10
-==================
-
-  * Added ext dependency (library of js extensions)
-  * Removed extname() / basename() utils. Use path module
-  * Removed toArray() util. Use arguments.values
-  * Removed escapeRegexp() util. Use RegExp.escape()
-  * Removed process.mixin() dependency. Use utils.mixin()
-  * Removed Collection
-  * Removed ElementCollection
-  * Shameless self promotion of ebook "Advanced JavaScript" (http://dev-mag.com)  ;)
-
-0.4.0 / 2010-02-11
-==================
-
-  * Added flash() example to sample upload app
-  * Added high level restful http client module (express/http)
-  * Changed; RESTful route functions double as HTTP clients. Closes #69
-  * Changed; throwing error when routes are added at runtime
-  * Changed; defaulting render() context to the current Request. Closes #197
-  * Updated haml submodule
-
-0.3.0 / 2010-02-11
-==================
-
-  * Updated haml / sass submodules. Closes #200
-  * Added flash message support. Closes #64
-  * Added accepts() now allows multiple args. fixes #117
-  * Added support for plugins to halt. Closes #189
-  * Added alternate layout support. Closes #119
-  * Removed Route#run(). Closes #188
-  * Fixed broken specs due to use(Cookie) missing
-
-0.2.1 / 2010-02-05
-==================
-
-  * Added "plot" format option for Profiler (for gnuplot processing)
-  * Added request number to Profiler plugin
-  * Fixed binary encoding for multi-part file uploads, was previously defaulting to UTF8
-  * Fixed issue with routes not firing when not files are present. Closes #184
-  * Fixed process.Promise -> events.Promise
-
-0.2.0 / 2010-02-03
-==================
-
-  * Added parseParam() support for name[] etc. (allows for file inputs with "multiple" attr) Closes #180
-  * Added Both Cache and Session option "reapInterval" may be "reapEvery". Closes #174
-  * Added expiration support to cache api with reaper. Closes #133
-  * Added cache Store.Memory#reap()
-  * Added Cache; cache api now uses first class Cache instances
-  * Added abstract session Store. Closes #172
-  * Changed; cache Memory.Store#get() utilizing Collection
-  * Renamed MemoryStore -> Store.Memory
-  * Fixed use() of the same plugin several time will always use latest options. Closes #176
-
-0.1.0 / 2010-02-03
-==================
-
-  * Changed; Hooks (before / after) pass request as arg as well as evaluated in their context
-  * Updated node support to 0.1.27 Closes #169
-  * Updated dirname(__filename) -> __dirname
-  * Updated libxmljs support to v0.2.0
-  * Added session support with memory store / reaping
-  * Added quick uid() helper
-  * Added multi-part upload support
-  * Added Sass.js support / submodule
-  * Added production env caching view contents and static files
-  * Added static file caching. Closes #136
-  * Added cache plugin with memory stores
-  * Added support to StaticFile so that it works with non-textual files.
-  * Removed dirname() helper
-  * Removed several globals (now their modules must be required)
-
-0.0.2 / 2010-01-10
-==================
-
-  * Added view benchmarks; currently haml vs ejs
-  * Added Request#attachment() specs. Closes #116
-  * Added use of node's parseQuery() util. Closes #123
-  * Added `make init` for submodules
-  * Updated Haml
-  * Updated sample chat app to show messages on load
-  * Updated libxmljs parseString -> parseHtmlString
-  * Fixed `make init` to work with older versions of git
-  * Fixed specs can now run independant specs for those who cant build deps. Closes #127
-  * Fixed issues introduced by the node url module changes. Closes 126.
-  * Fixed two assertions failing due to Collection#keys() returning strings
-  * Fixed faulty Collection#toArray() spec due to keys() returning strings
-  * Fixed `make test` now builds libxmljs.node before testing
-
-0.0.1 / 2010-01-03
-==================
-
-  * Initial release

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/LICENSE b/web/demos/package/node_modules/express/LICENSE
deleted file mode 100644
index 36075a3..0000000
--- a/web/demos/package/node_modules/express/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2009-2011 TJ Holowaychuk <tj...@vision-media.ca>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/Makefile b/web/demos/package/node_modules/express/Makefile
deleted file mode 100644
index 228f299..0000000
--- a/web/demos/package/node_modules/express/Makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-
-MOCHA_OPTS= --check-leaks
-REPORTER = dot
-
-check: test
-
-test: test-unit test-acceptance
-
-test-unit:
-	@NODE_ENV=test ./node_modules/.bin/mocha \
-		--reporter $(REPORTER) \
-		$(MOCHA_OPTS)
-
-test-acceptance:
-	@NODE_ENV=test ./node_modules/.bin/mocha \
-		--reporter $(REPORTER) \
-		--bail \
-		test/acceptance/*.js
-
-test-cov: lib-cov
-	@EXPRESS_COV=1 $(MAKE) test REPORTER=html-cov > coverage.html
-
-lib-cov:
-	@jscoverage lib lib-cov
-
-benchmark:
-	@./support/bench
-
-clean:
-	rm -f coverage.html
-	rm -fr lib-cov
-
-.PHONY: test test-unit test-acceptance benchmark clean

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/Readme.md b/web/demos/package/node_modules/express/Readme.md
deleted file mode 100644
index 00158b8..0000000
--- a/web/demos/package/node_modules/express/Readme.md
+++ /dev/null
@@ -1,179 +0,0 @@
-![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png)
-
-  Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express) [![Dependency Status](https://gemnasium.com/visionmedia/express.png)](https://gemnasium.com/visionmedia/express)
-
-```js
-var express = require('express');
-var app = express();
-
-app.get('/', function(req, res){
-  res.send('Hello World');
-});
-
-app.listen(3000);
-```
-
-## Installation
-
-    $ npm install -g express
-
-## Quick Start
-
- The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below:
-
- Create the app:
-
-    $ npm install -g express
-    $ express /tmp/foo && cd /tmp/foo
-
- Install dependencies:
-
-    $ npm install
-
- Start the server:
-
-    $ node app
-
-## Features
-
-  * Built on [Connect](http://github.com/senchalabs/connect)
-  * Robust routing
-  * HTTP helpers (redirection, caching, etc)
-  * View system supporting 14+ template engines
-  * Content negotiation
-  * Focus on high performance
-  * Environment based configuration
-  * Executable for generating applications quickly
-  * High test coverage
-
-## Philosophy
-
-  The Express philosophy is to provide small, robust tooling for HTTP servers. Making
-  it a great solution for single page applications, web sites, hybrids, or public
-  HTTP APIs.
-
-  Built on Connect you can use _only_ what you need, and nothing more, applications
-  can be as big or as small as you like, even a single file. Express does
-  not force you to use any specific ORM or template engine. With support for over
-  14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js)
-  you can quickly craft your perfect framework.
-
-## More Information
-
-  * Join #express on freenode
-  * [Google Group](http://groups.google.com/group/express-js) for discussion
-  * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates
-  * Visit the [Wiki](http://github.com/visionmedia/express/wiki)
-  * [Š ŃƒŃŃŠŗŠ¾ŃŠ·Ń‹Ń‡Š½Š°Ń Š“Š¾ŠŗуŠ¼ŠµŠ½Ń‚Š°Ń†Šøя](http://jsman.ru/express/)
-  * Run express examples [online](https://runnable.com/express)
-
-## Viewing Examples
-
-Clone the Express repo, then install the dev dependencies to install all the example / test suite deps:
-
-    $ git clone git://github.com/visionmedia/express.git --depth 1
-    $ cd express
-    $ npm install
-
-then run whichever tests you want:
-
-    $ node examples/content-negotiation
-
-## Running Tests
-
-To run the test suite first invoke the following command within the repo, installing the development dependencies:
-
-    $ npm install
-
-then run the tests:
-
-    $ make test
-
-## Contributors
-
-```
-project: express
-commits: 3559
-active : 468 days
-files  : 237
-authors:
- 1891	Tj Holowaychuk          53.1%
- 1285	visionmedia             36.1%
-  182	TJ Holowaychuk          5.1%
-   54	Aaron Heckmann          1.5%
-   34	csausdev                1.0%
-   26	ciaranj                 0.7%
-   21	Robert Skƶld            0.6%
-    6	Guillermo Rauch         0.2%
-    3	Dav Glass               0.1%
-    3	Nick Poulden            0.1%
-    2	Randy Merrill           0.1%
-    2	Benny Wong              0.1%
-    2	Hunter Loftis           0.1%
-    2	Jake Gordon             0.1%
-    2	Brian McKinney          0.1%
-    2	Roman Shtylman          0.1%
-    2	Ben Weaver              0.1%
-    2	Dave Hoover             0.1%
-    2	Eivind Fjeldstad        0.1%
-    2	Daniel Shaw             0.1%
-    1	Matt Colyer             0.0%
-    1	Pau Ramon               0.0%
-    1	Pero Pejovic            0.0%
-    1	Peter Rekdal Sunde      0.0%
-    1	Raynos                  0.0%
-    1	Teng Siong Ong          0.0%
-    1	Viktor Kelemen          0.0%
-    1	ctide                   0.0%
-    1	8bitDesigner            0.0%
-    1	isaacs                  0.0%
-    1	mgutz                   0.0%
-    1	pikeas                  0.0%
-    1	shuwatto                0.0%
-    1	tstrimple               0.0%
-    1	ewoudj                  0.0%
-    1	Adam Sanderson          0.0%
-    1	Andrii Kostenko         0.0%
-    1	Andy Hiew               0.0%
-    1	Arpad Borsos            0.0%
-    1	Ashwin Purohit          0.0%
-    1	Benjen                  0.0%
-    1	Darren Torpey           0.0%
-    1	Greg Ritter             0.0%
-    1	Gregory Ritter          0.0%
-    1	James Herdman           0.0%
-    1	Jim Snodgrass           0.0%
-    1	Joe McCann              0.0%
-    1	Jonathan Dumaine        0.0%
-    1	Jonathan Palardy        0.0%
-    1	Jonathan Zacsh          0.0%
-    1	Justin Lilly            0.0%
-    1	Ken Sato                0.0%
-    1	Maciej Małecki          0.0%
-    1	Masahiro Hayashi        0.0%
-```
-
-## License
-
-(The MIT License)
-
-Copyright (c) 2009-2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/bin/express
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/bin/express b/web/demos/package/node_modules/express/bin/express
deleted file mode 100755
index 62df5d6..0000000
--- a/web/demos/package/node_modules/express/bin/express
+++ /dev/null
@@ -1,423 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var exec = require('child_process').exec
-  , program = require('commander')
-  , mkdirp = require('mkdirp')
-  , pkg = require('../package.json')
-  , version = pkg.version
-  , os = require('os')
-  , fs = require('fs');
-
-// CLI
-
-program
-  .version(version)
-  .usage('[options] [dir]')
-  .option('-s, --sessions', 'add session support')
-  .option('-e, --ejs', 'add ejs engine support (defaults to jade)')
-  .option('-J, --jshtml', 'add jshtml engine support (defaults to jade)')
-  .option('-H, --hogan', 'add hogan.js engine support')
-  .option('-c, --css <engine>', 'add stylesheet <engine> support (less|stylus) (defaults to plain css)')
-  .option('-f, --force', 'force on non-empty directory')
-  .parse(process.argv);
-
-// Path
-
-var path = program.args.shift() || '.';
-
-// end-of-line code
-
-var eol = os.EOL
-
-// Template engine
-
-program.template = 'jade';
-if (program.ejs) program.template = 'ejs';
-if (program.jshtml) program.template = 'jshtml';
-if (program.hogan) program.template = 'hjs';
-
-/**
- * Routes index template.
- */
-
-var index = [
-    ''
-  , '/*'
-  , ' * GET home page.'
-  , ' */'
-  , ''
-  , 'exports.index = function(req, res){'
-  , '  res.render(\'index\', { title: \'Express\' });'
-  , '};'
-].join(eol);
-
-/**
- * Routes users template.
- */
-
-var users = [
-    ''
-  , '/*'
-  , ' * GET users listing.'
-  , ' */'
-  , ''
-  , 'exports.list = function(req, res){'
-  , '  res.send("respond with a resource");'
-  , '};'
-].join(eol);
-
-/**
- * Jade layout template.
- */
-
-var jadeLayout = [
-    'doctype 5'
-  , 'html'
-  , '  head'
-  , '    title= title'
-  , '    link(rel=\'stylesheet\', href=\'/stylesheets/style.css\')'
-  , '  body'
-  , '    block content'
-].join(eol);
-
-/**
- * Jade index template.
- */
-
-var jadeIndex = [
-    'extends layout'
-  , ''
-  , 'block content'
-  , '  h1= title'
-  , '  p Welcome to #{title}'
-].join(eol);
-
-/**
- * EJS index template.
- */
-
-var ejsIndex = [
-    '<!DOCTYPE html>'
-  , '<html>'
-  , '  <head>'
-  , '    <title><%= title %></title>'
-  , '    <link rel=\'stylesheet\' href=\'/stylesheets/style.css\' />'
-  , '  </head>'
-  , '  <body>'
-  , '    <h1><%= title %></h1>'
-  , '    <p>Welcome to <%= title %></p>'
-  , '  </body>'
-  , '</html>'
-].join(eol);
-
-/**
- * JSHTML layout template.
- */
-
-var jshtmlLayout = [
-    '<!DOCTYPE html>'
-  , '<html>'
-  , '  <head>'
-  , '    <title> @write(title) </title>'
-  , '    <link rel=\'stylesheet\' href=\'/stylesheets/style.css\' />'
-  , '  </head>'
-  , '  <body>'
-  , '    @write(body)'
-  , '  </body>'
-  , '</html>'
-].join(eol);
-
-/**
- * JSHTML index template.
- */
-
-var jshtmlIndex = [
-    '<h1>@write(title)</h1>'
-  , '<p>Welcome to @write(title)</p>'
-].join(eol);
-
-/**
- * Hogan.js index template.
- */
-var hoganIndex = [
-    '<!DOCTYPE html>'
-  , '<html>'
-  , '  <head>'
-  , '    <title>{{ title }}</title>'
-  , '    <link rel=\'stylesheet\' href=\'/stylesheets/style.css\' />'
-  , '  </head>'
-  , '  <body>'
-  , '    <h1>{{ title }}</h1>'
-  , '    <p>Welcome to {{ title }}</p>'
-  , '  </body>'
-  , '</html>'
-].join(eol);
-
-/**
- * Default css template.
- */
-
-var css = [
-    'body {'
-  , '  padding: 50px;'
-  , '  font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;'
-  , '}'
-  , ''
-  , 'a {'
-  , '  color: #00B7FF;'
-  , '}'
-].join(eol);
-
-/**
- * Default less template.
- */
-
-var less = [
-    'body {'
-  , '  padding: 50px;'
-  , '  font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;'
-  , '}'
-  , ''
-  , 'a {'
-  , '  color: #00B7FF;'
-  , '}'
-].join(eol);
-
-/**
- * Default stylus template.
- */
-
-var stylus = [
-    'body'
-  , '  padding: 50px'
-  , '  font: 14px "Lucida Grande", Helvetica, Arial, sans-serif'
-  , 'a'
-  , '  color: #00B7FF'
-].join(eol);
-
-/**
- * App template.
- */
-
-var app = [
-    ''
-  , '/**'
-  , ' * Module dependencies.'
-  , ' */'
-  , ''
-  , 'var express = require(\'express\');'
-  , 'var routes = require(\'./routes\');'
-  , 'var user = require(\'./routes/user\');'
-  , 'var http = require(\'http\');'
-  , 'var path = require(\'path\');'
-  , ''
-  , 'var app = express();'
-  , ''
-  , '// all environments'
-  , 'app.set(\'port\', process.env.PORT || 3000);'
-  , 'app.set(\'views\', __dirname + \'/views\');'
-  , 'app.set(\'view engine\', \':TEMPLATE\');'
-  , 'app.use(express.favicon());'
-  , 'app.use(express.logger(\'dev\'));'
-  , 'app.use(express.bodyParser());'
-  , 'app.use(express.methodOverride());{sess}'
-  , 'app.use(app.router);{css}'
-  , 'app.use(express.static(path.join(__dirname, \'public\')));'
-  , ''
-  , '// development only'
-  , 'if (\'development\' == app.get(\'env\')) {'
-  , '  app.use(express.errorHandler());'
-  , '}'
-  , ''
-  , 'app.get(\'/\', routes.index);'
-  , 'app.get(\'/users\', user.list);'
-  , ''
-  , 'http.createServer(app).listen(app.get(\'port\'), function(){'
-  , '  console.log(\'Express server listening on port \' + app.get(\'port\'));'
-  , '});'
-  , ''
-].join(eol);
-
-// Generate application
-
-(function createApplication(path) {
-  emptyDirectory(path, function(empty){
-    if (empty || program.force) {
-      createApplicationAt(path);
-    } else {
-      program.confirm('destination is not empty, continue? ', function(ok){
-        if (ok) {
-          process.stdin.destroy();
-          createApplicationAt(path);
-        } else {
-          abort('aborting');
-        }
-      });
-    }
-  });
-})(path);
-
-/**
- * Create application at the given directory `path`.
- *
- * @param {String} path
- */
-
-function createApplicationAt(path) {
-  console.log();
-  process.on('exit', function(){
-    console.log();
-    console.log('   install dependencies:');
-    console.log('     $ cd %s && npm install', path);
-    console.log();
-    console.log('   run the app:');
-    console.log('     $ node app');
-    console.log();
-  });
-
-  mkdir(path, function(){
-    mkdir(path + '/public');
-    mkdir(path + '/public/javascripts');
-    mkdir(path + '/public/images');
-    mkdir(path + '/public/stylesheets', function(){
-      switch (program.css) {
-        case 'less':
-          write(path + '/public/stylesheets/style.less', less);
-          break;
-        case 'stylus':
-          write(path + '/public/stylesheets/style.styl', stylus);
-          break;
-        default:
-          write(path + '/public/stylesheets/style.css', css);
-      }
-    });
-
-    mkdir(path + '/routes', function(){
-      write(path + '/routes/index.js', index);
-      write(path + '/routes/user.js', users);
-    });
-
-    mkdir(path + '/views', function(){
-      switch (program.template) {
-        case 'ejs':
-          write(path + '/views/index.ejs', ejsIndex);
-          break;
-        case 'jade':
-          write(path + '/views/layout.jade', jadeLayout);
-          write(path + '/views/index.jade', jadeIndex);
-          break;
-        case 'jshtml':
-          write(path + '/views/layout.jshtml', jshtmlLayout);
-          write(path + '/views/index.jshtml', jshtmlIndex);
-          break;
-        case 'hjs':
-          write(path + '/views/index.hjs', hoganIndex);
-          break;
-
-      }
-    });
-
-    // CSS Engine support
-    switch (program.css) {
-      case 'less':
-        app = app.replace('{css}', eol + 'app.use(require(\'less-middleware\')({ src: __dirname + \'/public\' }));');
-        break;
-      case 'stylus':
-        app = app.replace('{css}', eol + 'app.use(require(\'stylus\').middleware(__dirname + \'/public\'));');
-        break;
-      default:
-        app = app.replace('{css}', '');
-    }
-
-    // Session support
-    app = app.replace('{sess}', program.sessions
-      ? eol + 'app.use(express.cookieParser(\'your secret here\'));' + eol + 'app.use(express.session());'
-      : '');
-
-    // Template support
-    app = app.replace(':TEMPLATE', program.template);
-
-    // package.json
-    var pkg = {
-        name: 'application-name'
-      , version: '0.0.1'
-      , private: true
-      , scripts: { start: 'node app.js' }
-      , dependencies: {
-        express: version
-      }
-    }
-
-    if (program.template) pkg.dependencies[program.template] = '*';
-
-    // CSS Engine support
-    switch (program.css) {
-      case 'less':
-        pkg.dependencies['less-middleware'] = '*';
-        break;
-      default:
-        if (program.css) {
-          pkg.dependencies[program.css] = '*';
-        }
-    }
-
-    write(path + '/package.json', JSON.stringify(pkg, null, 2));
-    write(path + '/app.js', app);
-  });
-}
-
-/**
- * Check if the given directory `path` is empty.
- *
- * @param {String} path
- * @param {Function} fn
- */
-
-function emptyDirectory(path, fn) {
-  fs.readdir(path, function(err, files){
-    if (err && 'ENOENT' != err.code) throw err;
-    fn(!files || !files.length);
-  });
-}
-
-/**
- * echo str > path.
- *
- * @param {String} path
- * @param {String} str
- */
-
-function write(path, str) {
-  fs.writeFile(path, str);
-  console.log('   \x1b[36mcreate\x1b[0m : ' + path);
-}
-
-/**
- * Mkdir -p.
- *
- * @param {String} path
- * @param {Function} fn
- */
-
-function mkdir(path, fn) {
-  mkdirp(path, 0755, function(err){
-    if (err) throw err;
-    console.log('   \033[36mcreate\033[0m : ' + path);
-    fn && fn();
-  });
-}
-
-/**
- * Exit with the given `str`.
- *
- * @param {String} str
- */
-
-function abort(str) {
-  console.error(str);
-  process.exit(1);
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/index.js b/web/demos/package/node_modules/express/index.js
deleted file mode 100644
index bfe9934..0000000
--- a/web/demos/package/node_modules/express/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-
-module.exports = process.env.EXPRESS_COV
-  ? require('./lib-cov/express')
-  : require('./lib/express');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/lib/application.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/lib/application.js b/web/demos/package/node_modules/express/lib/application.js
deleted file mode 100644
index c5819fc..0000000
--- a/web/demos/package/node_modules/express/lib/application.js
+++ /dev/null
@@ -1,536 +0,0 @@
-/**
- * Module dependencies.
- */
-
-var connect = require('connect')
-  , Router = require('./router')
-  , methods = require('methods')
-  , middleware = require('./middleware')
-  , debug = require('debug')('express:application')
-  , locals = require('./utils').locals
-  , View = require('./view')
-  , utils = connect.utils
-  , path = require('path')
-  , http = require('http')
-  , join = path.join;
-
-/**
- * Application prototype.
- */
-
-var app = exports = module.exports = {};
-
-/**
- * Initialize the server.
- *
- *   - setup default configuration
- *   - setup default middleware
- *   - setup route reflection methods
- *
- * @api private
- */
-
-app.init = function(){
-  this.cache = {};
-  this.settings = {};
-  this.engines = {};
-  this.defaultConfiguration();
-};
-
-/**
- * Initialize application configuration.
- *
- * @api private
- */
-
-app.defaultConfiguration = function(){
-  // default settings
-  this.enable('x-powered-by');
-  this.enable('etag');
-  this.set('env', process.env.NODE_ENV || 'development');
-  this.set('subdomain offset', 2);
-  debug('booting in %s mode', this.get('env'));
-
-  // implicit middleware
-  this.use(connect.query());
-  this.use(middleware.init(this));
-
-  // inherit protos
-  this.on('mount', function(parent){
-    this.request.__proto__ = parent.request;
-    this.response.__proto__ = parent.response;
-    this.engines.__proto__ = parent.engines;
-    this.settings.__proto__ = parent.settings;
-  });
-
-  // router
-  this._router = new Router(this);
-  this.routes = this._router.map;
-  this.__defineGetter__('router', function(){
-    this._usedRouter = true;
-    this._router.caseSensitive = this.enabled('case sensitive routing');
-    this._router.strict = this.enabled('strict routing');
-    return this._router.middleware;
-  });
-
-  // setup locals
-  this.locals = locals(this);
-
-  // default locals
-  this.locals.settings = this.settings;
-
-  // default configuration
-  this.set('view', View);
-  this.set('views', process.cwd() + '/views');
-  this.set('jsonp callback name', 'callback');
-
-  this.configure('development', function(){
-    this.set('json spaces', 2);
-  });
-
-  this.configure('production', function(){
-    this.enable('view cache');
-  });
-};
-
-/**
- * Proxy `connect#use()` to apply settings to
- * mounted applications.
- *
- * @param {String|Function|Server} route
- * @param {Function|Server} fn
- * @return {app} for chaining
- * @api public
- */
-
-app.use = function(route, fn){
-  var app;
-
-  // default route to '/'
-  if ('string' != typeof route) fn = route, route = '/';
-
-  // express app
-  if (fn.handle && fn.set) app = fn;
-
-  // restore .app property on req and res
-  if (app) {
-    app.route = route;
-    fn = function(req, res, next) {
-      var orig = req.app;
-      app.handle(req, res, function(err){
-        req.__proto__ = orig.request;
-        res.__proto__ = orig.response;
-        next(err);
-      });
-    };
-  }
-
-  connect.proto.use.call(this, route, fn);
-
-  // mounted an app
-  if (app) {
-    app.parent = this;
-    app.emit('mount', this);
-  }
-
-  return this;
-};
-
-/**
- * Register the given template engine callback `fn`
- * as `ext`.
- *
- * By default will `require()` the engine based on the
- * file extension. For example if you try to render
- * a "foo.jade" file Express will invoke the following internally:
- *
- *     app.engine('jade', require('jade').__express);
- *
- * For engines that do not provide `.__express` out of the box,
- * or if you wish to "map" a different extension to the template engine
- * you may use this method. For example mapping the EJS template engine to
- * ".html" files:
- *
- *     app.engine('html', require('ejs').renderFile);
- *
- * In this case EJS provides a `.renderFile()` method with
- * the same signature that Express expects: `(path, options, callback)`,
- * though note that it aliases this method as `ejs.__express` internally
- * so if you're using ".ejs" extensions you dont need to do anything.
- *
- * Some template engines do not follow this convention, the
- * [Consolidate.js](https://github.com/visionmedia/consolidate.js)
- * library was created to map all of node's popular template
- * engines to follow this convention, thus allowing them to
- * work seamlessly within Express.
- *
- * @param {String} ext
- * @param {Function} fn
- * @return {app} for chaining
- * @api public
- */
-
-app.engine = function(ext, fn){
-  if ('function' != typeof fn) throw new Error('callback function required');
-  if ('.' != ext[0]) ext = '.' + ext;
-  this.engines[ext] = fn;
-  return this;
-};
-
-/**
- * Map the given param placeholder `name`(s) to the given callback(s).
- *
- * Parameter mapping is used to provide pre-conditions to routes
- * which use normalized placeholders. For example a _:user_id_ parameter
- * could automatically load a user's information from the database without
- * any additional code,
- *
- * The callback uses the same signature as middleware, the only differencing
- * being that the value of the placeholder is passed, in this case the _id_
- * of the user. Once the `next()` function is invoked, just like middleware
- * it will continue on to execute the route, or subsequent parameter functions.
- *
- *      app.param('user_id', function(req, res, next, id){
- *        User.find(id, function(err, user){
- *          if (err) {
- *            next(err);
- *          } else if (user) {
- *            req.user = user;
- *            next();
- *          } else {
- *            next(new Error('failed to load user'));
- *          }
- *        });
- *      });
- *
- * @param {String|Array} name
- * @param {Function} fn
- * @return {app} for chaining
- * @api public
- */
-
-app.param = function(name, fn){
-  var self = this
-    , fns = [].slice.call(arguments, 1);
-
-  // array
-  if (Array.isArray(name)) {
-    name.forEach(function(name){
-      fns.forEach(function(fn){
-        self.param(name, fn);
-      });
-    });
-  // param logic
-  } else if ('function' == typeof name) {
-    this._router.param(name);
-  // single
-  } else {
-    if (':' == name[0]) name = name.substr(1);
-    fns.forEach(function(fn){
-      self._router.param(name, fn);
-    });
-  }
-
-  return this;
-};
-
-/**
- * Assign `setting` to `val`, or return `setting`'s value.
- *
- *    app.set('foo', 'bar');
- *    app.get('foo');
- *    // => "bar"
- *
- * Mounted servers inherit their parent server's settings.
- *
- * @param {String} setting
- * @param {String} val
- * @return {Server} for chaining
- * @api public
- */
-
-app.set = function(setting, val){
-  if (1 == arguments.length) {
-    return this.settings[setting];
-  } else {
-    this.settings[setting] = val;
-    return this;
-  }
-};
-
-/**
- * Return the app's absolute pathname
- * based on the parent(s) that have
- * mounted it.
- *
- * For example if the application was
- * mounted as "/admin", which itself
- * was mounted as "/blog" then the
- * return value would be "/blog/admin".
- *
- * @return {String}
- * @api private
- */
-
-app.path = function(){
-  return this.parent
-    ? this.parent.path() + this.route
-    : '';
-};
-
-/**
- * Check if `setting` is enabled (truthy).
- *
- *    app.enabled('foo')
- *    // => false
- *
- *    app.enable('foo')
- *    app.enabled('foo')
- *    // => true
- *
- * @param {String} setting
- * @return {Boolean}
- * @api public
- */
-
-app.enabled = function(setting){
-  return !!this.set(setting);
-};
-
-/**
- * Check if `setting` is disabled.
- *
- *    app.disabled('foo')
- *    // => true
- *
- *    app.enable('foo')
- *    app.disabled('foo')
- *    // => false
- *
- * @param {String} setting
- * @return {Boolean}
- * @api public
- */
-
-app.disabled = function(setting){
-  return !this.set(setting);
-};
-
-/**
- * Enable `setting`.
- *
- * @param {String} setting
- * @return {app} for chaining
- * @api public
- */
-
-app.enable = function(setting){
-  return this.set(setting, true);
-};
-
-/**
- * Disable `setting`.
- *
- * @param {String} setting
- * @return {app} for chaining
- * @api public
- */
-
-app.disable = function(setting){
-  return this.set(setting, false);
-};
-
-/**
- * Configure callback for zero or more envs,
- * when no `env` is specified that callback will
- * be invoked for all environments. Any combination
- * can be used multiple times, in any order desired.
- *
- * Examples:
- *
- *    app.configure(function(){
- *      // executed for all envs
- *    });
- *
- *    app.configure('stage', function(){
- *      // executed staging env
- *    });
- *
- *    app.configure('stage', 'production', function(){
- *      // executed for stage and production
- *    });
- *
- * Note:
- *
- *  These callbacks are invoked immediately, and
- *  are effectively sugar for the following:
- *
- *     var env = process.env.NODE_ENV || 'development';
- *
- *      switch (env) {
- *        case 'development':
- *          ...
- *          break;
- *        case 'stage':
- *          ...
- *          break;
- *        case 'production':
- *          ...
- *          break;
- *      }
- *
- * @param {String} env...
- * @param {Function} fn
- * @return {app} for chaining
- * @api public
- */
-
-app.configure = function(env, fn){
-  var envs = 'all'
-    , args = [].slice.call(arguments);
-  fn = args.pop();
-  if (args.length) envs = args;
-  if ('all' == envs || ~envs.indexOf(this.settings.env)) fn.call(this);
-  return this;
-};
-
-/**
- * Delegate `.VERB(...)` calls to `router.VERB(...)`.
- */
-
-methods.forEach(function(method){
-  app[method] = function(path){
-    if ('get' == method && 1 == arguments.length) return this.set(path);
-
-    // deprecated
-    if (Array.isArray(path)) {
-      console.trace('passing an array to app.VERB() is deprecated and will be removed in 4.0');
-    }
-
-    // if no router attached yet, attach the router
-    if (!this._usedRouter) this.use(this.router);
-
-    // setup route
-    this._router[method].apply(this._router, arguments);
-    return this;
-  };
-});
-
-/**
- * Special-cased "all" method, applying the given route `path`,
- * middleware, and callback to _every_ HTTP method.
- *
- * @param {String} path
- * @param {Function} ...
- * @return {app} for chaining
- * @api public
- */
-
-app.all = function(path){
-  var args = arguments;
-  methods.forEach(function(method){
-    app[method].apply(this, args);
-  }, this);
-  return this;
-};
-
-// del -> delete alias
-
-app.del = app.delete;
-
-/**
- * Render the given view `name` name with `options`
- * and a callback accepting an error and the
- * rendered template string.
- *
- * Example:
- *
- *    app.render('email', { name: 'Tobi' }, function(err, html){
- *      // ...
- *    })
- *
- * @param {String} name
- * @param {String|Function} options or fn
- * @param {Function} fn
- * @api public
- */
-
-app.render = function(name, options, fn){
-  var opts = {}
-    , cache = this.cache
-    , engines = this.engines
-    , view;
-
-  // support callback function as second arg
-  if ('function' == typeof options) {
-    fn = options, options = {};
-  }
-
-  // merge app.locals
-  utils.merge(opts, this.locals);
-
-  // merge options._locals
-  if (options._locals) utils.merge(opts, options._locals);
-
-  // merge options
-  utils.merge(opts, options);
-
-  // set .cache unless explicitly provided
-  opts.cache = null == opts.cache
-    ? this.enabled('view cache')
-    : opts.cache;
-
-  // primed cache
-  if (opts.cache) view = cache[name];
-
-  // view
-  if (!view) {
-    view = new (this.get('view'))(name, {
-      defaultEngine: this.get('view engine'),
-      root: this.get('views'),
-      engines: engines
-    });
-
-    if (!view.path) {
-      var err = new Error('Failed to lookup view "' + name + '"');
-      err.view = view;
-      return fn(err);
-    }
-
-    // prime the cache
-    if (opts.cache) cache[name] = view;
-  }
-
-  // render
-  try {
-    view.render(opts, fn);
-  } catch (err) {
-    fn(err);
-  }
-};
-
-/**
- * Listen for connections.
- *
- * A node `http.Server` is returned, with this
- * application (which is a `Function`) as its
- * callback. If you wish to create both an HTTP
- * and HTTPS server you may do so with the "http"
- * and "https" modules as shown here:
- *
- *    var http = require('http')
- *      , https = require('https')
- *      , express = require('express')
- *      , app = express();
- *
- *    http.createServer(app).listen(80);
- *    https.createServer({ ... }, app).listen(443);
- *
- * @return {http.Server}
- * @api public
- */
-
-app.listen = function(){
-  var server = http.createServer(this);
-  return server.listen.apply(server, arguments);
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/lib/express.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/lib/express.js b/web/demos/package/node_modules/express/lib/express.js
deleted file mode 100644
index c204849..0000000
--- a/web/demos/package/node_modules/express/lib/express.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * Module dependencies.
- */
-
-var connect = require('connect')
-  , proto = require('./application')
-  , Route = require('./router/route')
-  , Router = require('./router')
-  , req = require('./request')
-  , res = require('./response')
-  , utils = connect.utils;
-
-/**
- * Expose `createApplication()`.
- */
-
-exports = module.exports = createApplication;
-
-/**
- * Expose mime.
- */
-
-exports.mime = connect.mime;
-
-/**
- * Create an express application.
- *
- * @return {Function}
- * @api public
- */
-
-function createApplication() {
-  var app = connect();
-  utils.merge(app, proto);
-  app.request = { __proto__: req, app: app };
-  app.response = { __proto__: res, app: app };
-  app.init();
-  return app;
-}
-
-/**
- * Expose connect.middleware as express.*
- * for example `express.logger` etc.
- */
-
-for (var key in connect.middleware) {
-  Object.defineProperty(
-      exports
-    , key
-    , Object.getOwnPropertyDescriptor(connect.middleware, key));
-}
-
-/**
- * Error on createServer().
- */
-
-exports.createServer = function(){
-  console.warn('Warning: express.createServer() is deprecated, express');
-  console.warn('applications no longer inherit from http.Server,');
-  console.warn('please use:');
-  console.warn('');
-  console.warn('  var express = require("express");');
-  console.warn('  var app = express();');
-  console.warn('');
-  return createApplication();
-};
-
-/**
- * Expose the prototypes.
- */
-
-exports.application = proto;
-exports.request = req;
-exports.response = res;
-
-/**
- * Expose constructors.
- */
-
-exports.Route = Route;
-exports.Router = Router;
-
-// Error handler title
-
-exports.errorHandler.title = 'Express';
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/express/lib/middleware.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/express/lib/middleware.js b/web/demos/package/node_modules/express/lib/middleware.js
deleted file mode 100644
index e07dd4c..0000000
--- a/web/demos/package/node_modules/express/lib/middleware.js
+++ /dev/null
@@ -1,32 +0,0 @@
-
-/**
- * Module dependencies.
- */
-
-var utils = require('./utils');
-
-/**
- * Initialization middleware, exposing the
- * request and response to eachother, as well
- * as defaulting the X-Powered-By header field.
- *
- * @param {Function} app
- * @return {Function}
- * @api private
- */
-
-exports.init = function(app){
-  return function expressInit(req, res, next){
-    if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express');
-    req.res = res;
-    res.req = req;
-    req.next = next;
-
-    req.__proto__ = app.request;
-    res.__proto__ = app.response;
-
-    res.locals = res.locals || utils.locals(res);
-
-    next();
-  }
-};


[44/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/app/scripts/5f986af9.scripts.js
----------------------------------------------------------------------
diff --git a/web/demos/package/app/scripts/5f986af9.scripts.js b/web/demos/package/app/scripts/5f986af9.scripts.js
deleted file mode 100644
index 724adf5..0000000
--- a/web/demos/package/app/scripts/5f986af9.scripts.js
+++ /dev/null
@@ -1,19 +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.
- */
-!function(){"use strict";angular.module("widgets",["socket"]),angular.module("twitter",["rest","socket","widgets","ngGrid"]),angular.module("mobile",["rest","widgets","ngGrid","google-maps"]),angular.module("machine",["ng","rest","widgets"]),angular.module("dimensions",["ng","rest","widgets"]),angular.module("fraud",["rest","widgets"]),angular.module("app",["ngRoute","socket","twitter","mobile","machine","dimensions","fraud"]),angular.module("app").config(["$routeProvider","socketProvider",function(a,b){window.settings&&b.setWebSocketURL(settings.webSocketURL),a.when("/",{templateUrl:"views/welcome.html"}).when("/twitterUrls",{templateUrl:"views/twitter.html",controller:"TwitterUrlsController"}).when("/twitterHashtags",{templateUrl:"views/twitter.html",controller:"TwitterHashtagsController"}).when("/mobile",{templateUrl:"views/mobile.html",controller:"MobileController"}).when("/machine",{templateUrl:"views/machine.html",controller:"MachineController"}).when("/dimensions",{templateUr
 l:"views/dimensions.html",controller:"DimensionsController"}).when("/fraud",{templateUrl:"views/fraud.html",controller:"FraudController"})}])}(),function(){"use strict";angular.module("rest",["ng","restangular"]).factory("rest",["$q","Restangular",function(a,b){return{getApp:function(c){var d=a.defer();return b.oneUrl("applications","ws/v2/applications").get().then(function(a){var b=null;if(a&&a.apps&&a.apps.length>0){var e=_.where(a.apps,{name:c,state:"RUNNING"});if(e.length>0){e=_.sortBy(e,function(a){return parseInt(a.elapsedTime,10)});var f=e[0];d.resolve(f)}else b=c+" is not found. Please make sure application is running."}else b="No applications available.";b&&(d.reject(b),jQuery.pnotify({title:"Error",text:b,type:"error",icon:!1,hide:!1}))}),d.promise},getMachineData:function(a){var c=b.one("machine").get(a);return c.then(null,function(a){jQuery.pnotify({title:"Error",text:"Error getting data from server. Status Code: "+a.status,type:"error",icon:!1,hide:!1})}),c},getDimensio
 nsData:function(a){var c=b.one("dimensions").get(a);return c.then(null,function(a){jQuery.pnotify({title:"Error",text:"Error getting data from server. Status Code: "+a.status,type:"error",icon:!1,hide:!1})}),c}}}]).run(function(){})}(),function(){"use strict";angular.module("socket",[]).factory("visibly",["$window",function(a){return a.visibly}]).provider("socket",function(){var a,b;return{$get:["$q","$rootScope","$timeout","visibly",function(c,d,e,f){if(!a&&!b)throw"WebSocket URL is not defined";var g=b?b:new WebSocket(a),h=c.defer();g.onopen=function(){h.resolve(),d.$apply(),jQuery.pnotify({title:"WebSocket",text:"WebSocket connection established.",type:"success",delay:2e3,icon:!1,history:!1})};var i=!1;g.onclose=function(){i||jQuery.pnotify({title:"WebSocket Closed",text:"WebSocket connection has been closed. Try refreshing the page.",type:"error",icon:!1,hide:!1,history:!1})},g.onerror=function(){i=!0,jQuery.pnotify({title:"WebSocket Error",text:"WebSocket error. Try refreshing 
 the page.",type:"error",icon:!1,hide:!1,history:!1})};var j={},k=!1;g.onmessage=function(a){if(!k){var b=JSON.parse(a.data),c=b.topic;j.hasOwnProperty(c)&&j[c].fire(b)}};var l;return f.onHidden(function(){l=e(function(){k=!0,l=null},6e4)}),f.onVisible(function(){k=!1,l&&e.cancel(l)}),{send:function(a){var b=JSON.stringify(a);h.promise.then(function(){console.log("send "+b),g.send(b)})},publish:function(a,b){var c={type:"publish",topic:a,data:b};this.send(c)},subscribe:function(a,b,c){var d=j[a];if(!d){var e={type:"subscribe",topic:a};this.send(e),d=jQuery.Callbacks(),j[a]=d}d.add(b),c&&c.$on("$destroy",function(){this.unsubscribe(a,b)}.bind(this))},unsubscribe:function(a,b){if(j.hasOwnProperty(a)){var c=j[a];c.remove(b)}}}}],setWebSocketURL:function(b){a=b},setWebSocketObject:function(a){b=a}}})}(),function(){"use strict";angular.module("widgets").directive("lineChart",function(){return{template:"<div></div>",scope:{chart:"="},restrict:"E",replace:!0,link:function(a,b){function c(a)
 {var b=a.data;b||(b=[]);var c=new google.visualization.DataTable;c.addColumn("datetime"),c.addColumn("number"),c.addRows(b.length);for(var e=new google.visualization.DataView(c),f=0;f<b.length;f++){var g=b[f];c.setCell(f,0,new Date(g.timestamp));var h=parseFloat(g.value);c.setCell(f,1,h)}var i;i=0===b.length&&a.emptyChartOptions?a.emptyChartOptions():a.options,d.draw(e,i)}var d=new google.visualization.LineChart(b[0]);a.$watch("chart",function(a){a&&c(a)})}}})}(),function(){"use strict";angular.module("widgets").directive("gauge",function(){return{restrict:"A",replace:!0,scope:{label:"@",min:"=",max:"=",value:"="},link:function(a,b,c){var d={size:280,label:c.label,min:void 0!==a.min?a.min:0,max:void 0!==a.max?a.max:100,minorTicks:5},e=d.max-d.min;d.yellowZones=[{from:d.min+.75*e,to:d.min+.9*e}],d.redZones=[{from:d.min+.9*e,to:d.max}],a.gauge=new Gauge(b[0],d),a.gauge.render(),a.gauge.redraw(a.value),a.$watch("value",function(){a.gauge&&a.gauge.redraw(a.value)})}}})}(),function(){"us
 e strict";angular.module("widgets").directive("widgetsBarChart",function(){return{restrict:"A",scope:{data:"=",label:"@",onClick:"&"},link:function(a,b){var c=d3.select(b[0]).append("svg").attr("width","100%");window.onresize=function(){return a.$apply()},a.$watch(function(){return angular.element(window)[0].innerWidth},function(){return a.render(a.data)}),a.$watch("data",function(b){return a.render(b)},!0),a.render=function(d){c.selectAll("*").remove();var e,f,g;e=d3.select(b[0])[0][0].offsetWidth-20,f=35*a.data.length,g=98,c.attr("height",f),c.selectAll("rect").data(d).enter().append("rect").on("click",function(b){return a.onClick({item:b})}).attr("height",30).attr("width",0).attr("x",10).attr("y",function(a,b){return 35*b}).attr("width",function(a){var b=a.score/(g/e);return b>10?b:10}),c.selectAll("text").data(d).enter().append("text").attr("fill","#fff").attr("y",function(a,b){return 35*b+22}).attr("x",15).html(function(b){return b[a.label]})}}}})}(),function(){"use strict";ang
 ular.module("widgets").directive("widgetsStat",["$timeout","socket",function(a,b){return{restrict:"A",templateUrl:"views/stat.html",scope:{app:"=",label:"@",onClick:"&"},link:function(c){function d(){c.elapsed=e+(Date.now()-f),a(d,1e3)}c.totalEmitted=0,c.totalProcessed=0,c.elapsed=0;var e,f;c.$watch("app",function(a){if(a){e=parseInt(a.elapsedTime),f=Date.now(),d();var g="applications."+a.id;b.subscribe(g,function(a){var b=a.data;c.totalEmitted=b.tuplesEmittedPSMA,c.totalProcessed=b.totalTuplesProcessed,c.$apply()},c)}})}}}])}(),function(){"use strict";angular.module("widgets").filter("elapsed",function(){return function(a){var b={timeChunk:1*a,unixUptime:!0};_.defaults(b,{compareDate:+new Date,timeChunk:void 0,maxUnit:"year",unixUptime:!1,max_levels:3,timeStamp:a||0});var c=void 0!==b.timeChunk?b.timeChunk:b.compareDate-b.timeStamp,d="",e=", ",f=0,g=b.max_levels,h=1e3,i=60*h,j=60*i,k=24*j,l=7*k,m=4*l,n=365*k;if(b.unixUptime){var o=Math.floor(c/k);c-=o*k;var p=Math.floor(c/j);c-=p*j
 ;var q=Math.round(c/i);if(0===o){q=Math.floor(c/i),c-=q*i;var r=Math.round(c/1e3);d=(10>p?"0":"")+p+":"+(10>q?"0":"")+q+":"+(10>r?"0":"")+r}else d=o+" days, "+p.toString()+":"+(10>q?"0":"")+q.toString()}else{for(var s=[{plural:"years",singular:"year",ms:n},{plural:"months",singular:"month",ms:m},{plural:"weeks",singular:"week",ms:l},{plural:"days",singular:"day",ms:k},{plural:"hours",singular:"hour",ms:j},{plural:"minutes",singular:"minute",ms:i},{plural:"seconds",singular:"second",ms:h}],t=!1,u=0;u<s.length;u++)if(b.maxUnit===s[u].singular&&(t=!0),!(c<s[u].ms)&&t){f++;var v=Math.floor(c/s[u].ms),w=1===v?s[u].singular:s[u].plural;if(d+=v+" "+w+e,c%=s[u].ms,f>=g)break}d=d.substring(0,d.length-e.length)}return d}})}(),function(){"use strict";angular.module("twitter").controller("TwitterUrlsController",["$scope","rest",function(a,b){b.getApp(settings.twitterUrls.appName).then(function(b){a.app=b,a.appURL=settings.appsURL+b.id}),a.topic=settings.twitterUrls.topic,a.pageTitle="Twitter To
 p URLs",a.entity="URLs",a.gridTitle="Twitter Top URLs",a.chartTitle="Top 10 URLs Chart",a.colName="URL",a.formatter=function(a){return'<a class="svg-link" xlink:href="'+a+'">'+a+"</a>"}}]).controller("TwitterHashtagsController",["$scope","rest",function(a,b){b.getApp(settings.twitterHashtags.appName).then(function(b){a.app=b,a.appURL=settings.appsURL+b.id}),a.topic=settings.twitterHashtags.topic,a.pageTitle="Twitter Top Hashtags",a.entity="hashtags",a.gridTitle="Twitter Top Hashtags",a.chartTitle="Top 10 Hashtags Chart",a.colName="Hashtag",a.formatter=function(a){return'<a class="svg-link" xlink:href="https://twitter.com/search?q=%23'+encodeURIComponent(a)+'">'+a+"</a>"}}]).controller("TwitterGridControlller",["$scope","socket",function(a,b){b.subscribe(a.topic,function(b){var c=[];jQuery.each(b.data,function(a,b){c.push({name:a,value:parseInt(b,10)})}),c=_.sortBy(c,function(a){return-a.value}),a.topTen=c,a.$apply()},a),a.gridOptions={data:"topTen",enableColumnResize:!0,columnDefs:[
 {field:"name",displayName:a.colName,width:"75%",sortable:!1},{field:"value",displayName:"Count",width:"25%",sortable:!1}]}}]).controller("TwitterBarChartController",["$scope","socket",function(a,b){b.subscribe(a.topic,function(b){var c=[];jQuery.each(b.data,function(a,b){c.push({name:a,value:parseInt(b,10)})}),c=_.sortBy(c,function(a){return-a.value});var d=c[0].value;_.each(c,function(b){a.formatter&&(b.name=a.formatter(b.name)),b.name+=" - "+b.value,b.score=b.value/d*100}),a.twitterBarChartData=c,a.$apply()},a),a.twitterBarChartData=[]}])}(),function(){"use strict";function a(a){var b=a.location.match(/\((\d+),(\d+)/),c=parseInt(b[1],10),d=parseInt(b[2],10),e=parseInt(a.phone,10),f=37.40180101292334+.01*(e%4-2)-.005*c,g=-121.9966721534729+.01*(e%8-4)+.007*d;return{latitude:f,longitude:g,label:a.phone,phone:a.phone}}angular.module("mobile").controller("MobileController",["$scope","rest","socket",function(b,c,d){c.getApp(settings.mobile.appName).then(function(a){b.app=a,b.appURL=set
 tings.appsURL+a.id});var e={};d.subscribe(settings.mobile.topic.out,function(c){var d=c.data;if(d.hasOwnProperty("removed"))delete e[d.phone];else{var f=a(d);e[d.phone]=f}b.$broadcast("datachanged",e)},b)}]).controller("MobileGridControlller",["$scope","$filter","$timeout","socket",function(a,b,c,d){a.$on("datachanged",function(b,c){a.gridData=_.values(c)}),a.phone="",a.addPhone=function(){var b={command:"add",phone:a.phone},c={type:"publish",topic:settings.mobile.topic.in,data:b};d.send(c),a.phone=""},a.removePhone=function(a){var b={command:"del",phone:a},c={type:"publish",topic:settings.mobile.topic.in,data:b};d.send(c)},a.gridOptions={data:"gridData",enableColumnResize:!0,enableRowSelection:!1,columnDefs:[{field:"phone",displayName:"Phone",width:"30%",sortable:!1},{field:"latitude",displayName:"Latitude",cellFilter:"number:3",width:"30%",sortable:!1},{field:"longitude",displayName:"Longitude",cellFilter:"number:3",width:"30%",sortable:!1},{field:"phone",displayName:"",cellTempla
 te:'<div class="ngCellText" ng-class="col.colIndex()" ng-click="removePhone(COL_FIELD)"><i class="icon-trash"></i></div>',cellClass:"mobile-grid-remove",width:"10%",sortable:!1}]}}]).controller("MapController",["$scope","socket",function(a){google.maps.visualRefresh=!0,a.$on("datachanged",function(b,c){a.markersProperty=_.values(c)}),angular.extend(a,{position:{coords:{latitude:37.36197126180853,longitude:-121.92674696445465}},zoomProperty:12})}])}(),function(){"use strict";function a(a){return function(){var b=Date.now(),c=new Date(b),d=new Date(b-60*a.lookback*1e3),f=jQuery.extend({},e,{vAxis:{minValue:0,maxValue:100},hAxis:{viewWindow:{min:d,max:c}}});return f}}function b(a,b){return _.map(a,function(a){return{timestamp:a.timestamp,value:a[b]}})}function c(a){return{customer:a.customer.value,product:a.product.value,os:a.os.value,software1:a.software1.value,software2:a.software2.value,deviceId:a.deviceId.value,lookback:a.lookback}}function d(a,b,d){this.rest=a,this.scope=b,this.ma
 x=b.lookback,this.dataCache=null,this.callback=d,this.cancelled=!1,this.interval=null,this.timeout=null,this.params=c(this.scope)}var e={legend:"none",vAxis:{format:settings.machine.metricformat},chartArea:{top:20,height:240}};d.prototype={cancel:function(){this.cancelled=!0,this.scope.requestProgress=0,clearInterval(this.interval),clearTimeout(this.timeout)},responseStatus:function(){this.scope.requestProgress=Math.round((Date.now()-this.requestStartTime)/1e3),this.scope.$apply()},fetchMachineData:function(){this.dataCache&&this.dataCache.length&&(this.params.lastTimestamp=_.last(this.dataCache).timestamp);var a=this.max;this.requestStartTime=Date.now(),this.interval=setInterval(this.responseStatus.bind(this),250);var b=this;this.rest.getMachineData(this.params).then(function(c){if(!b.cancelled){b.scope.response=c;var d=c.minutes;b.scope.requestProgress=0,clearInterval(b.interval);var e=Date.now();if(b.scope.lastResponse=new Date(e),b.scope.responseTime=e-b.requestStartTime,b.dataC
 ache){if(d.length>0){b.scope.minutesCached=b.dataCache.length,b.scope.minutesReceived=d.length,b.dataCache.pop();var f=b.dataCache.length+d.length;f>a&&b.dataCache.splice(0,f-a),b.dataCache.push.apply(b.dataCache,d)}}else b.dataCache=d,b.scope.minutesCached=0,b.scope.minutesReceived=d.length;b.callback(b.dataCache);var g=settings.machine.pollInterval-(Date.now()-b.requestStartTime);g=Math.max(0,g),b.timeout=setTimeout(b.fetchMachineData.bind(b),g)}},function(){b.cancel()})}},angular.module("machine").controller("MachineController",["$scope","$timeout","$location","$routeParams","rest",function(f,g,h,i,j){function k(a,b){var c=f.range(a),d=_.map(c,function(a){return{value:String(a),label:b+" "+a}});d.splice(0,0,{value:"",label:"ALL "}),f.select[a]=d;var e=null;n[a]&&(e=_.findWhere(d,{value:n[a]})),f[a]=e?e:d[0]}function l(a){if(a&&a.length>0){var c=_.last(a);f.cpu=parseFloat(c.cpu),f.ram=parseFloat(c.ram),f.hdd=parseFloat(c.hdd)}f.cpuChart={data:b(a,"cpu"),options:e,emptyChartOptions
 :o},f.ramChart={data:b(a,"ram"),options:e,emptyChartOptions:o},f.hddChart={data:b(a,"hdd"),options:e,emptyChartOptions:o}}function m(){p&&p.cancel(),p=new d(j,f,l),p.fetchMachineData()}var n=new URI(window.location.href).query(!0),o=a(f);j.getApp(settings.machine.appName).then(function(a){f.app=a,f.appURL=settings.appsURL+a.id}),f.cpu=0,f.ram=0,f.hdd=0,f.range=function(a){var b=settings.machine.range[a];return _.range(b.start,b.stop+1)},f.select={},k("customer","Customer"),k("product","Product"),k("os","OS"),k("software1","Software1 Version"),k("software2","Software2 Version"),k("deviceId","Device ID"),f.lookback=n.lookback?parseInt(n.lookback,10):settings.machine.lookback,f.reload=function(){window.location.href=window.location.pathname+"?"+jQuery.param(c(f))},f.cpuChart={emptyChartOptions:o},f.ramChart={emptyChartOptions:o},f.hddChart={emptyChartOptions:o};var p=null;f.$watch("[customer, product, os, software1, software1, deviceId]",function(){m()},!0);var q,r=!0;f.$watch("lookbac
 k",function(){r?r=!1:(clearTimeout(q),q=setTimeout(m,500))}),f.$on("$destroy",function(){p&&p.cancel()}.bind(this))}])}(),function(){"use strict";function a(a){return function(){var b=Date.now(),c=new Date(b),d=new Date(b-60*a.lookback*1e3),e=jQuery.extend({},f,{vAxis:{minValue:0,maxValue:100},hAxis:{viewWindow:{min:d,max:c}}});return e}}function b(a,b){return _.map(a,function(a){return{timestamp:a.timestamp,value:a[b]}})}function c(a,b){return _.map(a,function(a){return{timestamp:a.timestamp,value:b(a)}})}function d(a){return{publisher:a.publisher.value,advertiser:a.advertiser.value,adunit:a.adunit.value,lookback:a.lookback,includeLastMinute:a.includeLastMinute}}function e(a,b,c){this.rest=a,this.scope=b,this.max=b.lookback,this.dataCache=null,this.callback=c,this.cancelled=!1,this.interval=null,this.timeout=null,this.params=d(this.scope)}var f={legend:"none",chartArea:{top:20,height:240}};e.prototype={cancel:function(){this.cancelled=!0,this.scope.requestProgress=0,clearInterval(t
 his.interval),clearTimeout(this.timeout)},responseStatus:function(){this.scope.requestProgress=Math.round((Date.now()-this.requestStartTime)/1e3),this.scope.$apply()},fetchDimensionsData:function(){this.dataCache&&this.dataCache.length&&(this.params.lastTimestamp=_.last(this.dataCache).timestamp);var a=this.max;this.requestStartTime=Date.now(),this.interval=setInterval(this.responseStatus.bind(this),250);var b=this;this.rest.getDimensionsData(this.params).then(function(c){if(!b.cancelled){b.scope.response=c;var d=c.minutes;b.scope.requestProgress=0,clearInterval(b.interval);var e=Date.now();if(b.scope.lastResponse=new Date(e),b.scope.responseTime=e-b.requestStartTime,b.dataCache){if(d.length>0){b.scope.minutesCached=b.dataCache.length,b.scope.minutesReceived=d.length,b.dataCache.pop();var f=b.dataCache.length+d.length;f>a&&b.dataCache.splice(0,f-a),b.dataCache.push.apply(b.dataCache,d)}}else b.dataCache=d,b.scope.minutesCached=0,b.scope.minutesReceived=d.length;b.callback(b.dataCach
 e);var g=1e3*b.scope.pollInterval-(Date.now()-b.requestStartTime);g=Math.max(0,g),b.timeout=setTimeout(b.fetchDimensionsData.bind(b),g)}},function(){b.cancel()})}},angular.module("dimensions").controller("DimensionsController",["$scope","$timeout","$location","$routeParams","rest",function(g,h,i,j,k){function l(a,b){var c=g.range(a),d=_.map(c,function(a){return{value:String(a),label:b+" "+a}});d.splice(0,0,{value:"",label:"ALL "}),g.select[a]=d;var e=null;p[a]&&(e=_.findWhere(d,{value:p[a]})),g[a]=e?e:d[0]}function m(a){g.costChart={data:b(a,"cost"),options:f,emptyChartOptions:q},g.revenueChart={data:b(a,"revenue"),options:f,emptyChartOptions:q},g.impressionsChart={data:b(a,"impressions"),options:f,emptyChartOptions:q},g.clicksChart={data:b(a,"clicks"),options:f,emptyChartOptions:q},g.ctrChart={data:c(a,function(a){return a.clicks/a.impressions*100}),options:f,emptyChartOptions:q},g.marginChart={data:c(a,function(a){return(a.cost-a.revenue)/a.revenue}),options:f,emptyChartOptions:q}
 }function n(){r&&r.cancel(),r=new e(k,g,m),r.fetchDimensionsData()}function o(a,b){var c,d=!0;g.$watch(a,function(){d?d=!1:(clearTimeout(c),c=setTimeout(n,b))})}var p=new URI(window.location.href).query(!0),q=a(g);k.getApp(settings.dimensions.appName).then(function(a){g.app=a,g.appURL=settings.appsURL+a.id}),g.pollInterval=settings.dimensions.pollInterval,g.includeLastMinute=!1,g.range=function(a){var b=settings.dimensions.range[a];return _.range(b.start,b.stop+1)},g.select={},l("publisher","Publisher"),l("advertiser","Advertiser"),l("adunit","Ad Unit"),g.lookback=p.lookback?parseInt(p.lookback,10):settings.dimensions.lookback,g.reload=function(){window.location.href=window.location.pathname+"?"+jQuery.param(d(g))},g.costChart={emptyChartOptions:q},g.revenueChart={emptyChartOptions:q},g.impressionsChart={emptyChartOptions:q},g.clicksChart={emptyChartOptions:q},g.ctrChart={emptyChartOptions:q},g.marginChart={emptyChartOptions:q};var r=null;g.$watch("[publisher, advertiser, adunit]",f
 unction(){n()},!0),o("lookback",500),o("pollInterval",500),o("includeLastMinute",0),g.$on("$destroy",function(){r&&r.cancel()}.bind(this))}])}(),function(){"use strict";angular.module("fraud").controller("FraudController",["$scope","rest","socket",function(a,b,c){function d(b){return a[b][Math.floor(Math.random()*a[b].length)]}function e(a){return Math.round(a)}function f(){var a=Math.floor(25*Math.random())+10;return a+"00 0000"}function g(){var a=Math.floor(4e5*Math.random())+1e7,b=a+"";return b.substring(0,4)+" "+b.substring(4)}function h(b){var c=a.alerts.push(b)-1,d=a.alertTypeTitles[b.alertType],e="";switch(b.alertType){case"smallThenLarge":e=['<article class="alert-msg low" style="display:none">',"<h1>"+d+"</h1>","<p>"+b.message+"</p>",'<div><a href="#" class="btn view-txn-btn" data-txidx="'+c+'">view details</a></div>',"</article>"].join("");break;case"sameBankId":console.log("same bank",b),e=['<article class="alert-msg high" style="display:none">',"<h1>"+d+"</h1>","<p>"+b.m
 essage+"</p>",'<div><a href="#" class="btn view-txn-btn" data-txidx="'+c+'">view details</a></div>',"</article>"].join("");break;default:e=['<article class="alert-msg medium" style="display:none">',"<h1>"+d+"</h1>","<p>"+b.message+"</p>",'<div><a href="#" class="btn view-txn-btn" data-txidx="'+c+'">view details</a></div>',"</article>"].join("")}var f=$(e);$("#alertDisplayBox").prepend(f),f.slideDown().animate({opacity:.5},180).animate({opacity:1},180).animate({opacity:.5},180).animate({opacity:1},180)}function i(a,b){c.publish(n,a),console.log("txn",a),b||$.pnotify({title:"Transaction Submitted",text:"<strong>card</strong>: "+a.bankIdNum+" "+a.ccNum+"<br/> <strong>amount</strong>: $"+k(a.amount)+"<br/> <strong>merchant</strong>: "+a.merchantId+", <strong>terminal</strong>: "+a.terminalId,type:"success"})}function j(a){var b="";switch(a.alertType){case"smallThenLarge":var c=a.alertData;b=["<strong>Card Number:</strong> "+c.fullCcNum+"<br/>","<strong>Zip Code:</strong> "+c.zipCode+"<b
 r/>","<strong>Merchant:</strong> "+c.merchantId+" ("+c.merchantType.toLowerCase().replace("_"," ")+")<br/>","<strong>Small Amount:</strong> $"+k(c.small)+"<br/>","<strong>Large Amount:</strong> $"+k(c.large)+"<br/>","<strong>Threshold:</strong> $"+k(c.threshold)+"<br/>","<strong>Time:</strong> "+new Date(1*c.time).toLocaleString()+"<br/>"].join("");break;case"sameBankId":var c=a.alertData;b=["<strong>Transaction Count:</strong> "+c.count+"<br/>","<strong>Bank ID Number:</strong> "+c.bankIdNum+"<br/>","<strong>Zip Code:</strong> "+c.zipCode+"<br/>","<strong>Merchant:</strong> "+c.merchantId+" ("+c.merchantType.toLowerCase().replace("_"," ")+")<br/>","<strong>Terminal:</strong> "+c.terminalId+"<br/>","<strong>Time:</strong> "+new Date(1*c.time).toLocaleString()+"<br/>"].join("");break;case"aboveAvg":var c=a.alertData;b=["<strong>Dollar Amount:</strong> $"+k(c.amount)+"<br/>","<strong>Last Average:</strong> $"+k(c.lastSmaValue)+"<br/>","<strong>Difference:</strong> $"+k(c.change)+"<br/
 >","<strong>Zip Code:</strong> "+c.zipCode+"<br/>","<strong>Merchant:</strong> "+c.merchantId+" ("+c.merchantType.toLowerCase().replace("_"," ")+")<br/>","<strong>Terminal:</strong> "+c.terminalId+"<br/>","<strong>Time:</strong> "+new Date(1*c.time).toLocaleString()+"<br/>"].join("")}return b}function k(a){return a=(1*a).toFixed(2),l(a)}function l(a){var b=a.toString().split(".");return b[0]=b[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),b.join(".")}function m(){p||(a.startedTime?$.get("/fraud/alertCount?since="+a.startedTime).done(function(b){var c=_.find(a.stats,function(a){return"numFrauds"==a.id}),d=_.reduce(b,function(a,b){return a+b},0);c.value=l(d),setTimeout(m,2e3)}):setTimeout(m,2e3))}var n="demos.app.frauddetect.submitTransaction",o=b.getApp(settings.fraud.appName);o.then(function(b){a.app=b,a.appURL=settings.appsURL+b.id,a.startedTime=b.startedTime}),a.alertTypeTitles={smallThenLarge:"Suspicious Transaction Sequence",sameCard:"Same Card Multiple Times",sameBankId:"Same Bank Nu
 mber Multiple Times",aboveAvg:"Above Average Transaction"},a.stats=[{id:"totalTxns",topic:"demos.app.frauddetect.totalTransactions",value:0,label:"Total Txns"},{id:"amtInLastSecond",topic:"demos.app.frauddetect.txLastSecond",value:0,label:"Total Dollars / sec"},{id:"avgAmtInLastSecond",topic:"demos.app.frauddetect.avgLastSecond",value:0,label:"Avg Txn Amount / sec"},{id:"numFrauds",topic:"demos.app.frauddetect.totalFrauds",value:0,label:"No. of Anomalies Detected"}],a.merchants=["Wal-Mart","Target","Amazon","Apple","Sears","Macys","JCPenny","Levis"],a.terminals=[1,2,3,4,5,6,7,8],a.zips=[94086,94087,94088,94089,94090,94091,94092,94093],a.actions=[{id:1,subtitle:a.alertTypeTitles.smallThenLarge,severity:"low",description:"This anomaly is when one credit card is used for a small purchase, then immediately again for a larger purchase. The idea here is that a scammer will first try a small purchase to ensure that the card works, then proceed with a larger purchase upon success.",generate
 Txns:function(){var a=f(),b=g();i({zipCode:d("zips"),merchantId:d("merchants"),terminalId:d("terminals"),bankIdNum:a,ccNum:b,amount:5}),setTimeout(function(){i({zipCode:d("zips"),merchantId:d("merchants"),terminalId:d("terminals"),bankIdNum:a,ccNum:b,amount:600})},5e3)}},{id:2,subtitle:a.alertTypeTitles.sameBankId,severity:"high",description:"This anomaly is detected when several transactions are made by cards issued by the same bank at the same terminal ID over moving window of 30 sec.",generateTxns:function(){var a=f().replace(/\d{4}$/,"1111"),b=d("zips"),c=d("terminals"),h=d("merchants"),j=setInterval(function(){i({zipCode:b,merchantId:h,terminalId:c,bankIdNum:a,ccNum:g(),amount:e(100+10*Math.random())},!0)},200);$.pnotify({title:"Several Transactions Being Sent",text:"<strong>Bank ID:</strong> "+a+", <strong>Merchant:</strong> "+h,type:"success"}),setTimeout(function(){clearInterval(j)},11e3)}},{id:3,subtitle:a.alertTypeTitles.aboveAvg,severity:"medium",description:"This anomaly
  is when a transaction at a given merchant significantly exceeds that merchant's average transaction amount.",generateTxns:function(){console.log("getting randomStats"),$.pnotify({type:"info",title:"Retrieving Average Information"}),$.get("/fraud/randomStats").done(function(a){var b=(f(),a.merchantId),c=a.terminalId,d=a.zipCode,h=e(a.sma+1500);setTimeout(function(){i({zipCode:d,merchantId:b,terminalId:c,bankIdNum:f(),ccNum:g(),amount:h})},1e3)})}}],o.then(function(){c.subscribe("demos.app.frauddetect.fraudAlert",function(a){"aboveAvg"===a.data.alertType&&console.log("aboveAvg",a.data),("true"===a.data.userGenerated||a.data.userGenerated===!0)&&h(a.data)},a),c.subscribe("demos.app.frauddetect.txSummary",function(b){var c=b.data;_.each(["amtInLastSecond","avgAmtInLastSecond","totalTxns","txnsInLastSecond"],function(b){var d=_.find(a.stats,function(a){return a.id==b});d&&(d.value=["amtInLastSecond","avgAmtInLastSecond"].indexOf(b)>-1?"$"+k(c[b]):l(c[b]))}),a.$apply()},a)}),a.stats.forE
 ach(function(b){c.subscribe(b.topic,function(c){console.log("stat topic "+b.topic+" data received: ",c),b.value=c.value,a.$apply()},a)}),a.alerts=[];var p=!1;$("#alertDisplayBox").on("click",".view-txn-btn",function(b){b.preventDefault();var c=$(this).attr("data-txidx"),d=a.alerts[c];$("#txn-modal .modal-body").html(j(d)),$("#txn-modal").modal()}),m(),a.clearFrauds=function(){$("#alertDisplayBox").html("")},a.$on("$destroy",function(){p=!0}.bind(this))}])}();


[50/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/.htaccess
----------------------------------------------------------------------
diff --git a/web/demos/app/.htaccess b/web/demos/app/.htaccess
deleted file mode 100644
index cb84cb9..0000000
--- a/web/demos/app/.htaccess
+++ /dev/null
@@ -1,543 +0,0 @@
-# Apache Configuration File
-
-# (!) Using `.htaccess` files slows down Apache, therefore, if you have access
-# to the main server config file (usually called `httpd.conf`), you should add
-# this logic there: http://httpd.apache.org/docs/current/howto/htaccess.html.
-
-# ##############################################################################
-# # CROSS-ORIGIN RESOURCE SHARING (CORS)                                       #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Cross-domain AJAX requests                                                 |
-# ------------------------------------------------------------------------------
-
-# Enable cross-origin AJAX requests.
-# http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity
-# http://enable-cors.org/
-
-# <IfModule mod_headers.c>
-#    Header set Access-Control-Allow-Origin "*"
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | CORS-enabled images                                                        |
-# ------------------------------------------------------------------------------
-
-# Send the CORS header for images when browsers request it.
-# https://developer.mozilla.org/en/CORS_Enabled_Image
-# http://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
-# http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/
-
-<IfModule mod_setenvif.c>
-    <IfModule mod_headers.c>
-        <FilesMatch "\.(gif|ico|jpe?g|png|svg|svgz|webp)$">
-            SetEnvIf Origin ":" IS_CORS
-            Header set Access-Control-Allow-Origin "*" env=IS_CORS
-        </FilesMatch>
-    </IfModule>
-</IfModule>
-
-# ------------------------------------------------------------------------------
-# | Web fonts access                                                           |
-# ------------------------------------------------------------------------------
-
-# Allow access from all domains for web fonts
-
-<IfModule mod_headers.c>
-    <FilesMatch "\.(eot|font.css|otf|ttc|ttf|woff)$">
-        Header set Access-Control-Allow-Origin "*"
-    </FilesMatch>
-</IfModule>
-
-
-# ##############################################################################
-# # ERRORS                                                                     #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | 404 error prevention for non-existing redirected folders                   |
-# ------------------------------------------------------------------------------
-
-# Prevent Apache from returning a 404 error for a rewrite if a directory
-# with the same name does not exist.
-# http://httpd.apache.org/docs/current/content-negotiation.html#multiviews
-# http://www.webmasterworld.com/apache/3808792.htm
-
-Options -MultiViews
-
-# ------------------------------------------------------------------------------
-# | Custom error messages / pages                                              |
-# ------------------------------------------------------------------------------
-
-# You can customize what Apache returns to the client in case of an error (see
-# http://httpd.apache.org/docs/current/mod/core.html#errordocument), e.g.:
-
-ErrorDocument 404 /404.html
-
-
-# ##############################################################################
-# # INTERNET EXPLORER                                                          #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Better website experience                                                  |
-# ------------------------------------------------------------------------------
-
-# Force IE to render pages in the highest available mode in the various
-# cases when it may not: http://hsivonen.iki.fi/doctype/ie-mode.pdf.
-
-<IfModule mod_headers.c>
-    Header set X-UA-Compatible "IE=edge"
-    # `mod_headers` can't match based on the content-type, however, we only
-    # want to send this header for HTML pages and not for the other resources
-    <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$">
-        Header unset X-UA-Compatible
-    </FilesMatch>
-</IfModule>
-
-# ------------------------------------------------------------------------------
-# | Cookie setting from iframes                                                |
-# ------------------------------------------------------------------------------
-
-# Allow cookies to be set from iframes in IE.
-
-# <IfModule mod_headers.c>
-#   Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | Screen flicker                                                             |
-# ------------------------------------------------------------------------------
-
-# Stop screen flicker in IE on CSS rollovers (this only works in
-# combination with the `ExpiresByType` directives for images from below).
-
-# BrowserMatch "MSIE" brokenvary=1
-# BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
-# BrowserMatch "Opera" !brokenvary
-# SetEnvIf brokenvary 1 force-no-vary
-
-
-# ##############################################################################
-# # MIME TYPES AND ENCODING                                                    #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Proper MIME types for all files                                            |
-# ------------------------------------------------------------------------------
-
-<IfModule mod_mime.c>
-
-  # Audio
-    AddType audio/mp4                                   m4a f4a f4b
-    AddType audio/ogg                                   oga ogg
-
-  # JavaScript
-    # Normalize to standard type (it's sniffed in IE anyways):
-    # http://tools.ietf.org/html/rfc4329#section-7.2
-    AddType application/javascript                      js jsonp
-    AddType application/json                            json
-
-  # Video
-    AddType video/mp4                                   mp4 m4v f4v f4p
-    AddType video/ogg                                   ogv
-    AddType video/webm                                  webm
-    AddType video/x-flv                                 flv
-
-  # Web fonts
-    AddType application/font-woff                       woff
-    AddType application/vnd.ms-fontobject               eot
-
-    # Browsers usually ignore the font MIME types and sniff the content,
-    # however, Chrome shows a warning if other MIME types are used for the
-    # following fonts.
-    AddType application/x-font-ttf                      ttc ttf
-    AddType font/opentype                               otf
-
-    # Make SVGZ fonts work on iPad:
-    # https://twitter.com/FontSquirrel/status/14855840545
-    AddType     image/svg+xml                           svg svgz
-    AddEncoding gzip                                    svgz
-
-  # Other
-    AddType application/octet-stream                    safariextz
-    AddType application/x-chrome-extension              crx
-    AddType application/x-opera-extension               oex
-    AddType application/x-shockwave-flash               swf
-    AddType application/x-web-app-manifest+json         webapp
-    AddType application/x-xpinstall                     xpi
-    AddType application/xml                             atom rdf rss xml
-    AddType image/webp                                  webp
-    AddType image/x-icon                                ico
-    AddType text/cache-manifest                         appcache manifest
-    AddType text/vtt                                    vtt
-    AddType text/x-component                            htc
-    AddType text/x-vcard                                vcf
-
-</IfModule>
-
-# ------------------------------------------------------------------------------
-# | UTF-8 encoding                                                             |
-# ------------------------------------------------------------------------------
-
-# Use UTF-8 encoding for anything served as `text/html` or `text/plain`.
-AddDefaultCharset utf-8
-
-# Force UTF-8 for certain file formats.
-<IfModule mod_mime.c>
-    AddCharset utf-8 .atom .css .js .json .rss .vtt .webapp .xml
-</IfModule>
-
-
-# ##############################################################################
-# # URL REWRITES                                                               #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Rewrite engine                                                             |
-# ------------------------------------------------------------------------------
-
-# Turning on the rewrite engine and enabling the `FollowSymLinks` option is
-# necessary for the following directives to work.
-
-# If your web host doesn't allow the `FollowSymlinks` option, you may need to
-# comment it out and use `Options +SymLinksIfOwnerMatch` but, be aware of the
-# performance impact: http://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks
-
-# Also, some cloud hosting services require `RewriteBase` to be set:
-# http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-mod-rewrite-not-working-on-my-site
-
-<IfModule mod_rewrite.c>
-    Options +FollowSymlinks
-  # Options +SymLinksIfOwnerMatch
-    RewriteEngine On
-  # RewriteBase /
-</IfModule>
-
-# ------------------------------------------------------------------------------
-# | Suppressing / Forcing the "www." at the beginning of URLs                  |
-# ------------------------------------------------------------------------------
-
-# The same content should never be available under two different URLs especially
-# not with and without "www." at the beginning. This can cause SEO problems
-# (duplicate content), therefore, you should choose one of the alternatives and
-# redirect the other one.
-
-# By default option 1 (no "www.") is activated:
-# http://no-www.org/faq.php?q=class_b
-
-# If you'd prefer to use option 2, just comment out all the lines from option 1
-# and uncomment the ones from option 2.
-
-# IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME!
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Option 1: rewrite www.example.com ā†’ example.com
-
-<IfModule mod_rewrite.c>
-    RewriteCond %{HTTPS} !=on
-    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
-    RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
-</IfModule>
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Option 2: rewrite example.com ā†’ www.example.com
-
-# Be aware that the following might not be a good idea if you use "real"
-# subdomains for certain parts of your website.
-
-# <IfModule mod_rewrite.c>
-#    RewriteCond %{HTTPS} !=on
-#    RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
-#    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
-# </IfModule>
-
-
-# ##############################################################################
-# # SECURITY                                                                   #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Content Security Policy (CSP)                                              |
-# ------------------------------------------------------------------------------
-
-# You can mitigate the risk of cross-site scripting and other content-injection
-# attacks by setting a Content Security Policy which whitelists trusted sources
-# of content for your site.
-
-# The example header below allows ONLY scripts that are loaded from the current
-# site's origin (no inline scripts, no CDN, etc). This almost certainly won't
-# work as-is for your site!
-
-# To get all the details you'll need to craft a reasonable policy for your site,
-# read: http://html5rocks.com/en/tutorials/security/content-security-policy (or
-# see the specification: http://w3.org/TR/CSP).
-
-# <IfModule mod_headers.c>
-#    Header set Content-Security-Policy "script-src 'self'; object-src 'self'"
-#    <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$">
-#        Header unset Content-Security-Policy
-#    </FilesMatch>
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | File access                                                                |
-# ------------------------------------------------------------------------------
-
-# Block access to directories without a default document.
-# Usually you should leave this uncommented because you shouldn't allow anyone
-# to surf through every directory on your server (which may includes rather
-# private places like the CMS's directories).
-
-<IfModule mod_autoindex.c>
-    Options -Indexes
-</IfModule>
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Block access to hidden files and directories.
-# This includes directories used by version control systems such as Git and SVN.
-
-<IfModule mod_rewrite.c>
-    RewriteCond %{SCRIPT_FILENAME} -d [OR]
-    RewriteCond %{SCRIPT_FILENAME} -f
-    RewriteRule "(^|/)\." - [F]
-</IfModule>
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Block access to backup and source files.
-# These files may be left by some text editors and can pose a great security
-# danger when anyone has access to them.
-
-<FilesMatch "(^#.*#|\.(bak|config|dist|fla|inc|ini|log|psd|sh|sql|sw[op])|~)$">
-    Order allow,deny
-    Deny from all
-    Satisfy All
-</FilesMatch>
-
-# ------------------------------------------------------------------------------
-# | Secure Sockets Layer (SSL)                                                 |
-# ------------------------------------------------------------------------------
-
-# Rewrite secure requests properly to prevent SSL certificate warnings, e.g.:
-# prevent `https://www.example.com` when your certificate only allows
-# `https://secure.example.com`.
-
-# <IfModule mod_rewrite.c>
-#    RewriteCond %{SERVER_PORT} !^443
-#    RewriteRule ^ https://example-domain-please-change-me.com%{REQUEST_URI} [R=301,L]
-# </IfModule>
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Force client-side SSL redirection.
-
-# If a user types "example.com" in his browser, the above rule will redirect him
-# to the secure version of the site. That still leaves a window of opportunity
-# (the initial HTTP connection) for an attacker to downgrade or redirect the
-# request. The following header ensures that browser will ONLY connect to your
-# server via HTTPS, regardless of what the users type in the address bar.
-# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/
-
-# <IfModule mod_headers.c>
-#    Header set Strict-Transport-Security max-age=16070400;
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | Server software information                                                |
-# ------------------------------------------------------------------------------
-
-# Avoid displaying the exact Apache version number, the description of the
-# generic OS-type and the information about Apache's compiled-in modules.
-
-# ADD THIS DIRECTIVE IN THE `httpd.conf` AS IT WILL NOT WORK IN THE `.htaccess`!
-
-# ServerTokens Prod
-
-
-# ##############################################################################
-# # WEB PERFORMANCE                                                            #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Compression                                                                |
-# ------------------------------------------------------------------------------
-
-<IfModule mod_deflate.c>
-
-    # Force compression for mangled headers.
-    # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
-    <IfModule mod_setenvif.c>
-        <IfModule mod_headers.c>
-            SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
-            RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
-        </IfModule>
-    </IfModule>
-
-    # Compress all output labeled with one of the following MIME-types
-    # (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
-    #  and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
-    #  as `AddOutputFilterByType` is still in the core directives).
-    <IfModule mod_filter.c>
-        AddOutputFilterByType DEFLATE application/atom+xml \
-                                      application/javascript \
-                                      application/json \
-                                      application/rss+xml \
-                                      application/vnd.ms-fontobject \
-                                      application/x-font-ttf \
-                                      application/x-web-app-manifest+json \
-                                      application/xhtml+xml \
-                                      application/xml \
-                                      font/opentype \
-                                      image/svg+xml \
-                                      image/x-icon \
-                                      text/css \
-                                      text/html \
-                                      text/plain \
-                                      text/x-component \
-                                      text/xml
-    </IfModule>
-
-</IfModule>
-
-# ------------------------------------------------------------------------------
-# | Content transformations                                                    |
-# ------------------------------------------------------------------------------
-
-# Prevent some of the mobile network providers from modifying the content of
-# your site: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.5.
-
-# <IfModule mod_headers.c>
-#    Header set Cache-Control "no-transform"
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | ETag removal                                                               |
-# ------------------------------------------------------------------------------
-
-# Since we're sending far-future expires headers (see below), ETags can
-# be removed: http://developer.yahoo.com/performance/rules.html#etags.
-
-# `FileETag None` is not enough for every server.
-<IfModule mod_headers.c>
-    Header unset ETag
-</IfModule>
-
-FileETag None
-
-# ------------------------------------------------------------------------------
-# | Expires headers (for better cache control)                                 |
-# ------------------------------------------------------------------------------
-
-# The following expires headers are set pretty far in the future. If you don't
-# control versioning with filename-based cache busting, consider lowering the
-# cache time for resources like CSS and JS to something like 1 week.
-
-<IfModule mod_expires.c>
-
-    ExpiresActive on
-    ExpiresDefault                                      "access plus 1 month"
-
-  # CSS
-    ExpiresByType text/css                              "access plus 1 year"
-
-  # Data interchange
-    ExpiresByType application/json                      "access plus 0 seconds"
-    ExpiresByType application/xml                       "access plus 0 seconds"
-    ExpiresByType text/xml                              "access plus 0 seconds"
-
-  # Favicon (cannot be renamed!)
-    ExpiresByType image/x-icon                          "access plus 1 week"
-
-  # HTML components (HTCs)
-    ExpiresByType text/x-component                      "access plus 1 month"
-
-  # HTML
-    ExpiresByType text/html                             "access plus 0 seconds"
-
-  # JavaScript
-    ExpiresByType application/javascript                "access plus 1 year"
-
-  # Manifest files
-    ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
-    ExpiresByType text/cache-manifest                   "access plus 0 seconds"
-
-  # Media
-    ExpiresByType audio/ogg                             "access plus 1 month"
-    ExpiresByType image/gif                             "access plus 1 month"
-    ExpiresByType image/jpeg                            "access plus 1 month"
-    ExpiresByType image/png                             "access plus 1 month"
-    ExpiresByType video/mp4                             "access plus 1 month"
-    ExpiresByType video/ogg                             "access plus 1 month"
-    ExpiresByType video/webm                            "access plus 1 month"
-
-  # Web feeds
-    ExpiresByType application/atom+xml                  "access plus 1 hour"
-    ExpiresByType application/rss+xml                   "access plus 1 hour"
-
-  # Web fonts
-    ExpiresByType application/font-woff                 "access plus 1 month"
-    ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
-    ExpiresByType application/x-font-ttf                "access plus 1 month"
-    ExpiresByType font/opentype                         "access plus 1 month"
-    ExpiresByType image/svg+xml                         "access plus 1 month"
-
-</IfModule>
-
-# ------------------------------------------------------------------------------
-# | Filename-based cache busting                                               |
-# ------------------------------------------------------------------------------
-
-# If you're not using a build process to manage your filename version revving,
-# you might want to consider enabling the following directives to route all
-# requests such as `/css/style.12345.css` to `/css/style.css`.
-
-# To understand why this is important and a better idea than `*.css?v231`, read:
-# http://stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring
-
-# <IfModule mod_rewrite.c>
-#    RewriteCond %{REQUEST_FILENAME} !-f
-#    RewriteCond %{REQUEST_FILENAME} !-d
-#    RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | File concatenation                                                         |
-# ------------------------------------------------------------------------------
-
-# Allow concatenation from within specific CSS and JS files, e.g.:
-# Inside of `script.combined.js` you could have
-#   <!--#include file="libs/jquery.js" -->
-#   <!--#include file="plugins/jquery.idletimer.js" -->
-# and they would be included into this single file.
-
-# <IfModule mod_include.c>
-#    <FilesMatch "\.combined\.js$">
-#        Options +Includes
-#        AddOutputFilterByType INCLUDES application/javascript application/json
-#        SetOutputFilter INCLUDES
-#    </FilesMatch>
-#    <FilesMatch "\.combined\.css$">
-#        Options +Includes
-#        AddOutputFilterByType INCLUDES text/css
-#        SetOutputFilter INCLUDES
-#    </FilesMatch>
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | Persistent connections                                                     |
-# ------------------------------------------------------------------------------
-
-# Allow multiple requests to be sent over the same TCP connection:
-# http://httpd.apache.org/docs/current/en/mod/core.html#keepalive.
-
-# Enable if you serve a lot of static content but, be aware of the
-# possible disadvantages!
-
-# <IfModule mod_headers.c>
-#    Header set Connection Keep-Alive
-# </IfModule>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/404.html
----------------------------------------------------------------------
diff --git a/web/demos/app/404.html b/web/demos/app/404.html
deleted file mode 100644
index d52f7d3..0000000
--- a/web/demos/app/404.html
+++ /dev/null
@@ -1,177 +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.
-
--->
-<!DOCTYPE html>
-<html lang="en">
-    <head>
-        <meta charset="utf-8">
-        <title>Page Not Found :(</title>
-        <style>
-            ::-moz-selection {
-                background: #b3d4fc;
-                text-shadow: none;
-            }
-
-            ::selection {
-                background: #b3d4fc;
-                text-shadow: none;
-            }
-
-            html {
-                padding: 30px 10px;
-                font-size: 20px;
-                line-height: 1.4;
-                color: #737373;
-                background: #f0f0f0;
-                -webkit-text-size-adjust: 100%;
-                -ms-text-size-adjust: 100%;
-            }
-
-            html,
-            input {
-                font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-            }
-
-            body {
-                max-width: 500px;
-                _width: 500px;
-                padding: 30px 20px 50px;
-                border: 1px solid #b3b3b3;
-                border-radius: 4px;
-                margin: 0 auto;
-                box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff;
-                background: #fcfcfc;
-            }
-
-            h1 {
-                margin: 0 10px;
-                font-size: 50px;
-                text-align: center;
-            }
-
-            h1 span {
-                color: #bbb;
-            }
-
-            h3 {
-                margin: 1.5em 0 0.5em;
-            }
-
-            p {
-                margin: 1em 0;
-            }
-
-            ul {
-                padding: 0 0 0 40px;
-                margin: 1em 0;
-            }
-
-            .container {
-                max-width: 380px;
-                _width: 380px;
-                margin: 0 auto;
-            }
-
-            /* google search */
-
-            #goog-fixurl ul {
-                list-style: none;
-                padding: 0;
-                margin: 0;
-            }
-
-            #goog-fixurl form {
-                margin: 0;
-            }
-
-            #goog-wm-qt,
-            #goog-wm-sb {
-                border: 1px solid #bbb;
-                font-size: 16px;
-                line-height: normal;
-                vertical-align: top;
-                color: #444;
-                border-radius: 2px;
-            }
-
-            #goog-wm-qt {
-                width: 220px;
-                height: 20px;
-                padding: 5px;
-                margin: 5px 10px 0 0;
-                box-shadow: inset 0 1px 1px #ccc;
-            }
-
-            #goog-wm-sb {
-                display: inline-block;
-                height: 32px;
-                padding: 0 10px;
-                margin: 5px 0 0;
-                white-space: nowrap;
-                cursor: pointer;
-                background-color: #f5f5f5;
-                background-image: -webkit-linear-gradient(rgba(255,255,255,0), #f1f1f1);
-                background-image: -moz-linear-gradient(rgba(255,255,255,0), #f1f1f1);
-                background-image: -ms-linear-gradient(rgba(255,255,255,0), #f1f1f1);
-                background-image: -o-linear-gradient(rgba(255,255,255,0), #f1f1f1);
-                -webkit-appearance: none;
-                -moz-appearance: none;
-                appearance: none;
-                *overflow: visible;
-                *display: inline;
-                *zoom: 1;
-            }
-
-            #goog-wm-sb:hover,
-            #goog-wm-sb:focus {
-                border-color: #aaa;
-                box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
-                background-color: #f8f8f8;
-            }
-
-            #goog-wm-qt:hover,
-            #goog-wm-qt:focus {
-                border-color: #105cb6;
-                outline: 0;
-                color: #222;
-            }
-
-            input::-moz-focus-inner {
-                padding: 0;
-                border: 0;
-            }
-        </style>
-    </head>
-    <body>
-        <div class="container">
-            <h1>Not found <span>:(</span></h1>
-            <p>Sorry, but the page you were trying to view does not exist.</p>
-            <p>It looks like this was the result of either:</p>
-            <ul>
-                <li>a mistyped address</li>
-                <li>an out-of-date link</li>
-            </ul>
-            <script>
-                var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),GOOG_FIXURL_SITE = location.host;
-            </script>
-            <script src="//linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
-        </div>
-    </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/favicon.ico
----------------------------------------------------------------------
diff --git a/web/demos/app/favicon.ico b/web/demos/app/favicon.ico
deleted file mode 100644
index 6527905..0000000
Binary files a/web/demos/app/favicon.ico and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/images/glyphicons-halflings.png
----------------------------------------------------------------------
diff --git a/web/demos/app/images/glyphicons-halflings.png b/web/demos/app/images/glyphicons-halflings.png
deleted file mode 100644
index a996999..0000000
Binary files a/web/demos/app/images/glyphicons-halflings.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/images/main_banner.png
----------------------------------------------------------------------
diff --git a/web/demos/app/images/main_banner.png b/web/demos/app/images/main_banner.png
deleted file mode 100644
index f3f4810..0000000
Binary files a/web/demos/app/images/main_banner.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/index.html
----------------------------------------------------------------------
diff --git a/web/demos/app/index.html b/web/demos/app/index.html
deleted file mode 100644
index c0f2fa2..0000000
--- a/web/demos/app/index.html
+++ /dev/null
@@ -1,138 +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.
-
--->
-<!doctype html>
-<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
-<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
-<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
-<head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title></title>
-    <meta name="description" content="">
-    <meta name="viewport" content="width=device-width">
-    <!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
-
-    <!-- build:css styles/vendor.css -->
-    <link rel="stylesheet" href="bower_components/bootstrap-sass/bootstrap-2.3.2.css">
-    <link rel="stylesheet" href="bower_components/bootstrap-sass/bootstrap-responsive-2.3.2.css">
-    <link rel="stylesheet" href="bower_components/ng-grid/ng-grid.css">
-    <link rel="stylesheet" href="styles/jquery.pnotify.default.css">
-    <!-- endbuild -->
-
-    <!-- build:css(.tmp) styles/main.css -->
-    <link rel="stylesheet" href="styles/main.css">
-    <!-- endbuild -->
-</head>
-<body ng-app="app">
-<!--[if lt IE 9]>
-<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
-<![endif]-->
-
-<div class="navbar navbar-inverse navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container-fluid">
-            <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </button>
-            <a class="brand" href="/"></a>
-            <div class="nav-collapse collapse">
-                <ul class="nav">
-                    <li><a href="#twitterUrls">Twitter URLs</a></li>
-                    <li><a href="#twitterHashtags">Twitter Hashtags</a></li>
-                    <li><a href="#mobile">Mobile</a></li>
-                    <li><a href="#machine">Machine</a></li>
-                    <li><a href="#dimensions">Ads</a></li>
-                    <li><a href="#fraud">Fraud</a></li>
-                </ul>
-            </div><!--/.nav-collapse -->
-        </div>
-    </div>
-</div>
-
-<div class="ng-view"></div>
-
-<script src="settings.js"></script>
-
-<!-- build:js scripts/plugins.js -->
-<script src="bower_components/jquery/jquery.js"></script>
-<script src="bower_components/angular/angular.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-affix.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-alert.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-dropdown.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-tooltip.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-modal.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-transition.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-button.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-popover.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-typeahead.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-carousel.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-scrollspy.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-collapse.js"></script>
-<script src="bower_components/bootstrap-sass/js/bootstrap-tab.js"></script>
-<!-- endbuild -->
-
-<!-- build:js scripts/modules.js -->
-<script src="bower_components/underscore/underscore.js"></script>
-<script src="bower_components/angular-route/angular-route.js"></script>
-<script src="bower_components/angular-resource/angular-resource.js"></script>
-<script src="bower_components/angular-cookies/angular-cookies.js"></script>
-<script src="bower_components/angular-sanitize/angular-sanitize.js"></script>
-<script src="bower_components/restangular/src/restangular.js"></script>
-<script src="bower_components/underscore/underscore.js"></script>
-<script src="bower_components/ng-grid/ng-grid-2.0.11.debug.js"></script>
-<script src="bower_components/d3/d3.js"></script>
-<script src="bower_components/uri.js/src/URI.js"></script>
-<script src="scripts/vendor/jsbn.js"></script>
-<script src="scripts/vendor/gauge.js"></script>
-<script src="scripts/vendor/jquery.pnotify.js"></script>
-<script src="scripts/vendor/angular-google-maps.js"></script>
-<script src="scripts/vendor/visibly.js"></script>
-<!-- endbuild -->
-
-<!-- build:js({.tmp,app}) scripts/scripts.js -->
-<script src="scripts/app.js"></script>
-<script src="scripts/services/rest.js"></script>
-<script src="scripts/services/socket.js"></script>
-<script src="scripts/directives/lineChart.js"></script>
-<script src="scripts/directives/gauge.js"></script>
-<script src="scripts/directives/barChart.js"></script>
-<script src="scripts/directives/stat.js"></script>
-<script src="scripts/filters/elapsed.js"></script>
-<script src="scripts/controllers/twitter.js"></script>
-<script src="scripts/controllers/mobile.js"></script>
-<script src="scripts/controllers/machine.js"></script>
-<script src="scripts/controllers/dimensions.js"></script>
-<script src="scripts/controllers/fraud.js"></script>
-<!-- endbuild -->
-
-<script type="text/javascript" src="https://www.google.com/jsapi"></script>
-<script type="text/javascript">
-    google.load('visualization', '1', {'packages':['corechart']});
-</script>
-
-<script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=en"></script>
-<script src="scripts/vendor/markerwithlabel.js"></script>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/robots.txt
----------------------------------------------------------------------
diff --git a/web/demos/app/robots.txt b/web/demos/app/robots.txt
deleted file mode 100644
index 9417495..0000000
--- a/web/demos/app/robots.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# robotstxt.org
-
-User-agent: *

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/app.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/app.js b/web/demos/app/scripts/app.js
deleted file mode 100644
index 274f355..0000000
--- a/web/demos/app/scripts/app.js
+++ /dev/null
@@ -1,73 +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.
- */
-/*global angular*/
-(function () {
-'use strict';
-
-angular.module('widgets', ['socket']);
-
-angular.module('twitter', ['rest', 'socket', 'widgets', 'ngGrid']);
-angular.module('mobile', ['rest', 'widgets', 'ngGrid', 'google-maps']);
-angular.module('machine', ['ng', 'rest', 'widgets']);
-angular.module('dimensions', ['ng', 'rest', 'widgets']);
-angular.module('fraud', ['rest', 'widgets']);
-
-angular.module('app', ['ngRoute', 'socket', 'twitter', 'mobile', 'machine', 'dimensions', 'fraud']);
-
-angular.module('app')
-  .config(function ($routeProvider, socketProvider) {
-    if (window.settings) {
-      socketProvider.setWebSocketURL(settings.webSocketURL);
-    }
-
-    $routeProvider
-      .when('/', {
-        templateUrl: 'views/welcome.html'
-      })
-      .when('/twitterUrls', {
-        templateUrl: 'views/twitter.html',
-        controller: 'TwitterUrlsController'
-      })
-      .when('/twitterHashtags', {
-        templateUrl: 'views/twitter.html',
-        controller: 'TwitterHashtagsController'
-      })
-      .when('/mobile', {
-        templateUrl: 'views/mobile.html',
-        controller: 'MobileController'
-      })
-      .when('/machine', {
-        templateUrl: 'views/machine.html',
-        controller: 'MachineController'
-      })
-      .when('/dimensions', {
-        templateUrl: 'views/dimensions.html',
-        controller: 'DimensionsController'
-      })
-      .when('/fraud', {
-        templateUrl: 'views/fraud.html',
-        controller: 'FraudController'
-      })
-  });
-
-})();
-
-
-    
-    
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/controllers/dimensions.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/controllers/dimensions.js b/web/demos/app/scripts/controllers/dimensions.js
deleted file mode 100644
index 41c9bd0..0000000
--- a/web/demos/app/scripts/controllers/dimensions.js
+++ /dev/null
@@ -1,302 +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.
- */
-/*global settings, angular, google, jQuery, _, URI*/
-(function () {
-  'use strict';
-
-  var chartOptions = {
-    legend: 'none',
-    chartArea: { top: 20, height: 240 }
-  };
-
-  function getEmptyChartOptionsFn(scope) {
-    return function () {
-      var now = Date.now();
-      var max = new Date(now);
-      var min = new Date(now - scope.lookback * 60 * 1000);
-      var options = jQuery.extend({}, chartOptions, {
-        vAxis: { minValue: 0, maxValue: 100 },
-        hAxis: { viewWindow: { min: min, max: max }}
-      });
-      return options;
-    };
-  }
-
-  function chartData(data, property) {
-    return _.map(data, function (obj) {
-      return {
-        timestamp: obj.timestamp,
-        value: obj[property]
-      };
-    });
-  }
-
-  function chartDataFn(data, fn) {
-    return _.map(data, function (obj) {
-      return {
-        timestamp: obj.timestamp,
-        value: fn(obj)
-      };
-    });
-  }
-
-  function getRequestParams($scope) {
-    return {
-      publisher: $scope.publisher.value,
-      advertiser: $scope.advertiser.value,
-      adunit: $scope.adunit.value,
-      lookback: $scope.lookback,
-      includeLastMinute: $scope.includeLastMinute
-    };
-  }
-
-  function PollRequest (rest, scope, callback) {
-    this.rest = rest;
-    this.scope = scope;
-    this.max = scope.lookback;
-    this.dataCache = null;
-    this.callback = callback;
-    this.cancelled = false;
-    this.interval = null;
-    this.timeout = null;
-    this.params = getRequestParams(this.scope);
-  }
-
-  PollRequest.prototype = {
-    cancel: function () {
-      this.cancelled = true;
-      this.scope.requestProgress = 0;
-      clearInterval(this.interval);
-      clearTimeout(this.timeout);
-    },
-
-    responseStatus: function () {
-      this.scope.requestProgress = Math.round((Date.now() - this.requestStartTime) / 1000);
-      this.scope.$apply();
-    },
-
-    fetchDimensionsData: function () {
-      if (this.dataCache && this.dataCache.length) {
-        this.params.lastTimestamp = _.last(this.dataCache).timestamp;
-      }
-
-      var max = this.max;
-
-      this.requestStartTime = Date.now();
-
-      this.interval = setInterval(this.responseStatus.bind(this), 250);
-
-      var that = this;
-
-      this.rest.getDimensionsData(this.params).then(function (response) {
-          if (that.cancelled) {
-            return;
-          }
-
-          that.scope.response = response;
-          var minutes = response.minutes;
-          that.scope.requestProgress = 0;
-          clearInterval(that.interval);
-
-          var now = Date.now();
-          that.scope.lastResponse = new Date(now);
-          that.scope.responseTime = now - that.requestStartTime;
-          if (!that.dataCache) {
-            that.dataCache = minutes;
-
-            that.scope.minutesCached = 0;
-            that.scope.minutesReceived = minutes.length;
-
-          } else if (minutes.length > 0) {
-            that.scope.minutesCached = that.dataCache.length;
-            that.scope.minutesReceived = minutes.length;
-
-            that.dataCache.pop(); // remove last element since response should have new values for the last minute
-
-            var newlength = that.dataCache.length + minutes.length;
-
-            if (newlength > max) {
-              that.dataCache.splice(0, newlength - max);
-            }
-            that.dataCache.push.apply(that.dataCache, minutes); // add all elements
-          }
-
-          that.callback(that.dataCache);
-          var nextTimeout = that.scope.pollInterval * 1000 - (Date.now() - that.requestStartTime);
-          nextTimeout = Math.max(0, nextTimeout);
-
-          that.timeout = setTimeout(that.fetchDimensionsData.bind(that), nextTimeout);
-        },
-        function (errorResponse) {
-          that.cancel();
-        });
-    }
-  };
-
-
-  angular.module('dimensions')
-    .controller('DimensionsController', ['$scope', '$timeout', '$location', '$routeParams', 'rest', function ($scope, $timeout, $location, $routeParams, rest) {
-      var queryParams = new URI(window.location.href).query(true);
-      var emptyChartOptionsFn = getEmptyChartOptionsFn($scope);
-
-      rest.getApp(settings.dimensions.appName).then(function (app) {
-          $scope.app = app;
-          $scope.appURL = settings.appsURL + app.id;
-      });
-
-      $scope.pollInterval = settings.dimensions.pollInterval;
-      $scope.includeLastMinute = false;
-
-      $scope.range = function (name) {
-        var r = settings.dimensions.range[name];
-        return _.range(r.start, r.stop + 1);
-      };
-
-      function setupSelect(name, label) {
-        var rangeValues = $scope.range(name);
-        var list = _.map(rangeValues, function (value) {
-          return {
-            value: String(value),
-            label: label + ' ' + value
-          };
-        });
-        list.splice(0, 0, { value: "", label: 'ALL '});
-
-        $scope.select[name] = list;
-
-        var selected = null;
-
-        if (queryParams[name]) {
-          selected = _.findWhere(list, { value: queryParams[name] });
-        }
-
-        if (selected) {
-          $scope[name] = selected;
-        } else {
-          $scope[name] = list[0];
-        }
-      }
-
-      $scope.select = {};
-      setupSelect('publisher', 'Publisher');
-      setupSelect('advertiser', 'Advertiser');
-      setupSelect('adunit', 'Ad Unit');
-      $scope.lookback = queryParams.lookback ? parseInt(queryParams.lookback, 10) : settings.dimensions.lookback;
-
-      $scope.reload = function () {
-        //TODO have Angular route instead of reloading the page
-        window.location.href = window.location.pathname + '?' + jQuery.param(getRequestParams($scope));
-      };
-
-      function updateCharts(data) {
-        $scope.costChart = {
-          data: chartData(data, 'cost'),
-          options: chartOptions,
-          emptyChartOptions: emptyChartOptionsFn
-        };
-        $scope.revenueChart = {
-          data: chartData(data, 'revenue'),
-          options: chartOptions,
-          emptyChartOptions: emptyChartOptionsFn
-        };
-        $scope.impressionsChart = {
-          data: chartData(data, 'impressions'),
-          options: chartOptions,
-          emptyChartOptions: emptyChartOptionsFn
-        };
-        $scope.clicksChart = {
-          data: chartData(data, 'clicks'),
-          options: chartOptions,
-          emptyChartOptions: emptyChartOptionsFn
-        };
-        $scope.ctrChart = {
-          data: chartDataFn(data, function (item) {
-            return item.clicks / item.impressions * 100;
-          }),
-          options: chartOptions,
-          emptyChartOptions: emptyChartOptionsFn
-        };
-        $scope.marginChart = {
-          data: chartDataFn(data, function (item) {
-            return (item.cost - item.revenue) / item.revenue;
-          }),
-          options: chartOptions,
-          emptyChartOptions: emptyChartOptionsFn
-        };
-      }
-
-      $scope.costChart = {
-        emptyChartOptions: emptyChartOptionsFn
-      };
-      $scope.revenueChart = {
-        emptyChartOptions: emptyChartOptionsFn
-      };
-      $scope.impressionsChart = {
-        emptyChartOptions: emptyChartOptionsFn
-      };
-      $scope.clicksChart = {
-        emptyChartOptions: emptyChartOptionsFn
-      };
-      $scope.ctrChart = {
-        emptyChartOptions: emptyChartOptionsFn
-      };
-      $scope.marginChart = {
-        emptyChartOptions: emptyChartOptionsFn
-      };
-
-      var request = null;
-      function reloadCharts() {
-        //TODO check if lookback is valid
-        if (request) {
-          request.cancel();
-        }
-        request = new PollRequest(rest, $scope, updateCharts);
-        request.fetchDimensionsData();
-      }
-
-      $scope.$watch('[publisher, advertiser, adunit]', function () {
-        reloadCharts();
-      }, true);
-
-      function watchWithDelay(model, delay) {
-        var timeout;
-        var firstUpdate = true;
-        $scope.$watch(model, function () {
-          if (!firstUpdate) { // skip first change since there is a watch for select fields
-            clearTimeout(timeout);
-            timeout = setTimeout(reloadCharts, delay);
-          } else {
-            firstUpdate = false;
-          }
-        });
-      }
-
-      watchWithDelay('lookback', 500);
-      watchWithDelay('pollInterval', 500);
-      watchWithDelay('includeLastMinute', 0); //TODO no delay necessary
-
-      // stop server polling on destroy (e.g. when navigating to another view)
-      $scope.$on('$destroy', function () {
-        if (request) {
-          request.cancel();
-        }
-      }.bind(this));
-    }]);
-
-})();

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/controllers/fraud.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/controllers/fraud.js b/web/demos/app/scripts/controllers/fraud.js
deleted file mode 100644
index a19f022..0000000
--- a/web/demos/app/scripts/controllers/fraud.js
+++ /dev/null
@@ -1,442 +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.
- */
-/*global angular, jQuery, _*/
-(function () {
-'use strict';
-
-angular.module('fraud')
-
-    .controller('FraudController', ['$scope', 'rest', 'socket', function ($scope, rest, socket) {
-        
-        // topic for publishing transactions
-        var txTopic = 'demos.app.frauddetect.submitTransaction';
-        var appPromise = rest.getApp(settings.fraud.appName);
-        appPromise.then(function (app) {
-            $scope.app = app;
-            $scope.appURL = settings.appsURL + app.id;
-            $scope.startedTime = app.startedTime;
-        });
-
-        // Options for merchant, terminal, zip, card, bin
-        $scope.alertTypeTitles = {
-            "smallThenLarge": "Suspicious Transaction Sequence",
-            "sameCard": "Same Card Multiple Times",
-            "sameBankId": "Same Bank Number Multiple Times",
-            "aboveAvg": "Above Average Transaction"
-        }
-        $scope.stats = [
-            { id: 'totalTxns',          topic: 'demos.app.frauddetect.totalTransactions', value: 0, label: 'Total Txns' },
-            { id: 'amtInLastSecond',    topic: 'demos.app.frauddetect.txLastSecond',      value: 0, label: 'Total Dollars / sec' },
-            // { id: 'amtInLastHour',      topic: 'demos.app.frauddetect.txLastHour',        value: 0, label: 'Total for Last Hour' },
-            { id: 'avgAmtInLastSecond', topic: 'demos.app.frauddetect.avgLastSecond',     value: 0, label: 'Avg Txn Amount / sec' },
-            { id: 'numFrauds',          topic: 'demos.app.frauddetect.totalFrauds',       value: 0, label: 'No. of Anomalies Detected' },
-            // { id: 'avgScore',           topic: 'demos.app.frauddetect.avgScore',          value: 0, label: 'Average Score' }
-        ];
-        $scope.merchants = ['Wal-Mart', 'Target', 'Amazon', 'Apple', 'Sears', 'Macys', 'JCPenny', 'Levis'];
-        $scope.terminals = [1, 2, 3, 4, 5, 6, 7, 8];
-        $scope.zips      = [94086, 94087, 94088, 94089, 94090, 94091, 94092, 94093];
-        $scope.actions   = [
-            {
-                id: 1,
-                subtitle: $scope.alertTypeTitles.smallThenLarge,
-                severity: 'low',
-                description: 'This anomaly is when one credit card is used for a small purchase, then immediately again for a larger purchase. The idea here is that a scammer will first try a small purchase to ensure that the card works, then proceed with a larger purchase upon success.',
-                generateTxns: function(e) {
-                    
-                    var bin = getRandomBin();
-                    var card = getRandomCard();
-                    
-                    submitTransaction({ 
-                        'zipCode': getRandom('zips'),
-                        'merchantId': getRandom('merchants'), 
-                        'terminalId': getRandom('terminals'),
-                        'bankIdNum': bin,
-                        'ccNum': card,
-                        'amount': 5.00
-                    });
-                    
-                    setTimeout(function() {
-                        submitTransaction({ 
-                            'zipCode': getRandom('zips'),
-                            'merchantId': getRandom('merchants'), 
-                            'terminalId': getRandom('terminals'),
-                            'bankIdNum': bin,
-                            'ccNum': card,
-                            'amount': 600.00
-                        });
-                    }, 5000)
-                    
-                }
-            },
-            // {
-            //     id: 2,
-            //     subtitle: $scope.alertTypeTitles.sameCard,
-            //     description: 'This anomaly is when one credit card is used for multiple transactions across one or more vendors within a short time interval.',
-            //     generateTxns: function() {
-            //         
-            //         var bin = getRandomBin();
-            //         var card = getRandomCard();
-            //         var merchant = getRandom('merchants');
-            //         
-            //         var intval = setInterval(function() {
-            //             submitTransaction({
-            //                 'zipCode': getRandom('zips'),
-            //                 'merchantId': merchant, 
-            //                 'terminalId': getRandom('terminals'),
-            //                 'bankIdNum': bin,
-            //                 'ccNum': card,
-            //                 'amount': roundToPrice(10 + Math.random() * 1000)
-            //             });
-            //         }, 1000);
-            //         
-            //         setTimeout(function() {
-            //             clearInterval(intval);
-            //         }, 8000);
-            //     }
-            // },
-            {
-                id: 2,
-                subtitle: $scope.alertTypeTitles.sameBankId,
-                severity: 'high',
-                description: 'This anomaly is detected when several transactions are made by cards issued by the same bank at the same terminal ID over moving window of 30 sec.',
-                generateTxns: function() {
-                    var bin = getRandomBin().replace(/\d{4}$/, '1111');
-                    var zipCode = getRandom('zips');
-                    var terminalId = getRandom('terminals');
-                    var merchant = getRandom('merchants');
-                    
-                    var intval = setInterval(function() {
-                        submitTransaction({
-                            'zipCode': zipCode,
-                            'merchantId': merchant, 
-                            'terminalId': terminalId,
-                            'bankIdNum': bin,
-                            'ccNum': getRandomCard(),
-                            'amount': roundToPrice(100 + Math.random() * 10)
-                        }, true);
-                    }, 200);
-                    
-                    $.pnotify({
-                        title: 'Several Transactions Being Sent',
-                        text: '<strong>Bank ID:</strong> ' + bin + ', <strong>Merchant:</strong> ' + merchant,
-                        type: 'success'
-                    });
-                    
-                    setTimeout(function() {
-                        clearInterval(intval);
-                    }, 11000);
-                }
-            },
-            {
-                id: 3,
-                subtitle: $scope.alertTypeTitles.aboveAvg,
-                severity: 'medium',
-                description: 'This anomaly is when a transaction at a given merchant significantly exceeds that merchant\'s average transaction amount.',
-                generateTxns: function() {
-                    console.log('getting randomStats');
-                    // $.get('/fraud/randomStats').done(function(res) {
-                    //     var bin = getRandomBin();
-                    //     var merchantId = res.merchantId;
-                    //     var terminalId = res.terminalId;
-                    //     var zipCode = res.zipCode;
-                    //     var amount = roundToPrice(res.sma + 35000);
-                    //     
-                    //     for (var i = 5; i >= 0; i--) {
-                    //         submitTransaction({
-                    //             'zipCode': zipCode,
-                    //             'merchantId': merchantId, 
-                    //             'terminalId': terminalId,
-                    //             'bankIdNum': getRandomBin(),
-                    //             'ccNum': getRandomCard(),
-                    //             'amount': 20 + Math.round(Math.random() * 10)
-                    //         }, true);
-                    //     }
-                    //     
-                    //     setTimeout(function() {
-                    //         submitTransaction({
-                    //             'zipCode': zipCode,
-                    //             'merchantId': merchantId, 
-                    //             'terminalId': terminalId,
-                    //             'bankIdNum': getRandomBin(),
-                    //             'ccNum': getRandomCard(),
-                    //             'amount': amount
-                    //         });
-                    //     }, 3000)
-                    //     
-                    // });
-                    $.pnotify({
-                        'type': 'info',
-                        'title': 'Retrieving Average Information'
-                    });
-                    $.get('/fraud/randomStats').done(function(res) {
-
-                        var bin = getRandomBin();
-                        var merchantId = res.merchantId;
-                        var terminalId = res.terminalId;
-                        var zipCode = res.zipCode;
-                        var amount = roundToPrice(res.sma + 1500);
-                        
-                        setTimeout(function() {
-                            submitTransaction({
-                                'zipCode': zipCode,
-                                'merchantId': merchantId, 
-                                'terminalId': terminalId,
-                                'bankIdNum': getRandomBin(),
-                                'ccNum': getRandomCard(),
-                                'amount': amount
-                            });
-                        }, 1000)
-                        
-                    });
-                }
-            }
-        ];
-        
-        // subscribe to appropriate topics for alerts and stats
-        appPromise.then(function(app) {
-            socket.subscribe('demos.app.frauddetect.fraudAlert', function(res) {
-                // console.log('received fraudAlert: ', res);
-                // console.log(res.data.alertType, res.data.alertData ? res.data.alertData.fullCcNum : '');
-                if (res.data.alertType === 'aboveAvg') {
-                    console.log('aboveAvg', res.data);
-                }
-                if (res.data.userGenerated === "true" || res.data.userGenerated === true) {
-                    displayAlert(res.data);
-                }
-            }, $scope);
-            socket.subscribe('demos.app.frauddetect.txSummary', function(res) {
-                var data = res.data;
-                _.each(['amtInLastSecond','avgAmtInLastSecond','totalTxns','txnsInLastSecond'], function(key) {
-                    
-                    // Find stat to update
-                    var stat = _.find($scope.stats, function(obj) {
-                        return obj.id == key;
-                    });
-                    
-                    // Check that stat was found
-                    if (stat) {
-
-                        if (['amtInLastSecond', 'avgAmtInLastSecond'].indexOf(key) > -1) {
-
-                            stat.value = '$' + makeMoney(data[key]);
-                            
-                        } else {
-                            
-                            stat.value = commaGroups(data[key]);
-                            
-                        }
-                        
-                    }
-                    
-                });
-                $scope.$apply();
-            }, $scope);
-        });
-        $scope.stats.forEach(function(stat){
-            socket.subscribe(stat.topic, function(res) {
-                console.log("stat topic " + stat.topic + " data received: ", res);
-                stat.value = res.value;
-                $scope.$apply();
-            }, $scope);
-        });
-        
-        $scope.alerts = [];
-        
-        // helper function for choosing random items from a list
-        function getRandom(list) {
-            return $scope[list][ Math.floor(Math.random() * $scope[list].length) ];
-        }
-        function roundToPrice(amt) {
-            // return Math.round( amt * 100 ) / 100;
-            return Math.round(amt);
-        }
-        function getRandomBin() {
-            // Bank ID will be between 1000 0000 and 3500 0000 (25 BINs)
-            var base = Math.floor(Math.random() * 25) + 10;
-            return base + "00 0000";
-        }
-        function getRandomCard() {
-            // CC will be 1000 0000 to 1400 0000 (400,000 cards per BIN)
-            var base = Math.floor(Math.random() * 400000) + 10000000;
-            var baseString = base + '';
-            return baseString.substring(0, 4) + " " + baseString.substring(4);
-        }
-        function displayAlert(data) {
-            var index = $scope.alerts.push(data) - 1;
-            var alertTitle = $scope.alertTypeTitles[data.alertType];
-            var html = '';
-            switch(data.alertType) {
-                case 'smallThenLarge': 
-                    html = [
-                        '<article class="alert-msg low" style="display:none">',
-                            '<h1>' + alertTitle + '</h1>',
-                            '<p>' + data.message + '</p>',
-                            '<div><a href="#" class="btn view-txn-btn" data-txidx="' + index + '">view details</a></div>',
-                        '</article>'
-                    ].join('');
-                break;
-                case 'sameBankId':
-                    console.log('same bank', data);
-                    html = [
-                        '<article class="alert-msg high" style="display:none">',
-                            '<h1>' + alertTitle + '</h1>',
-                            '<p>' + data.message + '</p>',
-                            '<div><a href="#" class="btn view-txn-btn" data-txidx="' + index + '">view details</a></div>',
-                        '</article>'
-                    ].join('');
-                break;
-                default:
-                    html = [
-                        '<article class="alert-msg medium" style="display:none">',
-                            '<h1>' + alertTitle + '</h1>',
-                            '<p>' + data.message + '</p>',
-                            '<div><a href="#" class="btn view-txn-btn" data-txidx="' + index + '">view details</a></div>',
-                        '</article>'
-                    ].join('');
-                break;
-                
-                
-            }
-            var $el = $(html);
-            $('#alertDisplayBox').prepend($el);
-            $el
-                .slideDown()
-                .animate({ 'opacity': 0.5 }, 180)
-                .animate({ 'opacity': 1 }, 180)
-                .animate({ 'opacity': 0.5 }, 180)
-                .animate({ 'opacity': 1 }, 180)
-        }
-        function submitTransaction(txn, noMessage) {
-            socket.publish(txTopic, txn);
-            console.log('txn', txn);
-            if (!noMessage) {
-                $.pnotify({
-                    'title': 'Transaction Submitted',
-                    'text': 
-                        '<strong>card</strong>: ' + txn.bankIdNum + ' ' + txn.ccNum + '<br/> ' + 
-                        '<strong>amount</strong>: $' + makeMoney(txn.amount) + '<br/> ' + 
-                        '<strong>merchant</strong>: ' + txn.merchantId + ', <strong>terminal</strong>: ' + txn.terminalId,
-        
-                    'type': 'success'
-                });
-            }
-        }
-        function genTxnDisplayMarkup(alert) {
-            var html = '';
-            switch(alert.alertType) {
-                case "smallThenLarge":
-                    var info = alert.alertData;
-                    html = [
-                        '<strong>Card Number:</strong> ' + info.fullCcNum + '<br/>',
-                        '<strong>Zip Code:</strong> ' + info.zipCode + '<br/>',
-                        '<strong>Merchant:</strong> ' + info.merchantId + ' (' + info.merchantType.toLowerCase().replace('_', ' ') + ')' + '<br/>',
-                        '<strong>Small Amount:</strong> $' + makeMoney(info.small) + '<br/>',
-                        '<strong>Large Amount:</strong> $' + makeMoney(info.large) + '<br/>',
-                        '<strong>Threshold:</strong> $'    + makeMoney(info.threshold) + '<br/>',
-                        '<strong>Time:</strong> ' + new Date(1*info.time).toLocaleString() + '<br/>'
-                    ].join('');
-                    
-                    break;
-                
-                case "sameBankId":
-                    var info = alert.alertData;
-                    html = [
-                        '<strong>Transaction Count:</strong> ' + info.count + '<br/>',
-                        '<strong>Bank ID Number:</strong> ' + info.bankIdNum + '<br/>',
-                        '<strong>Zip Code:</strong> ' + info.zipCode + '<br/>',
-                        '<strong>Merchant:</strong> ' + info.merchantId + ' (' + info.merchantType.toLowerCase().replace('_', ' ') + ')' + '<br/>',
-                        '<strong>Terminal:</strong> ' + info.terminalId + '<br/>',
-                        '<strong>Time:</strong> ' + new Date(1*info.time).toLocaleString() + '<br/>'
-                    ].join('');
-                    
-                    break;
-                    
-                case "aboveAvg":
-                    var info = alert.alertData;
-                    html = [
-                        '<strong>Dollar Amount:</strong> $' + makeMoney(info.amount) + '<br/>',
-                        '<strong>Last Average:</strong> $' + makeMoney(info.lastSmaValue) + '<br/>',
-                        '<strong>Difference:</strong> $' + makeMoney(info.change) + '<br/>',
-                        '<strong>Zip Code:</strong> ' + info.zipCode + '<br/>',
-                        '<strong>Merchant:</strong> ' + info.merchantId + ' (' + info.merchantType.toLowerCase().replace('_', ' ') + ')' + '<br/>',
-                        '<strong>Terminal:</strong> ' + info.terminalId + '<br/>',
-                        '<strong>Time:</strong> ' + new Date(1*info.time).toLocaleString() + '<br/>'
-                    ].join('');
-                    break;
-            }
-            return html;
-        }
-        function makeMoney(value) {
-            value = (value * 1).toFixed(2);
-            return commaGroups(value);
-        }
-        function commaGroups(value) {
-            var parts = value.toString().split(".");
-            parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
-            return parts.join(".");
-        }
-
-        var scopeDestroyed = false;
-
-        function  updateFraudCount() {
-            if (scopeDestroyed) {
-                return;
-            }
-
-            if ($scope.startedTime) {
-                $.get('/fraud/alertCount?since=' + $scope.startedTime).done(function(res) {
-                
-                    var countStat = _.find($scope.stats, function(obj) {
-                        return obj.id == 'numFrauds';
-                    });
-                
-                    var value = _.reduce(res, function(memo, val, key) { return memo + val }, 0);
-                
-                    countStat.value = commaGroups(value); 
-                
-                    setTimeout(updateFraudCount, 2000);
-                });
-            } else {
-                setTimeout(updateFraudCount, 2000);
-            }
-        }
-        
-        // Set up viewing transaction modal
-        $('#alertDisplayBox').on('click', '.view-txn-btn', function(evt) {
-            evt.preventDefault();
-            var index = $(this).attr('data-txidx');
-            var alert = $scope.alerts[index];
-            $('#txn-modal .modal-body').html(genTxnDisplayMarkup(alert));
-            $('#txn-modal').modal();
-        });
-        
-        // Start interval to poll for alerts count
-        updateFraudCount();
-        
-        $scope.clearFrauds = function() {
-            $('#alertDisplayBox').html("");
-        }
-
-        // stop server polling on destroy (e.g. when navigating to another view)
-        $scope.$on('$destroy', function () {
-          scopeDestroyed = true;
-        }.bind(this));
-    }]);
-
-})();

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/controllers/machine.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/controllers/machine.js b/web/demos/app/scripts/controllers/machine.js
deleted file mode 100644
index d6a6d3a..0000000
--- a/web/demos/app/scripts/controllers/machine.js
+++ /dev/null
@@ -1,275 +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.
- */
-/*global settings, angular, google, jQuery, _, URI*/
-(function () {
-'use strict';
-
-var chartOptions = {
-  legend: 'none',
-  vAxis: { format: settings.machine.metricformat },
-  chartArea: { top: 20, height: 240 }
-};
-
-function getEmptyChartOptionsFn(scope) {
-  return function () {
-    var now = Date.now();
-    var max = new Date(now);
-    var min = new Date(now - scope.lookback * 60 * 1000);
-    var options = jQuery.extend({}, chartOptions, {
-      vAxis: { minValue: 0, maxValue: 100 },
-      hAxis: { viewWindow: { min: min, max: max }}
-    });
-    return options;
-  };
-}
-
-function chartData(data, property) {
-  return _.map(data, function (obj) {
-    return {
-      timestamp: obj.timestamp,
-      value: obj[property]
-    };
-  });
-}
-
-function getRequestParams($scope) {
-  return {
-    customer: $scope.customer.value,
-    product: $scope.product.value,
-    os: $scope.os.value,
-    software1: $scope.software1.value,
-    software2: $scope.software2.value,
-    deviceId: $scope.deviceId.value,
-    lookback: $scope.lookback
-  };
-}
-
-function PollRequest (rest, scope, callback) {
-  this.rest = rest;
-  this.scope = scope;
-  this.max = scope.lookback;
-  this.dataCache = null;
-  this.callback = callback;
-  this.cancelled = false;
-  this.interval = null;
-  this.timeout = null;
-  this.params = getRequestParams(this.scope);
-}
-
-PollRequest.prototype = {
-  cancel: function () {
-    this.cancelled = true;
-    this.scope.requestProgress = 0;
-    clearInterval(this.interval);
-    clearTimeout(this.timeout);
-  },
-
-  responseStatus: function () {
-    this.scope.requestProgress = Math.round((Date.now() - this.requestStartTime) / 1000);
-    this.scope.$apply();
-  },
-
-  fetchMachineData: function () {
-    if (this.dataCache && this.dataCache.length) {
-      this.params.lastTimestamp = _.last(this.dataCache).timestamp;
-    }
-
-    var max = this.max;
-
-    this.requestStartTime = Date.now();
-
-    this.interval = setInterval(this.responseStatus.bind(this), 250);
-
-    var that = this;
-
-    this.rest.getMachineData(this.params).then(function (response) {
-      if (that.cancelled) {
-        return;
-      }
-
-      that.scope.response = response;
-      var minutes = response.minutes;
-      that.scope.requestProgress = 0;
-      clearInterval(that.interval);
-
-      var now = Date.now();
-      that.scope.lastResponse = new Date(now);
-      that.scope.responseTime = now - that.requestStartTime;
-      if (!that.dataCache) {
-        that.dataCache = minutes;
-
-        that.scope.minutesCached = 0;
-        that.scope.minutesReceived = minutes.length;
-
-      } else if (minutes.length > 0) {
-        that.scope.minutesCached = that.dataCache.length;
-        that.scope.minutesReceived = minutes.length;
-
-        that.dataCache.pop(); // remove last element since response should have new values for the last minute
-
-        var newlength = that.dataCache.length + minutes.length;
-
-        if (newlength > max) {
-          that.dataCache.splice(0, newlength - max);
-        }
-        that.dataCache.push.apply(that.dataCache, minutes); // add all elements
-      }
-
-      that.callback(that.dataCache);
-
-      var nextTimeout = settings.machine.pollInterval - (Date.now() - that.requestStartTime);
-      nextTimeout = Math.max(0, nextTimeout);
-
-      that.timeout = setTimeout(that.fetchMachineData.bind(that), nextTimeout);
-    },
-    function (errorResponse) {
-      that.cancel();
-    });
-  }
-};
-
-
-angular.module('machine')
-  .controller('MachineController', ['$scope', '$timeout', '$location', '$routeParams', 'rest', function ($scope, $timeout, $location, $routeParams, rest) {
-    var queryParams = new URI(window.location.href).query(true);
-    var emptyChartOptionsFn = getEmptyChartOptionsFn($scope);
-
-    rest.getApp(settings.machine.appName).then(function (app) {
-        $scope.app = app;
-        $scope.appURL = settings.appsURL + app.id;
-    });
-
-    $scope.cpu = 0;
-    $scope.ram = 0;
-    $scope.hdd = 0;
-
-    $scope.range = function (name) {
-      var r = settings.machine.range[name];
-      return _.range(r.start, r.stop + 1);
-    };
-
-    function setupSelect(name, label) {
-      var rangeValues = $scope.range(name);
-      var list = _.map(rangeValues, function (value) {
-        return {
-          value: String(value),
-          label: label + ' ' + value
-        };
-      });
-      list.splice(0, 0, { value: "", label: 'ALL '});
-
-      $scope.select[name] = list;
-
-      var selected = null;
-
-      if (queryParams[name]) {
-        selected = _.findWhere(list, { value: queryParams[name] });
-      }
-
-      if (selected) {
-        $scope[name] = selected;
-      } else {
-        $scope[name] = list[0];
-      }
-    }
-
-    $scope.select = {};
-    setupSelect('customer', 'Customer');
-    setupSelect('product', 'Product');
-    setupSelect('os', 'OS');
-    setupSelect('software1', 'Software1 Version');
-    setupSelect('software2', 'Software2 Version');
-    setupSelect('deviceId', 'Device ID');
-    $scope.lookback = queryParams.lookback ? parseInt(queryParams.lookback, 10) : settings.machine.lookback;
-
-    $scope.reload = function () {
-      //TODO have Angular route instead of reloading the page
-      window.location.href = window.location.pathname + '?' + jQuery.param(getRequestParams($scope));
-    };
-
-    function updateCharts(data) {
-      if (data && (data.length > 0)) {
-        var current = _.last(data);
-        $scope.cpu = parseFloat(current.cpu);
-        $scope.ram = parseFloat(current.ram);
-        $scope.hdd = parseFloat(current.hdd);
-      }
-      $scope.cpuChart = {
-        data: chartData(data, 'cpu'),
-        options: chartOptions,
-        emptyChartOptions: emptyChartOptionsFn
-      };
-      $scope.ramChart = {
-        data: chartData(data, 'ram'),
-        options: chartOptions,
-        emptyChartOptions: emptyChartOptionsFn
-      };
-      $scope.hddChart = {
-        data: chartData(data, 'hdd'),
-        options: chartOptions,
-        emptyChartOptions: emptyChartOptionsFn
-      };
-    }
-
-    $scope.cpuChart = {
-      emptyChartOptions: emptyChartOptionsFn
-    };
-    $scope.ramChart = {
-      emptyChartOptions: emptyChartOptionsFn
-    };
-    $scope.hddChart = {
-      emptyChartOptions: emptyChartOptionsFn
-    };
-
-    var request = null;
-    function reloadCharts() {
-      //TODO check if lookback is valid
-      if (request) {
-        request.cancel();
-      }
-      request = new PollRequest(rest, $scope, updateCharts);
-      request.fetchMachineData();
-    }
-
-    $scope.$watch('[customer, product, os, software1, software1, deviceId]', function () {
-      reloadCharts();
-    }, true);
-
-    var lookbackTimeout;
-
-    var firstUpdate = true;
-
-    $scope.$watch('lookback', function () {
-      if (!firstUpdate) { // skip first change since there is a watch for select fields
-        clearTimeout(lookbackTimeout);
-        lookbackTimeout = setTimeout(reloadCharts, 500);
-      } else {
-        firstUpdate = false;
-      }
-    });
-
-    // stop server polling on destroy (e.g. when navigating to another view)
-    $scope.$on('$destroy', function () {
-      if (request) {
-        request.cancel();
-      }
-    }.bind(this));
-  }]);
-
-})();

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/app/scripts/controllers/mobile.js
----------------------------------------------------------------------
diff --git a/web/demos/app/scripts/controllers/mobile.js b/web/demos/app/scripts/controllers/mobile.js
deleted file mode 100644
index 2301041..0000000
--- a/web/demos/app/scripts/controllers/mobile.js
+++ /dev/null
@@ -1,131 +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.
- */
-/*global settings, angular, google, jQuery, _*/
-(function () {
-'use strict';
-
-function translateLatLong(item) {
-    var match = item.location.match(/\((\d+),(\d+)/); //TODO server should pass this data as numbers
-    var lat = parseInt(match[1], 10);
-    var lon = parseInt(match[2], 10);
-    var phone = parseInt(item.phone, 10);
-
-    //TODO magic numbers
-    var latitude = 37.40180101292334 + (phone % 4 - 2) * 0.01 - lat * 0.005;
-    var longitude = -121.9966721534729 + (phone % 8 - 4) * 0.01 + lon * 0.007;
-
-    return { latitude: latitude, longitude: longitude, label: item.phone, phone: item.phone };
-}
-
-angular.module('mobile')
-    .controller('MobileController', ['$scope', 'rest', 'socket', function ($scope, rest, socket) {
-        rest.getApp(settings.mobile.appName).then(function (app) {
-            $scope.app = app;
-            $scope.appURL = settings.appsURL + app.id;
-        });
-
-        var map = {};
-
-        socket.subscribe(settings.mobile.topic.out, function(message) {
-            var item = message.data;
-
-            if (!item.hasOwnProperty('removed')) {
-                var latlon = translateLatLong(item);
-                map[item.phone] = latlon;
-            } else {
-                delete map[item.phone];
-            }
-
-            $scope.$broadcast('datachanged', map);
-        }, $scope);
-
-        //$scope.$on('phone_added', function (event, phone) {
-        //    map[phone] = { phone: phone };
-        //    $scope.$broadcast('datachanged', map);
-        //});
-
-        //$scope.$on('phone_removed', function (event, phone) {
-        //    removed[phone] = Date.now();
-        //    delete map[phone];
-        //    $scope.$broadcast('datachanged', map);
-        //});
-    }])
-    .controller('MobileGridControlller', ['$scope', '$filter', '$timeout', 'socket', function ($scope, $filter, $timeout, socket) {
-        $scope.$on('datachanged', function (event, map) {
-            $scope.gridData = _.values(map);
-        });
-
-        $scope.phone = '';
-        $scope.addPhone = function () {
-            var command = {
-                command : 'add',
-                phone : $scope.phone
-            };
-
-            var message = { "type" : "publish", "topic" : settings.mobile.topic.in, "data" : command };
-            socket.send(message);
-
-            //$scope.$emit('phone_added', $scope.phone);
-
-            $scope.phone = '';
-        };
-
-        $scope.removePhone = function(phone) {
-            var command = {
-                command : 'del',
-                phone : phone
-            };
-
-            var message = { "type" : "publish", "topic" : settings.mobile.topic.in, "data" : command };
-            socket.send(message);
-
-            //$scope.$emit('phone_removed', phone);
-        };
-
-        $scope.gridOptions = {
-            data: 'gridData',
-            enableColumnResize: true,
-            enableRowSelection: false,
-            columnDefs: [
-                { field: "phone", displayName: 'Phone', width: '30%', sortable: false },
-                { field: "latitude", displayName: 'Latitude', cellFilter: 'number:3', width: '30%', sortable: false },
-                { field: "longitude", displayName: 'Longitude', cellFilter: 'number:3', width: '30%', sortable: false },
-                { field: "phone", displayName: '', cellTemplate: '<div class="ngCellText" ng-class="col.colIndex()" ng-click="removePhone(COL_FIELD)"><i class="icon-trash"></i></div>', cellClass: 'mobile-grid-remove', width: '10%', sortable: false }
-            ]
-        };
-    }])
-    .controller('MapController', ['$scope', 'socket', function ($scope, socket) {
-        google.maps.visualRefresh = true;
-
-        $scope.$on('datachanged', function (event, map) {
-            $scope.markersProperty = _.values(map); //TODO update only changed marker
-        });
-
-        angular.extend($scope, {
-            position: {
-                coords: {
-                    latitude: 37.36197126180853,
-                    longitude: -121.92674696445465
-                }
-            },
-            zoomProperty: 12
-        });
-    }]);
-
-})();


[72/98] [abbrv] incubator-apex-malhar git commit: Merge branch 'MLHR-1886-3.2' into release-3.2

Posted by da...@apache.org.
Merge branch 'MLHR-1886-3.2' into release-3.2


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/dca24846
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/dca24846
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/dca24846

Branch: refs/heads/master
Commit: dca248462653a2e0e93fe60172a462f442eb9ea8
Parents: c86e50a 7156400
Author: Timothy Farkas <ti...@datatorrent.com>
Authored: Thu Nov 5 17:19:34 2015 -0800
Committer: Timothy Farkas <ti...@datatorrent.com>
Committed: Thu Nov 5 17:19:34 2015 -0800

----------------------------------------------------------------------
 .../lib/io/fs/AbstractFileOutputOperator.java   | 361 ++++++++++---------
 1 file changed, 199 insertions(+), 162 deletions(-)
----------------------------------------------------------------------



[96/98] [abbrv] incubator-apex-malhar git commit: MLHR-1899 Workaround problematic test file content.

Posted by da...@apache.org.
MLHR-1899 Workaround problematic test file content.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/f9875f6d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/f9875f6d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/f9875f6d

Branch: refs/heads/master
Commit: f9875f6dff2b3efbdddf099029952fc03806ac9c
Parents: 55e9b8f
Author: MalharJenkins <je...@datatorrent.com>
Authored: Tue Nov 10 00:16:55 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Tue Nov 10 14:01:17 2015 -0800

----------------------------------------------------------------------
 .../contrib/romesyndication/cnn_topstories.rss  | 242 -------------------
 .../romesyndication/cnn_topstories_updated.rss  | 242 -------------------
 .../datatorrent/demos/wordcount/samplefile.txt  |  93 +------
 .../test/resources/SocketInputOperatorTest.txt  |   9 +-
 4 files changed, 2 insertions(+), 584 deletions(-)
----------------------------------------------------------------------



[18/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/jquery-deferred/lib/jquery-deferred.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/jquery-deferred/lib/jquery-deferred.js b/web/demos/package/node_modules/jquery-deferred/lib/jquery-deferred.js
deleted file mode 100644
index 0ea524d..0000000
--- a/web/demos/package/node_modules/jquery-deferred/lib/jquery-deferred.js
+++ /dev/null
@@ -1,163 +0,0 @@
-
-/*!
-* jquery-deferred
-* Copyright(c) 2011 Hidden <zz...@gmail.com>
-* MIT Licensed
-*/
-
-/**
-* Library version.
-*/
-
-var jQuery = module.exports = require("./jquery-callbacks.js"),
-	core_slice = Array.prototype.slice;
-
-/**
-* jQuery deferred
-*
-* Code from: https://github.com/jquery/jquery/blob/master/src/deferred.js
-* Doc: http://api.jquery.com/category/deferred-object/
-*
-*/
-
-jQuery.extend({
-
-	Deferred: function( func ) {
-		var tuples = [
-				// action, add listener, listener list, final state
-				[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
-				[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
-				[ "notify", "progress", jQuery.Callbacks("memory") ]
-			],
-			state = "pending",
-			promise = {
-				state: function() {
-					return state;
-				},
-				always: function() {
-					deferred.done( arguments ).fail( arguments );
-					return this;
-				},
-				then: function( /* fnDone, fnFail, fnProgress */ ) {
-					var fns = arguments;
-					return jQuery.Deferred(function( newDefer ) {
-						jQuery.each( tuples, function( i, tuple ) {
-							var action = tuple[ 0 ],
-								fn = fns[ i ];
-							// deferred[ done | fail | progress ] for forwarding actions to newDefer
-							deferred[ tuple[1] ]( jQuery.isFunction( fn ) ?
-								function() {
-									var returned = fn.apply( this, arguments );
-									if ( returned && jQuery.isFunction( returned.promise ) ) {
-										returned.promise()
-											.done( newDefer.resolve )
-											.fail( newDefer.reject )
-											.progress( newDefer.notify );
-									} else {
-										newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
-									}
-								} :
-								newDefer[ action ]
-							);
-						});
-						fns = null;
-					}).promise();
-				},
-				// Get a promise for this deferred
-				// If obj is provided, the promise aspect is added to the object
-				promise: function( obj ) {
-					return obj != null ? jQuery.extend( obj, promise ) : promise;
-				}
-			},
-			deferred = {};
-
-		// Keep pipe for back-compat
-		promise.pipe = promise.then;
-
-		// Add list-specific methods
-		jQuery.each( tuples, function( i, tuple ) {
-			var list = tuple[ 2 ],
-				stateString = tuple[ 3 ];
-
-			// promise[ done | fail | progress ] = list.add
-			promise[ tuple[1] ] = list.add;
-
-			// Handle state
-			if ( stateString ) {
-				list.add(function() {
-					// state = [ resolved | rejected ]
-					state = stateString;
-
-				// [ reject_list | resolve_list ].disable; progress_list.lock
-				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
-			}
-
-			// deferred[ resolve | reject | notify ] = list.fire
-			deferred[ tuple[0] ] = list.fire;
-			deferred[ tuple[0] + "With" ] = list.fireWith;
-		});
-
-		// Make the deferred a promise
-		promise.promise( deferred );
-
-		// Call given func if any
-		if ( func ) {
-			func.call( deferred, deferred );
-		}
-
-		// All done!
-		return deferred;
-	},
-
-	// Deferred helper
-	when: function( subordinate /* , ..., subordinateN */ ) {
-		var i = 0,
-			resolveValues = core_slice.call( arguments ),
-			length = resolveValues.length,
-
-			// the count of uncompleted subordinates
-			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
-
-			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
-			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
-
-			// Update function for both resolve and progress values
-			updateFunc = function( i, contexts, values ) {
-				return function( value ) {
-					contexts[ i ] = this;
-					values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
-					if( values === progressValues ) {
-						deferred.notifyWith( contexts, values );
-					} else if ( !( --remaining ) ) {
-						deferred.resolveWith( contexts, values );
-					}
-				};
-			},
-
-			progressValues, progressContexts, resolveContexts;
-
-		// add listeners to Deferred subordinates; treat others as resolved
-		if ( length > 1 ) {
-			progressValues = new Array( length );
-			progressContexts = new Array( length );
-			resolveContexts = new Array( length );
-			for ( ; i < length; i++ ) {
-				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
-					resolveValues[ i ].promise()
-						.done( updateFunc( i, resolveContexts, resolveValues ) )
-						.fail( deferred.reject )
-						.progress( updateFunc( i, progressContexts, progressValues ) );
-				} else {
-					--remaining;
-				}
-			}
-		}
-
-		// if we're not waiting on anything, resolve the master
-		if ( !remaining ) {
-			deferred.resolveWith( resolveContexts, resolveValues );
-		}
-
-		return deferred.promise();
-	}
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/jquery-deferred/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/jquery-deferred/package.json b/web/demos/package/node_modules/jquery-deferred/package.json
deleted file mode 100644
index f6bf099..0000000
--- a/web/demos/package/node_modules/jquery-deferred/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "name": "jquery-deferred",
-  "version": "0.3.0",
-  "description": "jQuery 1.8.2 deferred lib for nodeJS.",
-  "keywords": [
-    "deferred"
-  ],
-  "author": {
-    "name": "Hidden",
-    "email": "zzdhidden@gmail.com"
-  },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/zzdhidden/node-jquery-deferred.git"
-  },
-  "dependencies": {},
-  "main": "index",
-  "engines": {
-    "node": ">=0.4.0"
-  },
-  "readme": "\njquery-deferred\n=============================\n\njQuery deferred lib for nodeJS.\n\njQuery.Deferred(), is a chainable utility object that can register multiple callbacks into callback queues, invoke callback queues, and relay the success or failure state of any synchronous or asynchronous function.\n\nDoc [http://api.jquery.com/category/deferred-object/](http://api.jquery.com/category/deferred-object/)\n\nInstallation\n-----------------------------\n  \n>     npm install jquery-deferred\n\nIn nodeJS\n\n`var jQuery = require('jquery-deferred');`\n\n\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 Hidden &lt;zzdhidden@gmail.com&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Softwa
 re, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
-  "readmeFilename": "Readme.md",
-  "bugs": {
-    "url": "https://github.com/zzdhidden/node-jquery-deferred/issues"
-  },
-  "homepage": "https://github.com/zzdhidden/node-jquery-deferred",
-  "_id": "jquery-deferred@0.3.0",
-  "_from": "jquery-deferred@~0.3.0"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/.travis.yml b/web/demos/package/node_modules/mongodb/.travis.yml
deleted file mode 100644
index 7ef2762..0000000
--- a/web/demos/package/node_modules/mongodb/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-language: node_js
-node_js:
-  - 0.6
-  - 0.8
-  - 0.10
-  - 0.11
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/CONTRIBUTING.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/CONTRIBUTING.md b/web/demos/package/node_modules/mongodb/CONTRIBUTING.md
deleted file mode 100644
index c23e426..0000000
--- a/web/demos/package/node_modules/mongodb/CONTRIBUTING.md
+++ /dev/null
@@ -1,23 +0,0 @@
-## Contributing to the driver
-
-### Bugfixes
-
-- Before starting to write code, look for existing [tickets](https://jira.mongodb.org/browse/NODE) or [create one](https://jira.mongodb.org/secure/CreateIssue!default.jspa) for your specific issue under the "Node Driver" project. That way you avoid working on something that might not be of interest or that has been addressed already in a different branch.
-- Fork the [repo](https://github.com/mongodb/node-mongodb-native) _or_ for small documentation changes, navigate to the source on github and click the [Edit](https://github.com/blog/844-forking-with-the-edit-button) button.
-- Follow the general coding style of the rest of the project:
-  - 2 space tabs
-  - no trailing whitespace
-  - comma last
-  - inline documentation for new methods, class members, etc
-  - 0 space between conditionals/functions, and their parenthesis and curly braces
-    - `if(..) {`
-    - `for(..) {`
-    - `while(..) {`
-    - `function(err) {`
-- Write tests and make sure they pass (execute `npm test` from the cmd line to run the test suite).
-
-### Documentation
-
-To contribute to the [API documentation](http://mongodb.github.com/node-mongodb-native/) just make your changes to the inline documentation of the appropriate [source code](https://github.com/mongodb/node-mongodb-native/tree/master/docs) in the master branch and submit a [pull request](https://help.github.com/articles/using-pull-requests/). You might also use the github [Edit](https://github.com/blog/844-forking-with-the-edit-button) button.
-
-If you'd like to preview your documentation changes, first commit your changes to your local master branch, then execute `make generate_docs`. Make sure you have the python documentation framework sphinx installed `easy_install sphinx`. The docs are generated under `docs/build'. If all looks good, submit a [pull request](https://help.github.com/articles/using-pull-requests/) to the master branch with your changes.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/LICENSE b/web/demos/package/node_modules/mongodb/LICENSE
deleted file mode 100644
index 261eeb9..0000000
--- a/web/demos/package/node_modules/mongodb/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   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 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.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/Makefile
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/Makefile b/web/demos/package/node_modules/mongodb/Makefile
deleted file mode 100644
index 59d2bfe..0000000
--- a/web/demos/package/node_modules/mongodb/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-NODE = node
-NPM = npm
-NODEUNIT = node_modules/nodeunit/bin/nodeunit
-DOX = node_modules/dox/bin/dox
-name = all
-
-total: build_native
-
-test_functional:
-	node test/runner.js -t functional
-
-test_ssl:
-	node test/runner.js -t ssl	
-
-test_replicaset:
-	node test/runner.js -t replicaset
-
-test_sharded:
-	node test/runner.js -t sharded
-
-test_auth:
-	node test/runner.js -t auth
-
-generate_docs:
-	$(NODE) dev/tools/build-docs.js
-	make --directory=./docs/sphinx-docs --file=Makefile html
-
-.PHONY: total

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/Readme.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/Readme.md b/web/demos/package/node_modules/mongodb/Readme.md
deleted file mode 100644
index c61fbc0..0000000
--- a/web/demos/package/node_modules/mongodb/Readme.md
+++ /dev/null
@@ -1,414 +0,0 @@
-## MongoDB Node.JS Driver
- 
-| what          | where                                          |
-|---------------|------------------------------------------------|
-| documentation | http://mongodb.github.io/node-mongodb-native/  |
-| apidoc        | http://mongodb.github.io/node-mongodb-native/  |
-| source        | https://github.com/mongodb/node-mongodb-native |
-| mongodb       | http://www.mongodb.org/                        |
-
-### Bugs / Feature Requests
-
-Think youā€™ve found a bug? Want to see a new feature in PyMongo? Please open a
-case in our issue management tool, JIRA:
-
-- Create an account and login <https://jira.mongodb.org>.
-- Navigate to the NODE project <https://jira.mongodb.org/browse/NODE>.
-- Click **Create Issue** - Please provide as much information as possible about the issue type and how to reproduce it.
-
-Bug reports in JIRA for all driver projects (i.e. NODE, PYTHON, CSHARP, JAVA) and the
-Core Server (i.e. SERVER) project are **public**.
-
-### Questions and Bug Reports
-
- * mailing list: https://groups.google.com/forum/#!forum/node-mongodb-native
- * jira: http://jira.mongodb.org/
-
-### Change Log
-
-http://jira.mongodb.org/browse/NODE
-
-## Install
-
-To install the most recent release from npm, run:
-
-    npm install mongodb
-
-That may give you a warning telling you that bugs['web'] should be bugs['url'], it would be safe to ignore it (this has been fixed in the development version)
-
-To install the latest from the repository, run::
-
-    npm install path/to/node-mongodb-native
-
-## Live Examples
-<a href="https://runnable.com/node-mongodb-native" target="_blank"><img src="https://runnable.com/external/styles/assets/runnablebtn.png" style="width:67px;height:25px;"></a>
-
-## Introduction
-
-This is a node.js driver for MongoDB. It's a port (or close to a port) of the library for ruby at http://github.com/mongodb/mongo-ruby-driver/.
-
-A simple example of inserting a document.
-
-```javascript
-  var MongoClient = require('mongodb').MongoClient
-    , format = require('util').format;
-
-  MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
-    if(err) throw err;
-
-    var collection = db.collection('test_insert');
-    collection.insert({a:2}, function(err, docs) {
-      
-      collection.count(function(err, count) {
-        console.log(format("count = %s", count));
-      });
-
-      // Locate all the entries using find
-      collection.find().toArray(function(err, results) {
-        console.dir(results);
-        // Let's close the db
-        db.close();
-      });
-    });
-  })
-```
-
-## Data types
-
-To store and retrieve the non-JSON MongoDb primitives ([ObjectID](http://www.mongodb.org/display/DOCS/Object+IDs), Long, Binary, [Timestamp](http://www.mongodb.org/display/DOCS/Timestamp+data+type), [DBRef](http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-DBRef), Code).
-
-In particular, every document has a unique `_id` which can be almost any type, and by default a 12-byte ObjectID is created. ObjectIDs can be represented as 24-digit hexadecimal strings, but you must convert the string back into an ObjectID before you can use it in the database. For example:
-
-```javascript
-  // Get the objectID type
-  var ObjectID = require('mongodb').ObjectID;
-
-  var idString = '4e4e1638c85e808431000003';
-  collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
-  collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
-```
-
-Here are the constructors the non-Javascript BSON primitive types:
-
-```javascript
-  // Fetch the library
-  var mongo = require('mongodb');
-  // Create new instances of BSON types
-  new mongo.Long(numberString)
-  new mongo.ObjectID(hexString)
-  new mongo.Timestamp()  // the actual unique number is generated on insert.
-  new mongo.DBRef(collectionName, id, dbName)
-  new mongo.Binary(buffer)  // takes a string or Buffer
-  new mongo.Code(code, [context])
-  new mongo.Symbol(string)
-  new mongo.MinKey()
-  new mongo.MaxKey()
-  new mongo.Double(number)	// Force double storage
-```
-
-### The C/C++ bson parser/serializer
-
-If you are running a version of this library has the C/C++ parser compiled, to enable the driver to use the C/C++ bson parser pass it the option native_parser:true like below
-
-```javascript
-  // using native_parser:
-  MongoClient.connect('mongodb://127.0.0.1:27017/test'
-    , {db: {native_parser: true}}, function(err, db) {})
-```
-
-The C++ parser uses the js objects both for serialization and deserialization.
-
-## GitHub information
-
-The source code is available at http://github.com/mongodb/node-mongodb-native.
-You can either clone the repository or download a tarball of the latest release.
-
-Once you have the source you can test the driver by running
-
-    $ make test
-
-in the main directory. You will need to have a mongo instance running on localhost for the integration tests to pass.
-
-## Examples
-
-For examples look in the examples/ directory. You can execute the examples using node.
-
-    $ cd examples
-    $ node queries.js
-
-## GridStore
-
-The GridStore class allows for storage of binary files in mongoDB using the mongoDB defined files and chunks collection definition.
-
-For more information have a look at [Gridstore](https://github.com/mongodb/node-mongodb-native/blob/master/docs/gridfs.md)
-
-## Replicasets
-
-For more information about how to connect to a replicaset have a look at the extensive documentation [Documentation](http://mongodb.github.com/node-mongodb-native/)
-
-### Primary Key Factories
-
-Defining your own primary key factory allows you to generate your own series of id's
-(this could f.ex be to use something like ISBN numbers). The generated the id needs to be a 12 byte long "string".
-
-Simple example below
-
-```javascript
-  var MongoClient = require('mongodb').MongoClient
-    , format = require('util').format;    
-
-  // Custom factory (need to provide a 12 byte array);
-  CustomPKFactory = function() {}
-  CustomPKFactory.prototype = new Object();
-  CustomPKFactory.createPk = function() {
-    return new ObjectID("aaaaaaaaaaaa");
-  }
-
-  MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
-    if(err) throw err;
-
-    db.dropDatabase(function(err, done) {
-      
-      db.createCollection('test_custom_key', function(err, collection) {
-        
-        collection.insert({'a':1}, function(err, docs) {
-          
-          collection.find({'_id':new ObjectID("aaaaaaaaaaaa")}).toArray(function(err, items) {
-            console.dir(items);
-            // Let's close the db
-            db.close();
-          });
-        });
-      });
-    });
-  });
-```
-
-## Documentation
-
-If this document doesn't answer your questions, see the source of
-[Collection](https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js)
-or [Cursor](https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/cursor.js),
-or the documentation at MongoDB for query and update formats.
-
-### Find
-
-The find method is actually a factory method to create
-Cursor objects. A Cursor lazily uses the connection the first time
-you call `nextObject`, `each`, or `toArray`.
-
-The basic operation on a cursor is the `nextObject` method
-that fetches the next matching document from the database. The convenience
-methods `each` and `toArray` call `nextObject` until the cursor is exhausted.
-
-Signatures:
-
-```javascript
-  var cursor = collection.find(query, [fields], options);
-  cursor.sort(fields).limit(n).skip(m).
-
-  cursor.nextObject(function(err, doc) {});
-  cursor.each(function(err, doc) {});
-  cursor.toArray(function(err, docs) {});
-
-  cursor.rewind()  // reset the cursor to its initial state.
-```
-
-Useful chainable methods of cursor. These can optionally be options of `find` instead of method calls:
-
-  * `.limit(n).skip(m)` to control paging.
-  * `.sort(fields)` Order by the given fields. There are several equivalent syntaxes:
-  * `.sort({field1: -1, field2: 1})` descending by field1, then ascending by field2.
-  * `.sort([['field1', 'desc'], ['field2', 'asc']])` same as above
-  * `.sort([['field1', 'desc'], 'field2'])` same as above
-  * `.sort('field1')` ascending by field1
-
-Other options of `find`:
-
-* `fields` the fields to fetch (to avoid transferring the entire document)
-* `tailable` if true, makes the cursor [tailable](http://www.mongodb.org/display/DOCS/Tailable+Cursors).
-* `batchSize` The number of the subset of results to request the database
-to return for every request. This should initially be greater than 1 otherwise
-the database will automatically close the cursor. The batch size can be set to 1
-with `batchSize(n, function(err){})` after performing the initial query to the database.
-* `hint` See [Optimization: hint](http://www.mongodb.org/display/DOCS/Optimization#Optimization-Hint).
-* `explain` turns this into an explain query. You can also call
-`explain()` on any cursor to fetch the explanation.
-* `snapshot` prevents documents that are updated while the query is active
-from being returned multiple times. See more
-[details about query snapshots](http://www.mongodb.org/display/DOCS/How+to+do+Snapshotted+Queries+in+the+Mongo+Database).
-* `timeout` if false, asks MongoDb not to time out this cursor after an
-inactivity period.
-
-For information on how to create queries, see the
-[MongoDB section on querying](http://www.mongodb.org/display/DOCS/Querying).
-
-```javascript
-  var MongoClient = require('mongodb').MongoClient
-    , format = require('util').format;    
-
-  MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
-    if(err) throw err;
-
-    var collection = db
-      .collection('test')
-      .find({})
-      .limit(10)
-      .toArray(function(err, docs) {
-        console.dir(docs);
-    });
-  });
-```
-
-### Insert
-
-Signature:
-
-```javascript
-  collection.insert(docs, options, [callback]);
-```
-
-where `docs` can be a single document or an array of documents.
-
-Useful options:
-
-* `safe:true` Should always set if you have a callback.
-
-See also: [MongoDB docs for insert](http://www.mongodb.org/display/DOCS/Inserting).
-
-```javascript
-  var MongoClient = require('mongodb').MongoClient
-    , format = require('util').format;    
-
-  MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
-    if(err) throw err;
-    
-    db.collection('test').insert({hello: 'world'}, {w:1}, function(err, objects) {
-      if (err) console.warn(err.message);
-      if (err && err.message.indexOf('E11000 ') !== -1) {
-        // this _id was already inserted in the database
-      }
-    });
-  });
-```
-
-Note that there's no reason to pass a callback to the insert or update commands
-unless you use the `safe:true` option. If you don't specify `safe:true`, then
-your callback will be called immediately.
-
-### Update: update and insert (upsert)
-
-The update operation will update the first document that matches your query
-(or all documents that match if you use `multi:true`).
-If `safe:true`, `upsert` is not set, and no documents match, your callback will return 0 documents updated.
-
-See the [MongoDB docs](http://www.mongodb.org/display/DOCS/Updating) for
-the modifier (`$inc`, `$set`, `$push`, etc.) formats.
-
-Signature:
-
-```javascript
-  collection.update(criteria, objNew, options, [callback]);
-```
-
-Useful options:
-
-* `safe:true` Should always set if you have a callback.
-* `multi:true` If set, all matching documents are updated, not just the first.
-* `upsert:true` Atomically inserts the document if no documents matched.
-
-Example for `update`:
-
-```javascript
-  var MongoClient = require('mongodb').MongoClient
-    , format = require('util').format;    
-
-  MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
-    if(err) throw err;
-
-    db.collection('test').update({hi: 'here'}, {$set: {hi: 'there'}}, {w:1}, function(err) {
-      if (err) console.warn(err.message);
-      else console.log('successfully updated');
-    });
-  });
-```
-
-### Find and modify
-
-`findAndModify` is like `update`, but it also gives the updated document to
-your callback. But there are a few key differences between findAndModify and
-update:
-
-  1. The signatures differ.
-  2. You can only findAndModify a single item, not multiple items.
-
-Signature:
-
-```javascript
-    collection.findAndModify(query, sort, update, options, callback)
-```
-
-The sort parameter is used to specify which object to operate on, if more than
-one document matches. It takes the same format as the cursor sort (see
-Connection.find above).
-
-See the
-[MongoDB docs for findAndModify](http://www.mongodb.org/display/DOCS/findAndModify+Command)
-for more details.
-
-Useful options:
-
-* `remove:true` set to a true to remove the object before returning
-* `new:true` set to true if you want to return the modified object rather than the original. Ignored for remove.
-* `upsert:true` Atomically inserts the document if no documents matched.
-
-Example for `findAndModify`:
-
-```javascript
-  var MongoClient = require('mongodb').MongoClient
-    , format = require('util').format;    
-
-  MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
-    if(err) throw err;
-    db.collection('test').findAndModify({hello: 'world'}, [['_id','asc']], {$set: {hi: 'there'}}, {}, function(err, object) {
-      if (err) console.warn(err.message);
-      else console.dir(object);  // undefined if no matching object exists.
-    });
-  });
-```
-
-### Save
-
-The `save` method is a shorthand for upsert if the document contains an
-`_id`, or an insert if there is no `_id`.
-
-## Release Notes
-
-See HISTORY
-
-## Credits
-
-1. [10gen](http://github.com/mongodb/mongo-ruby-driver/)
-2. [Google Closure Library](http://code.google.com/closure/library/)
-3. [Jonas Raoni Soares Silva](http://jsfromhell.com/classes/binary-parser)
-
-## Contributors
-
-Aaron Heckmann, Christoph Pojer, Pau Ramon Revilla, Nathan White, Emmerman, Seth LaForge, Boris Filipov, Stefan SchƤrmeli, Tedde Lundgren, renctan, Sergey Ukustov, Ciaran Jessup, kuno, srimonti, Erik Abele, Pratik Daga, Slobodan Utvic, Kristina Chodorow, Yonathan Randolph, Brian Noguchi, Sam Epstein, James Harrison Fisher, Vladimir Dronnikov, Ben Hockey, Henrik Johansson, Simon Weare, Alex Gorbatchev, Shimon Doodkin, Kyle Mueller, Eran Hammer-Lahav, Marcin Ciszak, FranƧois de Metz, Vinay Pulim, nstielau, Adam Wiggins, entrinzikyl, Jeremy Selier, Ian Millington, Public Keating, andrewjstone, Christopher Stott, Corey Jewett, brettkiefer, Rob Holland, Senmiao Liu, heroic, gitfy
-
-## License
-
- Copyright 2009 - 2013 MongoDb Inc.
-
-   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 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.
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/index.js b/web/demos/package/node_modules/mongodb/index.js
deleted file mode 100755
index 4f59e9d..0000000
--- a/web/demos/package/node_modules/mongodb/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib/mongodb');

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/admin.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/admin.js b/web/demos/package/node_modules/mongodb/lib/mongodb/admin.js
deleted file mode 100644
index 0bd01b5..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/admin.js
+++ /dev/null
@@ -1,339 +0,0 @@
-/*!
- * Module dependencies.
- */
-var Collection = require('./collection').Collection,
-    Cursor = require('./cursor').Cursor,
-    DbCommand = require('./commands/db_command').DbCommand,
-    utils = require('./utils');
-
-/**
- * Allows the user to access the admin functionality of MongoDB
- *
- * @class Represents the Admin methods of MongoDB.
- * @param {Object} db Current db instance we wish to perform Admin operations on.
- * @return {Function} Constructor for Admin type.
- */
-function Admin(db) {
-  if(!(this instanceof Admin)) return new Admin(db);
-  this.db = db;
-};
-
-/**
- * Retrieve the server information for the current
- * instance of the db client
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from buildInfo or null if an error occured.
- * @return {null} Returns no result
- * @api public
- */
-Admin.prototype.buildInfo = function(callback) {
-  this.serverInfo(callback);
-}
-
-/**
- * Retrieve the server information for the current
- * instance of the db client
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from serverInfo or null if an error occured.
- * @return {null} Returns no result
- * @api private
- */
-Admin.prototype.serverInfo = function(callback) {
-  this.db.executeDbAdminCommand({buildinfo:1}, function(err, doc) {
-    if(err != null) return callback(err, null);
-    return callback(null, doc.documents[0]);
-  });
-}
-
-/**
- * Retrieve this db's server status.
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from serverStatus or null if an error occured.
- * @return {null}
- * @api public
- */
-Admin.prototype.serverStatus = function(callback) {
-  var self = this;
-
-  this.db.executeDbAdminCommand({serverStatus: 1}, function(err, doc) {
-    if(err == null && doc.documents[0].ok === 1) {
-      callback(null, doc.documents[0]);
-    } else {
-      if(err) return callback(err, false);
-      return callback(utils.toError(doc.documents[0]), false);
-    }
-  });
-};
-
-/**
- * Retrieve the current profiling Level for MongoDB
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from profilingLevel or null if an error occured.
- * @return {null} Returns no result
- * @api public
- */
-Admin.prototype.profilingLevel = function(callback) {
-  var self = this;
-
-  this.db.executeDbAdminCommand({profile:-1}, function(err, doc) {
-    doc = doc.documents[0];
-
-    if(err == null && doc.ok === 1) {
-      var was = doc.was;
-      if(was == 0) return callback(null, "off");
-      if(was == 1) return callback(null, "slow_only");
-      if(was == 2) return callback(null, "all");
-        return callback(new Error("Error: illegal profiling level value " + was), null);
-    } else {
-      err != null ? callback(err, null) : callback(new Error("Error with profile command"), null);
-    }
-  });
-};
-
-/**
- * Ping the MongoDB server and retrieve results
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from ping or null if an error occured.
- * @return {null} Returns no result
- * @api public
- */
-Admin.prototype.ping = function(options, callback) {
-  // Unpack calls
-  var args = Array.prototype.slice.call(arguments, 0);
-  callback = args.pop();
-
-  this.db.executeDbAdminCommand({ping: 1}, callback);
-}
-
-/**
- * Authenticate against MongoDB
- *
- * @param {String} username The user name for the authentication.
- * @param {String} password The password for the authentication.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from authenticate or null if an error occured.
- * @return {null} Returns no result
- * @api public
- */
-Admin.prototype.authenticate = function(username, password, callback) {
-  this.db.authenticate(username, password, {authdb: 'admin'}, function(err, doc) {
-    return callback(err, doc);
-  })
-}
-
-/**
- * Logout current authenticated user
- *
- * @param {Object} [options] Optional parameters to the command.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from logout or null if an error occured.
- * @return {null} Returns no result
- * @api public
- */
-Admin.prototype.logout = function(callback) {
-  this.db.logout({authdb: 'admin'},  function(err, doc) {
-    return callback(err, doc);
-  })
-}
-
-/**
- * Add a user to the MongoDB server, if the user exists it will
- * overwrite the current password
- *
- * Options
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {String} username The user name for the authentication.
- * @param {String} password The password for the authentication.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from addUser or null if an error occured.
- * @return {null} Returns no result
- * @api public
- */
-Admin.prototype.addUser = function(username, password, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 2);
-  callback = args.pop();
-  options = args.length ? args.shift() : {};
-  // Set the db name to admin
-  options.dbName = 'admin';
-  // Add user
-  this.db.addUser(username, password, options, function(err, doc) {
-    return callback(err, doc);
-  })
-}
-
-/**
- * Remove a user from the MongoDB server
- *
- * Options
- *  - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB.
- *
- * @param {String} username The user name for the authentication.
- * @param {Object} [options] additional options during update.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from removeUser or null if an error occured.
- * @return {null} Returns no result
- * @api public
- */
-Admin.prototype.removeUser = function(username, options, callback) {
-  var self = this;
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = args.pop();
-  options = args.length ? args.shift() : {};
-  options.dbName = 'admin';
-
-  this.db.removeUser(username, options, function(err, doc) {
-    return callback(err, doc);
-  })
-}
-
-/**
- * Set the current profiling level of MongoDB
- *
- * @param {String} level The new profiling level (off, slow_only, all)
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from setProfilingLevel or null if an error occured.
- * @return {null} Returns no result
- * @api public
- */
-Admin.prototype.setProfilingLevel = function(level, callback) {
-  var self = this;
-  var command = {};
-  var profile = 0;
-
-  if(level == "off") {
-    profile = 0;
-  } else if(level == "slow_only") {
-    profile = 1;
-  } else if(level == "all") {
-    profile = 2;
-  } else {
-    return callback(new Error("Error: illegal profiling level value " + level));
-  }
-
-  // Set up the profile number
-  command['profile'] = profile;
-
-  this.db.executeDbAdminCommand(command, function(err, doc) {
-    doc = doc.documents[0];
-
-    if(err == null && doc.ok === 1)
-      return callback(null, level);
-    return err != null ? callback(err, null) : callback(new Error("Error with profile command"), null);
-  });
-};
-
-/**
- * Retrive the current profiling information for MongoDB
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from profilingInfo or null if an error occured.
- * @return {null} Returns no result
- * @api public
- */
-Admin.prototype.profilingInfo = function(callback) {
-  try {
-    new Cursor(this.db, new Collection(this.db, DbCommand.SYSTEM_PROFILE_COLLECTION), {}, {}, {dbName: 'admin'}).toArray(function(err, items) {
-        return callback(err, items);
-    });
-  } catch (err) {
-    return callback(err, null);
-  }
-};
-
-/**
- * Execute a db command against the Admin database
- *
- * @param {Object} command A command object `{ping:1}`.
- * @param {Object} [options] Optional parameters to the command.
- * @param {Function} callback this will be called after executing this method. The command always return the whole result of the command as the second parameter.
- * @return {null} Returns no result
- * @api public
- */
-Admin.prototype.command = function(command, options, callback) {
-  var self = this;
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = args.pop();
-  options = args.length ? args.shift() : {};
-
-  // Execute a command
-  this.db.executeDbAdminCommand(command, options, function(err, doc) {
-    // Ensure change before event loop executes
-    return callback != null ? callback(err, doc) : null;
-  });
-}
-
-/**
- * Validate an existing collection
- *
- * @param {String} collectionName The name of the collection to validate.
- * @param {Object} [options] Optional parameters to the command.
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from validateCollection or null if an error occured.
- * @return {null} Returns no result
- * @api public
- */
-Admin.prototype.validateCollection = function(collectionName, options, callback) {
-  var args = Array.prototype.slice.call(arguments, 1);
-  callback = args.pop();
-  options = args.length ? args.shift() : {};
-
-  var self = this;
-  var command = {validate: collectionName};
-  var keys = Object.keys(options);
-
-  // Decorate command with extra options
-  for(var i = 0; i < keys.length; i++) {
-    if(options.hasOwnProperty(keys[i])) {
-      command[keys[i]] = options[keys[i]];
-    }
-  }
-
-  this.db.executeDbCommand(command, function(err, doc) {
-    if(err != null) return callback(err, null);
-    doc = doc.documents[0];
-
-    if(doc.ok === 0)
-      return callback(new Error("Error with validate command"), null);
-    if(doc.result != null && doc.result.constructor != String)
-      return callback(new Error("Error with validation data"), null);
-    if(doc.result != null && doc.result.match(/exception|corrupt/) != null)
-      return callback(new Error("Error: invalid collection " + collectionName), null);
-    if(doc.valid != null && !doc.valid)
-      return callback(new Error("Error: invalid collection " + collectionName), null);
-
-    return callback(null, doc);
-  });
-};
-
-/**
- * List the available databases
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from listDatabases or null if an error occured.
- * @return {null} Returns no result
- * @api public
- */
-Admin.prototype.listDatabases = function(callback) {
-  // Execute the listAllDatabases command
-  this.db.executeDbAdminCommand({listDatabases:1}, {}, function(err, doc) {
-    if(err != null) return callback(err, null);
-    return callback(null, doc.documents[0]);
-  });
-}
-
-/**
- * Get ReplicaSet status
- *
- * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from replSetGetStatus or null if an error occured.
- * @return {null}
- * @api public
- */
-Admin.prototype.replSetGetStatus = function(callback) {
-  var self = this;
-
-  this.db.executeDbAdminCommand({replSetGetStatus:1}, function(err, doc) {
-    if(err == null && doc.documents[0].ok === 1)
-      return callback(null, doc.documents[0]);
-    if(err) return callback(err, false);
-    return callback(utils.toError(doc.documents[0]), false);
-  });
-};
-
-/**
- * @ignore
- */
-exports.Admin = Admin;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/aggregation_cursor.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/aggregation_cursor.js b/web/demos/package/node_modules/mongodb/lib/mongodb/aggregation_cursor.js
deleted file mode 100644
index 0f424d3..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/aggregation_cursor.js
+++ /dev/null
@@ -1,257 +0,0 @@
-var ReadPreference = require('./connection/read_preference').ReadPreference
-	, Readable = require('stream').Readable
-	, CommandCursor = require('./command_cursor').CommandCursor
-	, utils = require('./utils')
-	, shared = require('./collection/shared')
-	, inherits = require('util').inherits;
-
-var AggregationCursor = function(collection, serverCapabilities, options) {	
-	var pipe = [];
-	var self = this;
-	var results = null;	
-	var _cursor_options = {};
-	// Ensure we have options set up
-	options = options == null ? {} : options;
-
-	// If a pipeline was provided
-	pipe = Array.isArray(options.pipe) ? options.pipe : pipe;
-	// Set passed in batchSize if provided
-	if(typeof options.batchSize == 'number') _cursor_options.batchSize = options.batchSize;
-	// Get the read Preference
-	var readPreference = shared._getReadConcern(collection, options);
-
-	// Set up
-	Readable.call(this, {objectMode: true});
-
-	// Contains connection
-	var connection = null;
-
-	// Set the read preference
-	var _options = { 
-		readPreference: readPreference
-	};
-
-	// Actual command
-	var command = {
-			aggregate: collection.collectionName
-		, pipeline: pipe
-		, cursor: _cursor_options
-	}
-
-	// If allowDiskUsage is set
-	if(typeof options.allowDiskUsage == 'boolean') 
-		command.allowDiskUsage = options.allowDiskUsage;
-	
-	// Command cursor (if we support one)
-	var commandCursor = new CommandCursor(collection.db, collection, command);
-
-	// // Internal cursor methods
-	// this.find = function(selector) {
-	// 	pipe.push({$match: selector});
-	// 	return self;
-	// }
-
-	// this.unwind = function(unwind) {
-	// 	pipe.push({$unwind: unwind});
-	// 	return self;
-	// }
-
-	// this.group = function(group) {
-	// 	pipe.push({$group: group});
-	// 	return self;
-	// }
-
-	// this.project = function(project) {
-	// 	pipe.push({$project: project});
-	// 	return self;
-	// }
-
-	// this.limit = function(limit) {
-	// 	pipe.push({$limit: limit});
-	// 	return self;
-	// }
-
-	// this.geoNear = function(geoNear) {
-	// 	pipe.push({$geoNear: geoNear});
-	// 	return self;
-	// }
-
-	// this.sort = function(sort) {
-	// 	pipe.push({$sort: sort});
-	// 	return self;
-	// }
-
-	// this.withReadPreference = function(read_preference) {
-	// 	_options.readPreference = read_preference;
-	// 	return self;
-	// }
-
-	// this.withQueryOptions = function(options) {
-	// 	if(options.batchSize) {
-	// 		_cursor_options.batchSize = options.batchSize;
-	// 	}
-
-	// 	// Return the cursor
-	// 	return self;
-	// }
-
-	// this.skip = function(skip) {
-	// 	pipe.push({$skip: skip});
-	// 	return self;
-	// }
-
-	// this.allowDiskUsage = function(allowDiskUsage) {
-	// 	command.allowDiskUsage = allowDiskUsage;
-	// 	return self;
-	// }
-
-	this.explain = function(callback) {
-		if(typeof callback != 'function') 
-			throw utils.toError("AggregationCursor explain requires a callback function");
-		
-		// Add explain options
-		_options.explain = true;
-		// Execute aggregation pipeline
-		collection.aggregate(pipe, _options, function(err, results) {
-			if(err) return callback(err, null);
-			callback(null, results);
-		});
-	}
-
-	// this.maxTimeMS = function(maxTimeMS) {
-	// 	if(typeof maxTimeMS != 'number') {
-	// 		throw new Error("maxTimeMS must be a number");
-	// 	}
-
-	// 	// Save the maxTimeMS
-	// 	_options.maxTimeMS = maxTimeMS
-	// 	// Set the maxTimeMS on the command cursor
-	// 	commandCursor.maxTimeMS(maxTimeMS);
-	// 	return self;
-	// }
-
-	this.get = function(callback) {
-		if(typeof callback != 'function') 
-			throw utils.toError("AggregationCursor get requires a callback function");		
-	  // Checkout a connection
-	  var _connection = collection.db.serverConfig.checkoutReader(_options.readPreference);
-	  // Fall back
-		if(!_connection.serverCapabilities.hasAggregationCursor) {
-			return collection.aggregate(pipe, _options, function(err, results) {
-				if(err) return callback(err);
-				callback(null, results);
-			});			
-		}
-
-		// Execute get using command Cursor
-		commandCursor.get({connection: _connection}, callback);
-	}
-
-	this.getOne = function(callback) {
-		if(typeof callback != 'function') 
-			throw utils.toError("AggregationCursor getOne requires a callback function");		
-		// Set the limit to 1
-		pipe.push({$limit: 1});
-		// For now we have no cursor command so let's just wrap existing results
-		collection.aggregate(pipe, _options, function(err, results) {
-			if(err) return callback(err);
-			callback(null, results[0]);
-		});
-	}
-
-	this.each = function(callback) {
-	  // Checkout a connection if we have none
-	  if(!connection)
-	  	connection = collection.db.serverConfig.checkoutReader(_options.readPreference);
-	  
-	  // Fall back
-		if(!connection.serverCapabilities.hasAggregationCursor) {
-			collection.aggregate(pipe, _options, function(err, _results) {
-				if(err) return callback(err);
-
-				while(_results.length > 0) {
-					callback(null, _results.shift());
-				}
-
-				callback(null, null);
-			});
-		}
-
-		// Execute each using command Cursor
-		commandCursor.each({connection: connection}, callback);		
-	}
-
-	this.next = function(callback) {
-		if(typeof callback != 'function') 
-			throw utils.toError("AggregationCursor next requires a callback function");		
-
-	  // Checkout a connection if we have none
-	  if(!connection)
-	  	connection = collection.db.serverConfig.checkoutReader(_options.readPreference);
-	  
-	  // Fall back
-		if(!connection.serverCapabilities.hasAggregationCursor) {
-			if(!results) {
-				// For now we have no cursor command so let's just wrap existing results
-				return collection.aggregate(pipe, _options, function(err, _results) {
-					if(err) return callback(err);
-					results = _results;
-	        
-	        // Ensure we don't issue undefined
-	        var item = results.shift();
-	        callback(null, item ? item : null);
-				});			
-			}
-
-	    // Ensure we don't issue undefined
-	    var item = results.shift();
-	    // Return the item
-	    return callback(null, item ? item : null);
-	  }
-
-		// Execute next using command Cursor
-		commandCursor.next({connection: connection}, callback);		
-	}
-
-	//
-	// Close method
-	//
-	this.close = function(callback) {
-		if(typeof callback != 'function') 
-			throw utils.toError("AggregationCursor close requires a callback function");		
-
-	  // Checkout a connection if we have none
-	  if(!connection)
-	  	connection = collection.db.serverConfig.checkoutReader(_options.readPreference);
-
-	  // Fall back
-		if(!connection.serverCapabilities.hasAggregationCursor) {
-			return callback(null, null);
-		}
-
-		// Execute next using command Cursor
-		commandCursor.close({connection: connection}, callback);		
-	}
-
-	//
-	// Stream method
-	//
-	this._read = function(n) {
-		self.next(function(err, result) {
-			if(err) {
-				self.emit('error', err);
-				return self.push(null);
-			}
-
-			self.push(result);
-		});
-	}
-}
-
-// Inherit from Readable
-if(Readable != null) {
-	inherits(AggregationCursor, Readable);	
-}
-
-// Exports the Aggregation Framework
-exports.AggregationCursor = AggregationCursor;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js b/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js
deleted file mode 100644
index 39bf2ab..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js
+++ /dev/null
@@ -1,62 +0,0 @@
-var DbCommand = require('../commands/db_command').DbCommand
-  , utils = require('../utils');
-
-var authenticate = function(db, username, password, authdb, options, callback) {
-  var numberOfConnections = 0;
-  var errorObject = null;
-
-  if(options['connection'] != null) {
-    //if a connection was explicitly passed on options, then we have only one...
-    numberOfConnections = 1;
-  } else {
-    // Get the amount of connections in the pool to ensure we have authenticated all comments
-    numberOfConnections = db.serverConfig.allRawConnections().length;
-    options['onAll'] = true;
-  }
-
-  // Execute all four
-  db._executeQueryCommand(DbCommand.createGetNonceCommand(db), options, function(err, result, connection) {
-    // console.log("--------------------------------------------- MONGODB-CR 0")
-    // console.dir(err)
-    // Execute on all the connections
-    if(err == null) {
-      // Nonce used to make authentication request with md5 hash
-      var nonce = result.documents[0].nonce;
-      // Execute command
-      db._executeQueryCommand(DbCommand.createAuthenticationCommand(db, username, password, nonce, authdb), {connection:connection}, function(err, result) {
-        // console.log("--------------------------------------------- MONGODB-CR 1")
-        // console.dir(err)
-        // console.dir(result)
-        // Count down
-        numberOfConnections = numberOfConnections - 1;
-        // Ensure we save any error
-        if(err) {
-          errorObject = err;
-        } else if(result 
-          && Array.isArray(result.documents) 
-          && result.documents.length > 0 
-          && (result.documents[0].err != null || result.documents[0].errmsg != null)) {
-            errorObject = utils.toError(result.documents[0]);
-        }
-
-        // Work around the case where the number of connections are 0
-        if(numberOfConnections <= 0 && typeof callback == 'function') {
-          var internalCallback = callback;
-          callback = null;
-
-          if(errorObject == null
-              && result && Array.isArray(result.documents) && result.documents.length > 0
-              && result.documents[0].ok == 1) {            // We authenticated correctly save the credentials
-            db.serverConfig.auth.add('MONGODB-CR', db.databaseName, username, password, authdb);
-            // Return callback
-            internalCallback(errorObject, true);
-          } else {
-            internalCallback(errorObject, false);
-          }
-        }
-      });
-    }
-  });  
-}
-
-exports.authenticate = authenticate;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_gssapi.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_gssapi.js b/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_gssapi.js
deleted file mode 100644
index 47b5155..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_gssapi.js
+++ /dev/null
@@ -1,149 +0,0 @@
-var DbCommand = require('../commands/db_command').DbCommand
-  , utils = require('../utils')
-  , format = require('util').format;
-
-// Kerberos class
-var Kerberos = null;
-var MongoAuthProcess = null;
-// Try to grab the Kerberos class
-try {
-  Kerberos = require('kerberos').Kerberos
-  // Authentication process for Mongo
-  MongoAuthProcess = require('kerberos').processes.MongoAuthProcess
-} catch(err) {}
-
-var authenticate = function(db, username, password, authdb, options, callback) {
-  var numberOfConnections = 0;
-  var errorObject = null;  
-  // We don't have the Kerberos library
-  if(Kerberos == null) return callback(new Error("Kerberos library is not installed"));  
-
-  if(options['connection'] != null) {
-    //if a connection was explicitly passed on options, then we have only one...
-    numberOfConnections = 1;
-  } else {
-    // Get the amount of connections in the pool to ensure we have authenticated all comments
-    numberOfConnections = db.serverConfig.allRawConnections().length;
-    options['onAll'] = true;
-  }
-
-  // Grab all the connections
-  var connections = options['connection'] != null ? [options['connection']] : db.serverConfig.allRawConnections();
-  var gssapiServiceName = options['gssapiServiceName'] || 'mongodb';
-  var error = null;
-  // Authenticate all connections
-  for(var i = 0; i < numberOfConnections; i++) {
-
-    // Start Auth process for a connection
-    GSSAPIInitialize(db, username, password, authdb, gssapiServiceName, connections[i], function(err, result) {
-      // Adjust number of connections left to connect
-      numberOfConnections = numberOfConnections - 1;
-      // If we have an error save it
-      if(err) error = err;
-
-      // We are done
-      if(numberOfConnections == 0) {
-        if(err) return callback(error, false);
-        // We authenticated correctly save the credentials
-        db.serverConfig.auth.add('GSSAPI', db.databaseName, username, password, authdb, gssapiServiceName);
-        // Return valid callback
-        return callback(null, true);
-      }
-    });    
-  }
-}
-
-//
-// Initialize step
-var GSSAPIInitialize = function(db, username, password, authdb, gssapiServiceName, connection, callback) {
-  // Create authenticator
-  var mongo_auth_process = new MongoAuthProcess(connection.socketOptions.host, connection.socketOptions.port, gssapiServiceName);
-
-  // Perform initialization
-  mongo_auth_process.init(username, password, function(err, context) {
-    if(err) return callback(err, false);
-
-    // Perform the first step
-    mongo_auth_process.transition('', function(err, payload) {
-      if(err) return callback(err, false);
-
-      // Call the next db step
-      MongoDBGSSAPIFirstStep(mongo_auth_process, payload, db, username, password, authdb, connection, callback);
-    });
-  });
-}
-
-//
-// Perform first step against mongodb
-var MongoDBGSSAPIFirstStep = function(mongo_auth_process, payload, db, username, password, authdb, connection, callback) {
-  // Build the sasl start command
-  var command = {
-      saslStart: 1
-    , mechanism: 'GSSAPI'
-    , payload: payload
-    , autoAuthorize: 1
-  };
-
-  // Execute first sasl step
-  db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) {
-    if(err) return callback(err, false);
-    // Get the payload
-    doc = doc.documents[0];
-    var db_payload = doc.payload;
-
-    mongo_auth_process.transition(doc.payload, function(err, payload) {
-      if(err) return callback(err, false);
-
-      // MongoDB API Second Step
-      MongoDBGSSAPISecondStep(mongo_auth_process, payload, doc, db, username, password, authdb, connection, callback);
-    });
-  });
-}
-
-//
-// Perform first step against mongodb
-var MongoDBGSSAPISecondStep = function(mongo_auth_process, payload, doc, db, username, password, authdb, connection, callback) {
-  // Build Authentication command to send to MongoDB
-  var command = {
-      saslContinue: 1
-    , conversationId: doc.conversationId
-    , payload: payload
-  };
-
-  // Execute the command
-  db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) {
-    if(err) return callback(err, false);
-
-    // Get the result document
-    doc = doc.documents[0];
-
-    // Call next transition for kerberos
-    mongo_auth_process.transition(doc.payload, function(err, payload) {
-      if(err) return callback(err, false);
-
-      // Call the last and third step
-      MongoDBGSSAPIThirdStep(mongo_auth_process, payload, doc, db, username, password, authdb, connection, callback);
-    });    
-  });
-}
-
-var MongoDBGSSAPIThirdStep = function(mongo_auth_process, payload, doc, db, username, password, authdb, connection, callback) {
-  // Build final command
-  var command = {
-      saslContinue: 1
-    , conversationId: doc.conversationId
-    , payload: payload
-  };
-
-  // Let's finish the auth process against mongodb
-  db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) {
-    if(err) return callback(err, false);
-
-    mongo_auth_process.transition(null, function(err, payload) {
-      if(err) return callback(err, false);
-      callback(null, true);
-    });
-  });
-}
-
-exports.authenticate = authenticate;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_plain.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_plain.js b/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_plain.js
deleted file mode 100644
index 594181d..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_plain.js
+++ /dev/null
@@ -1,66 +0,0 @@
-var DbCommand = require('../commands/db_command').DbCommand
-  , utils = require('../utils')
-  , Binary = require('bson').Binary
-  , format = require('util').format;
-
-var authenticate = function(db, username, password, options, callback) {
-  var numberOfConnections = 0;
-  var errorObject = null;
-  
-  if(options['connection'] != null) {
-    //if a connection was explicitly passed on options, then we have only one...
-    numberOfConnections = 1;
-  } else {
-    // Get the amount of connections in the pool to ensure we have authenticated all comments
-    numberOfConnections = db.serverConfig.allRawConnections().length;
-    options['onAll'] = true;
-  }
-
-  // Create payload
-  var payload = new Binary(format("\x00%s\x00%s", username, password));
-
-  // Let's start the sasl process
-  var command = {
-      saslStart: 1
-    , mechanism: 'PLAIN'
-    , payload: payload
-    , autoAuthorize: 1
-  };
-
-  // Grab all the connections
-  var connections = options['connection'] != null ? [options['connection']] : db.serverConfig.allRawConnections();
-
-  // Authenticate all connections
-  for(var i = 0; i < numberOfConnections; i++) {
-    var connection = connections[i];
-    // Execute first sasl step
-    db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, result) {
-      // Count down
-      numberOfConnections = numberOfConnections - 1;
-
-      // Ensure we save any error
-      if(err) {
-        errorObject = err;
-      } else if(result.documents[0].err != null || result.documents[0].errmsg != null){
-        errorObject = utils.toError(result.documents[0]);
-      }
-
-      // Work around the case where the number of connections are 0
-      if(numberOfConnections <= 0 && typeof callback == 'function') {
-        var internalCallback = callback;
-        callback = null;
-
-        if(errorObject == null && result.documents[0].ok == 1) {
-          // We authenticated correctly save the credentials
-          db.serverConfig.auth.add('PLAIN', db.databaseName, username, password);
-          // Return callback
-          internalCallback(errorObject, true);
-        } else {
-          internalCallback(errorObject, false);
-        }
-      }
-    });
-  }
-}
-
-exports.authenticate = authenticate;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_sspi.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_sspi.js b/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_sspi.js
deleted file mode 100644
index 316fa3a..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_sspi.js
+++ /dev/null
@@ -1,135 +0,0 @@
-var DbCommand = require('../commands/db_command').DbCommand
-  , utils = require('../utils')
-  , format = require('util').format;
-
-// Kerberos class
-var Kerberos = null;
-var MongoAuthProcess = null;
-// Try to grab the Kerberos class
-try {
-  Kerberos = require('kerberos').Kerberos
-  // Authentication process for Mongo
-  MongoAuthProcess = require('kerberos').processes.MongoAuthProcess
-} catch(err) {}
-
-var authenticate = function(db, username, password, authdb, options, callback) {
-  var numberOfConnections = 0;
-  var errorObject = null;  
-  // We don't have the Kerberos library
-  if(Kerberos == null) return callback(new Error("Kerberos library is not installed"));
-
-  if(options['connection'] != null) {
-    //if a connection was explicitly passed on options, then we have only one...
-    numberOfConnections = 1;
-  } else {
-    // Get the amount of connections in the pool to ensure we have authenticated all comments
-    numberOfConnections = db.serverConfig.allRawConnections().length;
-    options['onAll'] = true;
-  }
-
-  // Set the sspi server name
-  var gssapiServiceName = options['gssapiServiceName'] || 'mongodb';
-
-  // Grab all the connections
-  var connections = db.serverConfig.allRawConnections();
-  var error = null;
-  
-  // Authenticate all connections
-  for(var i = 0; i < numberOfConnections; i++) {
-    // Start Auth process for a connection
-    SSIPAuthenticate(db, username, password, authdb, gssapiServiceName, connections[i], function(err, result) {
-      // Adjust number of connections left to connect
-      numberOfConnections = numberOfConnections - 1;
-      // If we have an error save it
-      if(err) error = err;
-
-      // We are done
-      if(numberOfConnections == 0) {
-        if(err) return callback(err, false);
-        // We authenticated correctly save the credentials
-        db.serverConfig.auth.add('GSSAPI', db.databaseName, username, password, authdb, gssapiServiceName);
-        // Return valid callback
-        return callback(null, true);
-      }
-    });    
-  }
-}
-
-var SSIPAuthenticate = function(db, username, password, authdb, service_name, connection, callback) {
-  // --------------------------------------------------------------
-  // Async Version
-  // --------------------------------------------------------------
-  var command = {
-      saslStart: 1
-    , mechanism: 'GSSAPI'
-    , payload: ''
-    , autoAuthorize: 1
-  };
-
-  // Create authenticator
-  var mongo_auth_process = new MongoAuthProcess(connection.socketOptions.host, connection.socketOptions.port, service_name);
-
-  // Execute first sasl step
-  db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) {
-    if(err) return callback(err);
-    doc = doc.documents[0];
-
-    mongo_auth_process.init(username, password, function(err) {
-      if(err) return callback(err);
-
-      mongo_auth_process.transition(doc.payload, function(err, payload) {
-        if(err) return callback(err);
-
-        // Perform the next step against mongod
-        var command = {
-            saslContinue: 1
-          , conversationId: doc.conversationId
-          , payload: payload
-        };
-
-        // Execute the command
-        db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) {
-          if(err) return callback(err);
-          doc = doc.documents[0];
-
-          mongo_auth_process.transition(doc.payload, function(err, payload) {
-            if(err) return callback(err);
-
-            // Perform the next step against mongod
-            var command = {
-                saslContinue: 1
-              , conversationId: doc.conversationId
-              , payload: payload
-            };
-
-            // Execute the command
-            db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) {
-              if(err) return callback(err);
-              doc = doc.documents[0];
-              
-              mongo_auth_process.transition(doc.payload, function(err, payload) {
-                // Perform the next step against mongod
-                var command = {
-                    saslContinue: 1
-                  , conversationId: doc.conversationId
-                  , payload: payload
-                };
-
-                // Execute the command
-                db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) {
-                  if(err) return callback(err);
-                  doc = doc.documents[0];
-
-                  if(doc.done) return callback(null, true);
-                  callback(new Error("Authentication failed"), false);
-                });        
-              });
-            });
-          });
-        });
-      });
-    });
-  });  
-}
-
-exports.authenticate = authenticate;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_x509.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_x509.js b/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_x509.js
deleted file mode 100644
index de68030..0000000
--- a/web/demos/package/node_modules/mongodb/lib/mongodb/auth/mongodb_x509.js
+++ /dev/null
@@ -1,62 +0,0 @@
-var DbCommand = require('../commands/db_command').DbCommand
-  , utils = require('../utils')
-  , Binary = require('bson').Binary
-  , format = require('util').format;
-
-var authenticate = function(db, username, password, options, callback) {
-  var numberOfConnections = 0;
-  var errorObject = null;
-  
-  if(options['connection'] != null) {
-    //if a connection was explicitly passed on options, then we have only one...
-    numberOfConnections = 1;
-  } else {
-    // Get the amount of connections in the pool to ensure we have authenticated all comments
-    numberOfConnections = db.serverConfig.allRawConnections().length;
-    options['onAll'] = true;
-  }
-
-  // Let's start the sasl process
-  var command = {
-      authenticate: 1
-    , mechanism: 'MONGODB-X509'
-    , user: username
-  };
-
-  // Grab all the connections
-  var connections = options['connection'] != null ? [options['connection']] : db.serverConfig.allRawConnections();
-
-  // Authenticate all connections
-  for(var i = 0; i < numberOfConnections; i++) {
-    var connection = connections[i];
-    // Execute first sasl step
-    db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, result) {
-      // Count down
-      numberOfConnections = numberOfConnections - 1;
-
-      // Ensure we save any error
-      if(err) {
-        errorObject = err;
-      } else if(result.documents[0].err != null || result.documents[0].errmsg != null){
-        errorObject = utils.toError(result.documents[0]);
-      }
-
-      // Work around the case where the number of connections are 0
-      if(numberOfConnections <= 0 && typeof callback == 'function') {
-        var internalCallback = callback;
-        callback = null;
-
-        if(errorObject == null && result.documents[0].ok == 1) {
-          // We authenticated correctly save the credentials
-          db.serverConfig.auth.add('MONGODB-X509', db.databaseName, username, password);
-          // Return callback
-          internalCallback(errorObject, true);
-        } else {
-          internalCallback(errorObject, false);
-        }
-      }
-    });
-  }
-}
-
-exports.authenticate = authenticate;
\ No newline at end of file


[22/98] [abbrv] [partial] incubator-apex-malhar git commit: Removing all web demos

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/package.json b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/package.json
deleted file mode 100644
index 356b53f..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-  "name": "deep-equal",
-  "version": "0.2.1",
-  "description": "node's assert.deepEqual algorithm",
-  "main": "index.js",
-  "directories": {
-    "lib": ".",
-    "example": "example",
-    "test": "test"
-  },
-  "scripts": {
-    "test": "tape test/*.js"
-  },
-  "devDependencies": {
-    "tape": "~2.3.2"
-  },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/substack/node-deep-equal.git"
-  },
-  "keywords": [
-    "equality",
-    "equal",
-    "compare"
-  ],
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
-  },
-  "license": "MIT",
-  "testling": {
-    "files": "test/*.js",
-    "browsers": {
-      "ie": [
-        6,
-        7,
-        8,
-        9
-      ],
-      "ff": [
-        3.5,
-        10,
-        15
-      ],
-      "chrome": [
-        10,
-        22
-      ],
-      "safari": [
-        5.1
-      ],
-      "opera": [
-        12
-      ]
-    }
-  },
-  "readme": "# deep-equal\n\nNode's `assert.deepEqual() algorithm` as a standalone module.\n\nThis module is around [5 times faster](https://gist.github.com/2790507)\nthan wrapping `assert.deepEqual()` in a `try/catch`.\n\n[![browser support](https://ci.testling.com/substack/node-deep-equal.png)](https://ci.testling.com/substack/node-deep-equal)\n\n[![build status](https://secure.travis-ci.org/substack/node-deep-equal.png)](https://travis-ci.org/substack/node-deep-equal)\n\n# example\n\n``` js\nvar equal = require('deep-equal');\nconsole.dir([\n    equal(\n        { a : [ 2, 3 ], b : [ 4 ] },\n        { a : [ 2, 3 ], b : [ 4 ] }\n    ),\n    equal(\n        { x : 5, y : [6] },\n        { x : 5, y : 6 }\n    )\n]);\n```\n\n# methods\n\n``` js\nvar deepEqual = require('deep-equal')\n```\n\n## deepEqual(a, b, opts)\n\nCompare objects `a` and `b`, returning whether they are equal according to a\nrecursive equality algorithm.\n\nIf `opts.strict` is `true`, use strict equality (`===`) to 
 compare leaf nodes.\nThe default is to use coercive equality (`==`) because that's how\n`assert.deepEqual()` works by default.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install deep-equal\n```\n\n# test\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm test\n```\n\n# license\n\nMIT. Derived largely from node's assert module.\n",
-  "readmeFilename": "readme.markdown",
-  "bugs": {
-    "url": "https://github.com/substack/node-deep-equal/issues"
-  },
-  "homepage": "https://github.com/substack/node-deep-equal",
-  "_id": "deep-equal@0.2.1",
-  "_from": "deep-equal@*"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/readme.markdown
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/readme.markdown b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/readme.markdown
deleted file mode 100644
index f489c2a..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/readme.markdown
+++ /dev/null
@@ -1,61 +0,0 @@
-# deep-equal
-
-Node's `assert.deepEqual() algorithm` as a standalone module.
-
-This module is around [5 times faster](https://gist.github.com/2790507)
-than wrapping `assert.deepEqual()` in a `try/catch`.
-
-[![browser support](https://ci.testling.com/substack/node-deep-equal.png)](https://ci.testling.com/substack/node-deep-equal)
-
-[![build status](https://secure.travis-ci.org/substack/node-deep-equal.png)](https://travis-ci.org/substack/node-deep-equal)
-
-# example
-
-``` js
-var equal = require('deep-equal');
-console.dir([
-    equal(
-        { a : [ 2, 3 ], b : [ 4 ] },
-        { a : [ 2, 3 ], b : [ 4 ] }
-    ),
-    equal(
-        { x : 5, y : [6] },
-        { x : 5, y : 6 }
-    )
-]);
-```
-
-# methods
-
-``` js
-var deepEqual = require('deep-equal')
-```
-
-## deepEqual(a, b, opts)
-
-Compare objects `a` and `b`, returning whether they are equal according to a
-recursive equality algorithm.
-
-If `opts.strict` is `true`, use strict equality (`===`) to compare leaf nodes.
-The default is to use coercive equality (`==`) because that's how
-`assert.deepEqual()` works by default.
-
-# install
-
-With [npm](http://npmjs.org) do:
-
-```
-npm install deep-equal
-```
-
-# test
-
-With [npm](http://npmjs.org) do:
-
-```
-npm test
-```
-
-# license
-
-MIT. Derived largely from node's assert module.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/test/cmp.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/test/cmp.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/test/cmp.js
deleted file mode 100644
index a10186a..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/deep-equal/test/cmp.js
+++ /dev/null
@@ -1,84 +0,0 @@
-var test = require('tape');
-var equal = require('../');
-var isArguments = require('../lib/is_arguments.js');
-var objectKeys = require('../lib/keys.js');
-
-test('equal', function (t) {
-    t.ok(equal(
-        { a : [ 2, 3 ], b : [ 4 ] },
-        { a : [ 2, 3 ], b : [ 4 ] }
-    ));
-    t.end();
-});
-
-test('not equal', function (t) {
-    t.notOk(equal(
-        { x : 5, y : [6] },
-        { x : 5, y : 6 }
-    ));
-    t.end();
-});
-
-test('nested nulls', function (t) {
-    t.ok(equal([ null, null, null ], [ null, null, null ]));
-    t.end();
-});
-
-test('strict equal', function (t) {
-    t.notOk(equal(
-        [ { a: 3 }, { b: 4 } ],
-        [ { a: '3' }, { b: '4' } ],
-        { strict: true }
-    ));
-    t.end();
-});
-
-test('non-objects', function (t) {
-    t.ok(equal(3, 3));
-    t.ok(equal('beep', 'beep'));
-    t.ok(equal('3', 3));
-    t.notOk(equal('3', 3, { strict: true }));
-    t.notOk(equal('3', [3]));
-    t.end();
-});
-
-test('arguments class', function (t) {
-    t.ok(equal(
-        (function(){return arguments})(1,2,3),
-        (function(){return arguments})(1,2,3),
-        "compares arguments"
-    ));
-    t.notOk(equal(
-        (function(){return arguments})(1,2,3),
-        [1,2,3],
-        "differenciates array and arguments"
-    ));
-    t.end();
-});
-
-test('test the arguments shim', function (t) {
-    t.ok(isArguments.supported((function(){return arguments})()));
-    t.notOk(isArguments.supported([1,2,3]));
-    
-    t.ok(isArguments.unsupported((function(){return arguments})()));
-    t.notOk(isArguments.unsupported([1,2,3]));
-    
-    t.end();
-});
-
-test('test the keys shim', function (t) {
-    t.deepEqual(objectKeys.shim({ a: 1, b : 2 }), [ 'a', 'b' ]);
-    t.end();
-});
-
-test('dates', function (t) {
-    var d0 = new Date(1387585278000);
-    var d1 = new Date('Fri Dec 20 2013 16:21:18 GMT-0800 (PST)');
-    t.ok(equal(d0, d1));
-    t.end();
-});
-
-test('buffers', function (t) {
-    t.ok(equal(Buffer('xyz'), Buffer('xyz')));
-    t.end();
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/.npmignore b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/.npmignore
deleted file mode 100644
index 435e4bb..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules
-npm-debug.log
-*.swp

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/.travis.yml b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/.travis.yml
deleted file mode 100644
index 24a76b0..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: node_js
-node_js:
-  - 0.4
-  - 0.6
-  - 0.7
-notifications:
-  irc: "irc.freenode.net#pksunkara"
-  email:
-    on_success: never

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/LICENSE b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/LICENSE
deleted file mode 100644
index c9b44cb..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/README.md
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/README.md b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/README.md
deleted file mode 100644
index dbfa6d4..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/README.md
+++ /dev/null
@@ -1,174 +0,0 @@
-# inflect
-
-customizable inflections for nodejs
-
-## Installation
-
-```bash
-npm install i
-```
-
-## Usage
-
-Require the module before using
-
-```js
-var inflect = require('i')();
-```
-
-All the below api functions can be called directly on a string
-
-```js
-inflect.titleize('messages to store') // === 'Messages To Store'
-'messages to store'.titleize // === 'Messages To Store'
-```
-
-only if `true` is passed while initiating
-
-```js
-var inflect = require('i')(true);
-```
-
-### Pluralize
-
-```js
-inflect.pluralize('person'); // === 'people'
-inflect.pluralize('octopus'); // === 'octopi'
-inflect.pluralize('Hat'); // === 'Hats'
-```
-
-### Singularize
-
-```js
-inflect.singularize('people'); // === 'person'
-inflect.singularize('octopi'); // === 'octopus'
-inflect.singularize('Hats'); // === 'Hat'
-```
-
-### Camelize
-
-```js
-inflect.camelize('message_properties'); // === 'MessageProperties'
-inflect.camelize('message_properties', false); // === 'messageProperties'
-```
-
-### Underscore
-
-```js
-inflect.underscore('MessageProperties'); // === 'message_properties'
-inflect.underscore('messageProperties'); // === 'message_properties'
-```
-
-### Humanize
-
-```js
-inflect.humanize('message_id'); // === 'Message'
-```
-
-### Dasherize
-
-```js
-inflect.dasherize('message_properties'); // === 'message-properties'
-inflect.dasherize('Message Properties'); // === 'Message Properties'
-```
-
-### Titleize
-
-```js
-inflect.titleize('message_properties'); // === 'Message Properties'
-inflect.titleize('message properties to keep'); // === 'Message Properties to Keep'
-```
-
-### Demodulize
-
-```js
-inflect.demodulize('Message.Bus.Properties'); // === 'Properties'
-```
-
-### Tableize
-
-```js
-inflect.tableize('MessageBusProperty'); // === 'message_bus_properties'
-```
-
-### Classify
-
-```js
-inflect.classify('message_bus_properties'); // === 'MessageBusProperty'
-```
-
-### Foreign key
-
-```js
-inflect.foreign_key('MessageBusProperty'); // === 'message_bus_property_id'
-inflect.foreign_key('MessageBusProperty', false); // === 'message_bus_propertyid'
-```
-
-### Ordinalize
-
-```js
-inflect.ordinalize( '1' ); // === '1st'
-```
-
-## Custom rules for inflection
-
-### Custom plural
-
-We can use regexp in any of these custom rules
-
-```js
-inflect.inflections.plural('person', 'guys');
-inflect.pluralize('person'); // === 'guys'
-inflect.singularize('guys'); // === 'guy'
-```
-
-### Custom singular
-
-```js
-inflect.inflections.singular('guys', 'person')
-inflect.singularize('guys'); // === 'person'
-inflect.pluralize('person'); // === 'people'
-```
-
-### Custom irregular
-
-```js
-inflect.inflections.irregular('person', 'guys')
-inflect.pluralize('person'); // === 'guys'
-inflect.singularize('guys'); // === 'person'
-```
-
-### Custom human
-
-```js
-inflect.inflections.human(/^(.*)_cnt$/i, '$1_count');
-inflect.inflections.humanize('jargon_cnt'); // === 'Jargon count'
-```
-
-### Custom uncountable
-
-```js
-inflect.inflections.uncountable('oil')
-inflect.pluralize('oil'); // === 'oil'
-inflect.singularize('oil'); // === 'oil'
-```
-
-## Contributors
-Here is a list of [Contributors](http://github.com/pksunkara/inflect/contributors)
-
-### TODO
-
-- More obscure test cases
-
-__I accept pull requests and guarantee a reply back within a day__
-
-## License
-MIT/X11
-
-## Bug Reports
-Report [here](http://github.com/pksunkara/inflect/issues). __Guaranteed reply within a day__.
-
-## Contact
-Pavan Kumar Sunkara (pavan.sss1991@gmail.com)
-
-Follow me on [github](https://github.com/users/follow?target=pksunkara), [twitter](http://twitter.com/pksunkara)

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/defaults.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/defaults.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/defaults.js
deleted file mode 100644
index ac26a50..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/defaults.js
+++ /dev/null
@@ -1,63 +0,0 @@
-// Default inflections
-module.exports = function (inflect) {
-
-  inflect.plural(/$/, 's');
-  inflect.plural(/s$/i, 's');
-  inflect.plural(/(ax|test)is$/i, '$1es');
-  inflect.plural(/(octop|vir)us$/i, '$1i');
-  inflect.plural(/(octop|vir)i$/i, '$1i');
-  inflect.plural(/(alias|status)$/i, '$1es');
-  inflect.plural(/(bu)s$/i, '$1ses');
-  inflect.plural(/(buffal|tomat)o$/i, '$1oes');
-  inflect.plural(/([ti])um$/i, '$1a');
-  inflect.plural(/([ti])a$/i, '$1a');
-  inflect.plural(/sis$/i, 'ses');
-  inflect.plural(/(?:([^f])fe|([lr])f)$/i, '$1ves');
-  inflect.plural(/(hive)$/i, '$1s');
-  inflect.plural(/([^aeiouy]|qu)y$/i, '$1ies');
-  inflect.plural(/(x|ch|ss|sh)$/i, '$1es');
-  inflect.plural(/(matr|vert|ind)(?:ix|ex)$/i, '$1ices');
-  inflect.plural(/([m|l])ouse$/i, '$1ice');
-  inflect.plural(/([m|l])ice$/i, '$1ice');
-  inflect.plural(/^(ox)$/i, '$1en');
-  inflect.plural(/^(oxen)$/i, '$1');
-  inflect.plural(/(quiz)$/i, '$1zes');
-
-
-  inflect.singular(/s$/i, '');
-  inflect.singular(/(n)ews$/i, '$1ews');
-  inflect.singular(/([ti])a$/i, '$1um');
-  inflect.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i, '$1sis');
-  inflect.singular(/(^analy)ses$/i, '$1sis');
-  inflect.singular(/([^f])ves$/i, '$1fe');
-  inflect.singular(/(hive)s$/i, '$1');
-  inflect.singular(/(tive)s$/i, '$1');
-  inflect.singular(/([lr])ves$/i, '$1f');
-  inflect.singular(/([^aeiouy]|qu)ies$/i, '$1y');
-  inflect.singular(/(s)eries$/i, '$1eries');
-  inflect.singular(/(m)ovies$/i, '$1ovie');
-  inflect.singular(/(x|ch|ss|sh)es$/i, '$1');
-  inflect.singular(/([m|l])ice$/i, '$1ouse');
-  inflect.singular(/(bus)es$/i, '$1');
-  inflect.singular(/(o)es$/i, '$1');
-  inflect.singular(/(shoe)s$/i, '$1');
-  inflect.singular(/(cris|ax|test)es$/i, '$1is');
-  inflect.singular(/(octop|vir)i$/i, '$1us');
-  inflect.singular(/(alias|status)es$/i, '$1');
-  inflect.singular(/^(ox)en/i, '$1');
-  inflect.singular(/(vert|ind)ices$/i, '$1ex');
-  inflect.singular(/(matr)ices$/i, '$1ix');
-  inflect.singular(/(quiz)zes$/i, '$1');
-  inflect.singular(/(database)s$/i, '$1');
-
-  inflect.irregular('child', 'children');
-  inflect.irregular('person', 'people');
-  inflect.irregular('man', 'men');
-  inflect.irregular('child', 'children');
-  inflect.irregular('sex', 'sexes');
-  inflect.irregular('move', 'moves');
-  inflect.irregular('cow', 'kine');
-  inflect.irregular('zombie', 'zombies');
-
-  inflect.uncountable(['equipment', 'information', 'rice', 'money', 'species', 'series', 'fish', 'sheep', 'jeans']);
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/inflect.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/inflect.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/inflect.js
deleted file mode 100644
index 5e0cc70..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/inflect.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// Requiring modules
-
-module.exports = function (attach) {
-  var methods = require('./methods');
-
-  if (attach) {
-    require('./native')(methods);
-  }
-
-  return methods
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/inflections.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/inflections.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/inflections.js
deleted file mode 100644
index 2808a48..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/inflections.js
+++ /dev/null
@@ -1,116 +0,0 @@
-// A singleton instance of this class is yielded by Inflector.inflections, which can then be used to specify additional
-// inflection rules. Examples:
-//
-//     BulletSupport.Inflector.inflect ($) ->
-//       $.plural /^(ox)$/i, '$1en'
-//       $.singular /^(ox)en/i, '$1'
-//
-//       $.irregular 'octopus', 'octopi'
-//
-//       $.uncountable "equipment"
-//
-// New rules are added at the top. So in the example above, the irregular rule for octopus will now be the first of the
-// pluralization and singularization rules that is runs. This guarantees that your rules run before any of the rules that may
-// already have been loaded.
-
-var util = require('./util');
-
-var Inflections = function () {
-  this.plurals = [];
-  this.singulars = [];
-  this.uncountables = [];
-  this.humans = [];
-  require('./defaults')(this);
-  return this;
-};
-
-// Specifies a new pluralization rule and its replacement. The rule can either be a string or a regular expression.
-// The replacement should always be a string that may include references to the matched data from the rule.
-Inflections.prototype.plural = function (rule, replacement) {
-  if (typeof rule == 'string') {
-    this.uncountables = util.array.del(this.uncountables, rule);
-  }
-  this.uncountables = util.array.del(this.uncountables, replacement);
-  this.plurals.unshift([rule, replacement]);
-};
-
-// Specifies a new singularization rule and its replacement. The rule can either be a string or a regular expression.
-// The replacement should always be a string that may include references to the matched data from the rule.
-Inflections.prototype.singular = function (rule, replacement) {
-  if (typeof rule == 'string') {
-    this.uncountables = util.array.del(this.uncountables, rule);
-  }
-  this.uncountables = util.array.del(this.uncountables, replacement);
-  this.singulars.unshift([rule, replacement]);
-};
-
-// Specifies a new irregular that applies to both pluralization and singularization at the same time. This can only be used
-// for strings, not regular expressions. You simply pass the irregular in singular and plural form.
-//
-//     irregular 'octopus', 'octopi'
-//     irregular 'person', 'people'
-Inflections.prototype.irregular =  function (singular, plural) {
-  this.uncountables = util.array.del(this.uncountables, singular);
-  this.uncountables = util.array.del(this.uncountables, plural);
-  if (singular[0].toUpperCase() == plural[0].toUpperCase()) {
-    this.plural(new RegExp("(" + singular[0] + ")" + singular.slice(1) + "$", "i"), '$1' + plural.slice(1));
-    this.plural(new RegExp("(" + plural[0] + ")" + plural.slice(1) + "$", "i"), '$1' + plural.slice(1));
-    this.singular(new RegExp("(" + plural[0] + ")" + plural.slice(1) + "$", "i"), '$1' + singular.slice(1));
-  } else {
-    this.plural(new RegExp("" + (singular[0].toUpperCase()) + singular.slice(1) + "$"), plural[0].toUpperCase() + plural.slice(1));
-    this.plural(new RegExp("" + (singular[0].toLowerCase()) + singular.slice(1) + "$"), plural[0].toLowerCase() + plural.slice(1));
-    this.plural(new RegExp("" + (plural[0].toUpperCase()) + plural.slice(1) + "$"), plural[0].toUpperCase() + plural.slice(1));
-    this.plural(new RegExp("" + (plural[0].toLowerCase()) + plural.slice(1) + "$"), plural[0].toLowerCase() + plural.slice(1));
-    this.singular(new RegExp("" + (plural[0].toUpperCase()) + plural.slice(1) + "$"), singular[0].toUpperCase() + singular.slice(1));
-    this.singular(new RegExp("" + (plural[0].toLowerCase()) + plural.slice(1) + "$"), singular[0].toLowerCase() + singular.slice(1));
-  }
-};
-
-// Specifies a humanized form of a string by a regular expression rule or by a string mapping.
-// When using a regular expression based replacement, the normal humanize formatting is called after the replacement.
-// When a string is used, the human form should be specified as desired (example: 'The name', not 'the_name')
-//
-//     human /(.*)_cnt$/i, '$1_count'
-//     human "legacy_col_person_name", "Name"
-Inflections.prototype.human = function (rule, replacement) {
-  this.humans.unshift([rule, replacement]);
-}
-
-// Add uncountable words that shouldn't be attempted inflected.
-//
-//     uncountable "money"
-//     uncountable ["money", "information"]
-Inflections.prototype.uncountable = function (words) {
-  this.uncountables = this.uncountables.concat(words);
-}
-
-// Clears the loaded inflections within a given scope (default is _'all'_).
-// Give the scope as a symbol of the inflection type, the options are: _'plurals'_,
-// _'singulars'_, _'uncountables'_, _'humans'_.
-//
-//     clear 'all'
-//     clear 'plurals'
-Inflections.prototype.clear = function (scope) {
-  if (scope == null) scope = 'all';
-  switch (scope) {
-    case 'all':
-      this.plurals = [];
-      this.singulars = [];
-      this.uncountables = [];
-      this.humans = [];
-    default:
-      this[scope] = [];
-  }
-}
-
-// Clears the loaded inflections and initializes them to [default](../inflections.html)
-Inflections.prototype.default = function () {
-  this.plurals = [];
-  this.singulars = [];
-  this.uncountables = [];
-  this.humans = [];
-  require('./defaults')(this);
-  return this;
-};
-
-module.exports = new Inflections();

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/methods.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/methods.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/methods.js
deleted file mode 100644
index 293dd9d..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/methods.js
+++ /dev/null
@@ -1,233 +0,0 @@
-// The Inflector transforms words from singular to plural, class names to table names, modularized class names to ones without,
-// and class names to foreign keys. The default inflections for pluralization, singularization, and uncountable words are kept
-// in inflections.coffee
-//
-// If you discover an incorrect inflection and require it for your application, you'll need
-// to correct it yourself (explained below).
-
-var util = require('./util');
-
-var inflect = module.exports;
-
-// Import [inflections](inflections.html) instance
-inflect.inflections = require('./inflections')
-
-// Gives easy access to add inflections to this class
-inflect.inflect = function (inflections_function) {
-  inflections_function(inflect.inflections);
-};
-
-// By default, _camelize_ converts strings to UpperCamelCase. If the argument to _camelize_
-// is set to _false_ then _camelize_ produces lowerCamelCase.
-//
-// _camelize_ will also convert '/' to '.' which is useful for converting paths to namespaces.
-//
-//     "bullet_record".camelize()             // => "BulletRecord"
-//     "bullet_record".camelize(false)        // => "bulletRecord"
-//     "bullet_record/errors".camelize()      // => "BulletRecord.Errors"
-//     "bullet_record/errors".camelize(false) // => "bulletRecord.Errors"
-//
-// As a rule of thumb you can think of _camelize_ as the inverse of _underscore_,
-// though there are cases where that does not hold:
-//
-//     "SSLError".underscore.camelize // => "SslError"
-inflect.camelize = function(lower_case_and_underscored_word, first_letter_in_uppercase) {
-  var result;
-  if (first_letter_in_uppercase == null) first_letter_in_uppercase = true;
-  result = util.string.gsub(lower_case_and_underscored_word, /\/(.?)/, function($) {
-    return "." + (util.string.upcase($[1]));
-  });
-  result = util.string.gsub(result, /(?:_)(.)/, function($) {
-    return util.string.upcase($[1]);
-  });
-  if (first_letter_in_uppercase) {
-    return util.string.upcase(result);
-  } else {
-    return util.string.downcase(result);
-  }
-};
-
-// Makes an underscored, lowercase form from the expression in the string.
-//
-// Changes '.' to '/' to convert namespaces to paths.
-//
-//     "BulletRecord".underscore()         // => "bullet_record"
-//     "BulletRecord.Errors".underscore()  // => "bullet_record/errors"
-//
-// As a rule of thumb you can think of +underscore+ as the inverse of +camelize+,
-// though there are cases where that does not hold:
-//
-//     "SSLError".underscore().camelize() // => "SslError"
-inflect.underscore = function (camel_cased_word) {
-  var self;
-  self = util.string.gsub(camel_cased_word, /\./, '/');
-  self = util.string.gsub(self, /([A-Z]+)([A-Z][a-z])/, "$1_$2");
-  self = util.string.gsub(self, /([a-z\d])([A-Z])/, "$1_$2");
-  self = util.string.gsub(self, /-/, '_');
-  return self.toLowerCase();
-};
-
-// Replaces underscores with dashes in the string.
-//
-//     "puni_puni".dasherize()   // => "puni-puni"
-inflect.dasherize = function (underscored_word) {
-  return util.string.gsub(underscored_word, /_/, '-');
-};
-
-// Removes the module part from the expression in the string.
-//
-//     "BulletRecord.String.Inflections".demodulize() // => "Inflections"
-//     "Inflections".demodulize()                     // => "Inflections"
-inflect.demodulize = function (class_name_in_module) {
-  return util.string.gsub(class_name_in_module, /^.*\./, '');
-};
-
-// Creates a foreign key name from a class name.
-// _separate_class_name_and_id_with_underscore_ sets whether
-// the method should put '_' between the name and 'id'.
-//
-//     "Message".foreign_key()      // => "message_id"
-//     "Message".foreign_key(false) // => "messageid"
-//     "Admin::Post".foreign_key()  // => "post_id"
-inflect.foreign_key = function (class_name, separate_class_name_and_id_with_underscore) {
-  if (separate_class_name_and_id_with_underscore == null) {
-    separate_class_name_and_id_with_underscore = true;
-  }
-  return inflect.underscore(inflect.demodulize(class_name)) + (separate_class_name_and_id_with_underscore ? "_id" : "id");
-};
-
-// Turns a number into an ordinal string used to denote the position in an
-// ordered sequence such as 1st, 2nd, 3rd, 4th.
-//
-//     ordinalize(1)     // => "1st"
-//     ordinalize(2)     // => "2nd"
-//     ordinalize(1002)  // => "1002nd"
-//     ordinalize(1003)  // => "1003rd"
-//     ordinalize(-11)   // => "-11th"
-//     ordinalize(-1021) // => "-1021st"
-inflect.ordinalize = function (number) {
-  var _ref;
-  number = parseInt(number);
-  if ((_ref = Math.abs(number) % 100) === 11 || _ref === 12 || _ref === 13) {
-    return "" + number + "th";
-  } else {
-    switch (Math.abs(number) % 10) {
-      case 1:
-        return "" + number + "st";
-      case 2:
-        return "" + number + "nd";
-      case 3:
-        return "" + number + "rd";
-      default:
-        return "" + number + "th";
-    }
-  }
-};
-
-// Checks a given word for uncountability
-//
-//     "money".uncountability()     // => true
-//     "my money".uncountability()  // => true
-inflect.uncountability = function (word) {
-  return inflect.inflections.uncountables.some(function(ele, ind, arr) {
-    return word.match(new RegExp("(\\b|_)" + ele + "$", 'i')) != null;
-  });
-};
-
-// Returns the plural form of the word in the string.
-//
-//     "post".pluralize()             // => "posts"
-//     "octopus".pluralize()          // => "octopi"
-//     "sheep".pluralize()            // => "sheep"
-//     "words".pluralize()            // => "words"
-//     "CamelOctopus".pluralize()     // => "CamelOctopi"
-inflect.pluralize = function (word) {
-  var plural, result;
-  result = word;
-  if (word === '' || inflect.uncountability(word)) {
-    return result;
-  } else {
-    for (var i = 0; i < inflect.inflections.plurals.length; i++) {
-      plural = inflect.inflections.plurals[i];
-      result = util.string.gsub(result, plural[0], plural[1]);
-      if (word.match(plural[0]) != null) break;
-    }
-    return result;
-  }
-};
-
-// The reverse of _pluralize_, returns the singular form of a word in a string.
-//
-//     "posts".singularize()            // => "post"
-//     "octopi".singularize()           // => "octopus"
-//     "sheep".singularize()            // => "sheep"
-//     "word".singularize()             // => "word"
-//     "CamelOctopi".singularize()      // => "CamelOctopus"
-inflect.singularize = function (word) {
-  var result, singular;
-  result = word;
-  if (word === '' || inflect.uncountability(word)) {
-    return result;
-  } else {
-    for (var i = 0; i < inflect.inflections.singulars.length; i++) {
-      singular = inflect.inflections.singulars[i];
-      result = util.string.gsub(result, singular[0], singular[1]);
-      if (word.match(singular[0])) break;
-    }
-    return result;
-  }
-};
-
-// Capitalizes the first word and turns underscores into spaces and strips a
-// trailing "_id", if any. Like _titleize_, this is meant for creating pretty output.
-//
-//     "employee_salary".humanize()   // => "Employee salary"
-//     "author_id".humanize()         // => "Author"
-inflect.humanize = function (lower_case_and_underscored_word) {
-  var human, result;
-  result = lower_case_and_underscored_word;
-  for (var i = 0; i < inflect.inflections.humans.length; i++) {
-    human = inflect.inflections.humans[i];
-    result = util.string.gsub(result, human[0], human[1]);
-  }
-  result = util.string.gsub(result, /_id$/, "");
-  result = util.string.gsub(result, /_/, " ");
-  return util.string.capitalize(result, true);
-};
-
-// Capitalizes all the words and replaces some characters in the string to create
-// a nicer looking title. _titleize_ is meant for creating pretty output. It is not
-// used in the Bullet internals.
-//
-//
-//     "man from the boondocks".titleize()   // => "Man From The Boondocks"
-//     "x-men: the last stand".titleize()    // => "X Men: The Last Stand"
-inflect.titleize = function (word) {
-  var self;
-  self = inflect.humanize(inflect.underscore(word));
-  self = util.string.gsub(self, /[^a-zA-Z:']/, ' ');
-  return util.string.capitalize(self);
-};
-
-// Create the name of a table like Bullet does for models to table names. This method
-// uses the _pluralize_ method on the last word in the string.
-//
-//     "RawScaledScorer".tableize()   // => "raw_scaled_scorers"
-//     "egg_and_ham".tableize()       // => "egg_and_hams"
-//     "fancyCategory".tableize()     // => "fancy_categories"
-inflect.tableize = function (class_name) {
-  return inflect.pluralize(inflect.underscore(class_name));
-};
-
-// Create a class name from a plural table name like Bullet does for table names to models.
-// Note that this returns a string and not a Class.
-//
-//     "egg_and_hams".classify()   // => "EggAndHam"
-//     "posts".classify()          // => "Post"
-//
-// Singular names are not handled correctly:
-//
-//     "business".classify()       // => "Busines"
-inflect.classify = function (table_name) {
-  return inflect.camelize(inflect.singularize(util.string.gsub(table_name, /.*\./, '')));
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/native.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/native.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/native.js
deleted file mode 100644
index d2c8de1..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/native.js
+++ /dev/null
@@ -1,26 +0,0 @@
-module.exports = function (obj) {
-
-  var addProperty = function (method, func) {
-    String.prototype.__defineGetter__(method, func);
-  }
-
-  var stringPrototypeBlacklist = [
-    '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', 'charAt', 'constructor',
-    'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf', 'charCodeAt',
-    'indexOf', 'lastIndexof', 'length', 'localeCompare', 'match', 'replace', 'search', 'slice', 'split', 'substring',
-    'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toUpperCase', 'trim', 'trimLeft', 'trimRight', 'gsub'
-  ];
-
-  Object.keys(obj).forEach(function (key) {
-    if (key != 'inflect' && key != 'inflections') {
-      if (stringPrototypeBlacklist.indexOf(key) !== -1) {
-        console.log('warn: You should not override String.prototype.' + key);
-      } else {
-        addProperty(key, function () {
-          return obj[key](this);
-        });
-      }
-    }
-  });
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/util.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/util.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/util.js
deleted file mode 100644
index 87ebd3e..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/lib/util.js
+++ /dev/null
@@ -1,136 +0,0 @@
-// Some utility functions in js
-
-var u = module.exports = {
-  array: {
-    // Returns a copy of the array with the value removed once
-    //
-    //     [1, 2, 3, 1].del 1 #=> [2, 3, 1]
-    //     [1, 2, 3].del 4    #=> [1, 2, 3]
-    del: function (arr, val) {
-      var index = arr.indexOf(val);
-      if (index != -1) {
-        if (index == 0) {
-         return arr.slice(1)
-        } else {
-          return arr.slice(0, index).concat(arr.slice(index+1));
-        }
-      } else {
-        return arr;
-      }
-    },
-
-    // Returns the first element of the array
-    //
-    //     [1, 2, 3].first() #=> 1
-    first: function(arr) {
-      return arr[0];
-    },
-
-    // Returns the last element of the array
-    //
-    //     [1, 2, 3].last()  #=> 3
-    last: function(arr) {
-      return arr[arr.length-1];
-    }
-  },
-  string: {
-    // Returns a copy of str with all occurrences of pattern replaced with either replacement or the return value of a function.
-    // The pattern will typically be a Regexp; if it is a String then no regular expression metacharacters will be interpreted
-    // (that is /\d/ will match a digit, but ā€˜\dā€™ will match a backslash followed by a ā€˜dā€™).
-    //
-    // In the function form, the current match object is passed in as a parameter to the function, and variables such as
-    // $[1], $[2], $[3] (where $ is the match object) will be set appropriately. The value returned by the function will be
-    // substituted for the match on each call.
-    //
-    // The result inherits any tainting in the original string or any supplied replacement string.
-    //
-    //     "hello".gsub /[aeiou]/, '*'      #=> "h*ll*"
-    //     "hello".gsub /[aeiou]/, '<$1>'   #=> "h<e>ll<o>"
-    //     "hello".gsub /[aeiou]/, ($) {
-    //       "<#{$[1]}>"                    #=> "h<e>ll<o>"
-    //
-    gsub: function (str, pattern, replacement) {
-      var i, match, matchCmpr, matchCmprPrev, replacementStr, result, self;
-      if (!((pattern != null) && (replacement != null))) return u.string.value(str);
-      result = '';
-      self = str;
-      while (self.length > 0) {
-        if ((match = self.match(pattern))) {
-          result += self.slice(0, match.index);
-          if (typeof replacement === 'function') {
-            match[1] = match[1] || match[0];
-            result += replacement(match);
-          } else if (replacement.match(/\$[1-9]/)) {
-            matchCmprPrev = match;
-            matchCmpr = u.array.del(match, void 0);
-            while (matchCmpr !== matchCmprPrev) {
-              matchCmprPrev = matchCmpr;
-              matchCmpr = u.array.del(matchCmpr, void 0);
-            }
-            match[1] = match[1] || match[0];
-            replacementStr = replacement;
-            for (i = 1; i <= 9; i++) {
-              if (matchCmpr[i]) {
-                replacementStr = u.string.gsub(replacementStr, new RegExp("\\\$" + i), matchCmpr[i]);
-              }
-            }
-            result += replacementStr;
-          } else {
-            result += replacement;
-          }
-          self = self.slice(match.index + match[0].length);
-        } else {
-          result += self;
-          self = '';
-        }
-      }
-      return result;
-    },
-
-    // Returns a copy of the String with the first letter being upper case
-    //
-    //     "hello".upcase #=> "Hello"
-    upcase: function(str) {
-      var self = u.string.gsub(str, /_([a-z])/, function ($) {
-        return "_" + $[1].toUpperCase();
-      });
-      self = u.string.gsub(self, /\/([a-z])/, function ($) {
-        return "/" + $[1].toUpperCase();
-      });
-      return self[0].toUpperCase() + self.substr(1);
-    },
-
-    // Returns a copy of capitalized string
-    //
-    //     "employee salary" #=> "Employee Salary"
-    capitalize: function (str, spaces) {
-      var self = str.toLowerCase();
-      if(!spaces) {
-        self = u.string.gsub(self, /\s([a-z])/, function ($) {
-          return " " + $[1].toUpperCase();
-        });
-      }
-      return self[0].toUpperCase() + self.substr(1);
-    },
-
-    // Returns a copy of the String with the first letter being lower case
-    //
-    //     "HELLO".downcase #=> "hELLO"
-    downcase: function(str) {
-      var self = u.string.gsub(str, /_([A-Z])/, function ($) {
-        return "_" + $[1].toLowerCase();
-      });
-      self = u.string.gsub(self, /\/([A-Z])/, function ($) {
-        return "/" + $[1].toLowerCase();
-      });
-      return self[0].toLowerCase() + self.substr(1);
-    },
-
-    // Returns a string value for the String object
-    //
-    //     "hello".value() #=> "hello"
-    value: function (str) {
-      return str.substr(0);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/package.json b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/package.json
deleted file mode 100644
index 4df7e83..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/package.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "name": "i",
-  "version": "0.3.2",
-  "author": {
-    "name": "Pavan Kumar Sunkara",
-    "email": "pavan.sss1991@gmail.com",
-    "url": "pksunkara.github.com"
-  },
-  "description": "custom inflections for nodejs",
-  "main": "./lib/inflect",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/pksunkara/inflect.git"
-  },
-  "keywords": [
-    "singular",
-    "plural",
-    "camelize",
-    "underscore",
-    "dasherize",
-    "demodulize",
-    "ordinalize",
-    "uncountable",
-    "pluralize",
-    "singularize",
-    "titleize",
-    "tableize",
-    "classify",
-    "foreign_key"
-  ],
-  "homepage": "http://pksunkara.github.com/inflect",
-  "scripts": {
-    "test": "./node_modules/.bin/vows --spec $(find test -name '*-test.js')"
-  },
-  "contributors": [
-    {
-      "name": "Pavan Kumar Sunkara",
-      "email": "pavan.sss1991@gmail.com"
-    }
-  ],
-  "dependencies": {},
-  "devDependencies": {
-    "vows": "~0.6.1"
-  },
-  "engines": {
-    "node": ">=0.4"
-  },
-  "bugs": {
-    "url": "https://github.com/pksunkara/inflect/issues"
-  },
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": "https://github.com/pksunkara/inflect/raw/master/LICENSE"
-    }
-  ],
-  "readme": "# inflect\n\ncustomizable inflections for nodejs\n\n## Installation\n\n```bash\nnpm install i\n```\n\n## Usage\n\nRequire the module before using\n\n```js\nvar inflect = require('i')();\n```\n\nAll the below api functions can be called directly on a string\n\n```js\ninflect.titleize('messages to store') // === 'Messages To Store'\n'messages to store'.titleize // === 'Messages To Store'\n```\n\nonly if `true` is passed while initiating\n\n```js\nvar inflect = require('i')(true);\n```\n\n### Pluralize\n\n```js\ninflect.pluralize('person'); // === 'people'\ninflect.pluralize('octopus'); // === 'octopi'\ninflect.pluralize('Hat'); // === 'Hats'\n```\n\n### Singularize\n\n```js\ninflect.singularize('people'); // === 'person'\ninflect.singularize('octopi'); // === 'octopus'\ninflect.singularize('Hats'); // === 'Hat'\n```\n\n### Camelize\n\n```js\ninflect.camelize('message_properties'); // === 'MessageProperties'\ninflect.camelize('message_properties', false); // === 'messagePr
 operties'\n```\n\n### Underscore\n\n```js\ninflect.underscore('MessageProperties'); // === 'message_properties'\ninflect.underscore('messageProperties'); // === 'message_properties'\n```\n\n### Humanize\n\n```js\ninflect.humanize('message_id'); // === 'Message'\n```\n\n### Dasherize\n\n```js\ninflect.dasherize('message_properties'); // === 'message-properties'\ninflect.dasherize('Message Properties'); // === 'Message Properties'\n```\n\n### Titleize\n\n```js\ninflect.titleize('message_properties'); // === 'Message Properties'\ninflect.titleize('message properties to keep'); // === 'Message Properties to Keep'\n```\n\n### Demodulize\n\n```js\ninflect.demodulize('Message.Bus.Properties'); // === 'Properties'\n```\n\n### Tableize\n\n```js\ninflect.tableize('MessageBusProperty'); // === 'message_bus_properties'\n```\n\n### Classify\n\n```js\ninflect.classify('message_bus_properties'); // === 'MessageBusProperty'\n```\n\n### Foreign key\n\n```js\ninflect.foreign_key('MessageBusProperty')
 ; // === 'message_bus_property_id'\ninflect.foreign_key('MessageBusProperty', false); // === 'message_bus_propertyid'\n```\n\n### Ordinalize\n\n```js\ninflect.ordinalize( '1' ); // === '1st'\n```\n\n## Custom rules for inflection\n\n### Custom plural\n\nWe can use regexp in any of these custom rules\n\n```js\ninflect.inflections.plural('person', 'guys');\ninflect.pluralize('person'); // === 'guys'\ninflect.singularize('guys'); // === 'guy'\n```\n\n### Custom singular\n\n```js\ninflect.inflections.singular('guys', 'person')\ninflect.singularize('guys'); // === 'person'\ninflect.pluralize('person'); // === 'people'\n```\n\n### Custom irregular\n\n```js\ninflect.inflections.irregular('person', 'guys')\ninflect.pluralize('person'); // === 'guys'\ninflect.singularize('guys'); // === 'person'\n```\n\n### Custom human\n\n```js\ninflect.inflections.human(/^(.*)_cnt$/i, '$1_count');\ninflect.inflections.humanize('jargon_cnt'); // === 'Jargon count'\n```\n\n### Custom uncountable\n\n```js\nin
 flect.inflections.uncountable('oil')\ninflect.pluralize('oil'); // === 'oil'\ninflect.singularize('oil'); // === 'oil'\n```\n\n## Contributors\nHere is a list of [Contributors](http://github.com/pksunkara/inflect/contributors)\n\n### TODO\n\n- More obscure test cases\n\n__I accept pull requests and guarantee a reply back within a day__\n\n## License\nMIT/X11\n\n## Bug Reports\nReport [here](http://github.com/pksunkara/inflect/issues). __Guaranteed reply within a day__.\n\n## Contact\nPavan Kumar Sunkara (pavan.sss1991@gmail.com)\n\nFollow me on [github](https://github.com/users/follow?target=pksunkara), [twitter](http://twitter.com/pksunkara)\n",
-  "readmeFilename": "README.md",
-  "_id": "i@0.3.2",
-  "_from": "i@0.3.x"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/inflector/cases.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/inflector/cases.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/inflector/cases.js
deleted file mode 100644
index 04c6030..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/inflector/cases.js
+++ /dev/null
@@ -1,209 +0,0 @@
-(function() {
-
-  module.exports = {
-    SingularToPlural: {
-      "search": "searches",
-      "switch": "switches",
-      "fix": "fixes",
-      "box": "boxes",
-      "process": "processes",
-      "address": "addresses",
-      "case": "cases",
-      "stack": "stacks",
-      "wish": "wishes",
-      "fish": "fish",
-      "jeans": "jeans",
-      "funky jeans": "funky jeans",
-      "my money": "my money",
-      "category": "categories",
-      "query": "queries",
-      "ability": "abilities",
-      "agency": "agencies",
-      "movie": "movies",
-      "archive": "archives",
-      "index": "indices",
-      "wife": "wives",
-      "safe": "saves",
-      "half": "halves",
-      "move": "moves",
-      "salesperson": "salespeople",
-      "person": "people",
-      "spokesman": "spokesmen",
-      "man": "men",
-      "woman": "women",
-      "basis": "bases",
-      "diagnosis": "diagnoses",
-      "diagnosis_a": "diagnosis_as",
-      "datum": "data",
-      "medium": "media",
-      "stadium": "stadia",
-      "analysis": "analyses",
-      "node_child": "node_children",
-      "child": "children",
-      "experience": "experiences",
-      "day": "days",
-      "comment": "comments",
-      "foobar": "foobars",
-      "newsletter": "newsletters",
-      "old_news": "old_news",
-      "news": "news",
-      "series": "series",
-      "species": "species",
-      "quiz": "quizzes",
-      "perspective": "perspectives",
-      "ox": "oxen",
-      "photo": "photos",
-      "buffalo": "buffaloes",
-      "tomato": "tomatoes",
-      "dwarf": "dwarves",
-      "elf": "elves",
-      "information": "information",
-      "equipment": "equipment",
-      "bus": "buses",
-      "status": "statuses",
-      "status_code": "status_codes",
-      "mouse": "mice",
-      "louse": "lice",
-      "house": "houses",
-      "octopus": "octopi",
-      "virus": "viri",
-      "alias": "aliases",
-      "portfolio": "portfolios",
-      "vertex": "vertices",
-      "matrix": "matrices",
-      "matrix_fu": "matrix_fus",
-      "axis": "axes",
-      "testis": "testes",
-      "crisis": "crises",
-      "rice": "rice",
-      "shoe": "shoes",
-      "horse": "horses",
-      "prize": "prizes",
-      "edge": "edges",
-      "cow": "kine",
-      "database": "databases"
-    },
-    CamelToUnderscore: {
-      "Product": "product",
-      "SpecialGuest": "special_guest",
-      "ApplicationController": "application_controller",
-      "Area51Controller": "area51_controller"
-    },
-    UnderscoreToLowerCamel: {
-      "product": "product",
-      "Widget": "widget",
-      "special_guest": "specialGuest",
-      "application_controller": "applicationController",
-      "area51_controller": "area51Controller"
-    },
-    CamelToUnderscoreWithoutReverse: {
-      "HTMLTidy": "html_tidy",
-      "HTMLTidyGenerator": "html_tidy_generator",
-      "FreeBSD": "free_bsd",
-      "HTML": "html"
-    },
-    CamelWithModuleToUnderscoreWithSlash: {
-      "Admin.Product": "admin/product",
-      "Users.Commission.Department": "users/commission/department",
-      "UsersSection.CommissionDepartment": "users_section/commission_department"
-    },
-    ClassNameToForeignKeyWithUnderscore: {
-      "Person": "person_id",
-      "MyApplication.Billing.Account": "account_id"
-    },
-    ClassNameToForeignKeyWithoutUnderscore: {
-      "Person": "personid",
-      "MyApplication.Billing.Account": "accountid"
-    },
-    ClassNameToTableName: {
-      "PrimarySpokesman": "primary_spokesmen",
-      "NodeChild": "node_children"
-    },
-    UnderscoreToHuman: {
-      "employee_salary": "Employee salary",
-      "employee_id": "Employee",
-      "underground": "Underground"
-    },
-    MixtureToTitleCase: {
-      'bullet_record': 'Bullet Record',
-      'BulletRecord': 'Bullet Record',
-      'bullet web service': 'Bullet Web Service',
-      'Bullet Web Service': 'Bullet Web Service',
-      'Bullet web service': 'Bullet Web Service',
-      'bulletwebservice': 'Bulletwebservice',
-      'Bulletwebservice': 'Bulletwebservice',
-      "pavan's code": "Pavan's Code",
-      "Pavan's code": "Pavan's Code",
-      "pavan's Code": "Pavan's Code"
-    },
-    OrdinalNumbers: {
-      "-1": "-1st",
-      "-2": "-2nd",
-      "-3": "-3rd",
-      "-4": "-4th",
-      "-5": "-5th",
-      "-6": "-6th",
-      "-7": "-7th",
-      "-8": "-8th",
-      "-9": "-9th",
-      "-10": "-10th",
-      "-11": "-11th",
-      "-12": "-12th",
-      "-13": "-13th",
-      "-14": "-14th",
-      "-20": "-20th",
-      "-21": "-21st",
-      "-22": "-22nd",
-      "-23": "-23rd",
-      "-24": "-24th",
-      "-100": "-100th",
-      "-101": "-101st",
-      "-102": "-102nd",
-      "-103": "-103rd",
-      "-104": "-104th",
-      "-110": "-110th",
-      "-111": "-111th",
-      "-112": "-112th",
-      "-113": "-113th",
-      "-1000": "-1000th",
-      "-1001": "-1001st",
-      "0": "0th",
-      "1": "1st",
-      "2": "2nd",
-      "3": "3rd",
-      "4": "4th",
-      "5": "5th",
-      "6": "6th",
-      "7": "7th",
-      "8": "8th",
-      "9": "9th",
-      "10": "10th",
-      "11": "11th",
-      "12": "12th",
-      "13": "13th",
-      "14": "14th",
-      "20": "20th",
-      "21": "21st",
-      "22": "22nd",
-      "23": "23rd",
-      "24": "24th",
-      "100": "100th",
-      "101": "101st",
-      "102": "102nd",
-      "103": "103rd",
-      "104": "104th",
-      "110": "110th",
-      "111": "111th",
-      "112": "112th",
-      "113": "113th",
-      "1000": "1000th",
-      "1001": "1001st"
-    },
-    UnderscoresToDashes: {
-      "street": "street",
-      "street_address": "street-address",
-      "person_street_address": "person-street-address"
-    }
-  };
-
-}).call(this);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/inflector/inflections-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/inflector/inflections-test.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/inflector/inflections-test.js
deleted file mode 100644
index be8d960..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/inflector/inflections-test.js
+++ /dev/null
@@ -1,87 +0,0 @@
-(function() {
-  var assert, vows;
-
-  vows = require('vows');
-
-  assert = require('assert');
-
-  vows.describe('Module Inflector inflections').addBatch({
-    'Test inflector inflections': {
-      topic: require('../../lib/inflections'),
-      'clear': {
-        'single': function(topic) {
-          topic.uncountables = [1, 2, 3];
-          topic.humans = [1, 2, 3];
-          topic.clear('uncountables');
-          assert.isEmpty(topic.uncountables);
-          return assert.deepEqual(topic.humans, [1, 2, 3]);
-        },
-        'all': function(topic) {
-          assert.deepEqual(topic.humans, [1, 2, 3]);
-          topic.uncountables = [1, 2, 3];
-          topic.clear();
-          assert.isEmpty(topic.uncountables);
-          return assert.isEmpty(topic.humans);
-        }
-      },
-      'uncountable': {
-        'one item': function(topic) {
-          topic.clear();
-          assert.isEmpty(topic.uncountables);
-          topic.uncountable('money');
-          return assert.deepEqual(topic.uncountables, ['money']);
-        },
-        'many items': function(topic) {
-          topic.clear();
-          assert.isEmpty(topic.uncountables);
-          topic.uncountable(['money', 'rice']);
-          return assert.deepEqual(topic.uncountables, ['money', 'rice']);
-        }
-      },
-      'human': function(topic) {
-        topic.clear();
-        assert.isEmpty(topic.humans);
-        topic.human("legacy_col_person_name", "Name");
-        return assert.deepEqual(topic.humans, [["legacy_col_person_name", "Name"]]);
-      },
-      'plural': function(topic) {
-        topic.clear();
-        assert.isEmpty(topic.plurals);
-        topic.plural('ox', 'oxen');
-        assert.deepEqual(topic.plurals, [['ox', 'oxen']]);
-        topic.uncountable('money');
-        assert.deepEqual(topic.uncountables, ['money']);
-        topic.uncountable('monies');
-        topic.plural('money', 'monies');
-        assert.deepEqual(topic.plurals, [['money', 'monies'], ['ox', 'oxen']]);
-        return assert.isEmpty(topic.uncountables);
-      },
-      'singular': function(topic) {
-        topic.clear();
-        assert.isEmpty(topic.singulars);
-        topic.singular('ox', 'oxen');
-        assert.deepEqual(topic.singulars, [['ox', 'oxen']]);
-        topic.uncountable('money');
-        assert.deepEqual(topic.uncountables, ['money']);
-        topic.uncountable('monies');
-        topic.singular('money', 'monies');
-        assert.deepEqual(topic.singulars, [['money', 'monies'], ['ox', 'oxen']]);
-        return assert.isEmpty(topic.uncountables);
-      },
-      'irregular': function(topic) {
-        topic.clear();
-        topic.uncountable(['octopi', 'octopus']);
-        assert.deepEqual(topic.uncountables, ['octopi', 'octopus']);
-        topic.irregular('octopus', 'octopi');
-        assert.isEmpty(topic.uncountables);
-        assert.equal(topic.singulars[0][0].toString(), /(o)ctopi$/i.toString());
-        assert.equal(topic.singulars[0][1], '$1ctopus');
-        assert.equal(topic.plurals[0][0].toString(), /(o)ctopi$/i.toString());
-        assert.equal(topic.plurals[0][1], '$1ctopi');
-        assert.equal(topic.plurals[1][0].toString(), /(o)ctopus$/i.toString());
-        return assert.equal(topic.plurals[1][1].toString(), '$1ctopi');
-      }
-    }
-  })["export"](module);
-
-}).call(this);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/inflector/methods-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/inflector/methods-test.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/inflector/methods-test.js
deleted file mode 100644
index d3f0c84..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/inflector/methods-test.js
+++ /dev/null
@@ -1,342 +0,0 @@
-(function() {
-  var assert, cases, vows, util;
-
-  vows = require('vows');
-
-  assert = require('assert');
-
-  util = require('../../lib/util');
-
-  cases = require('./cases');
-
-  vows.describe('Module Inflector methods').addBatch({
-    'Test inflector method': {
-      topic: require('../../lib/methods'),
-      'camelize': {
-        'word': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.CamelToUnderscore;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.camelize(words[i]), i));
-          }
-          return _results;
-        },
-        'word with first letter lower': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.UnderscoreToLowerCamel;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.camelize(i, false), words[i]));
-          }
-          return _results;
-        },
-        'path': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.CamelWithModuleToUnderscoreWithSlash;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.camelize(words[i]), i));
-          }
-          return _results;
-        },
-        'path with first letter lower': function(topic) {
-          return assert.equal(topic.camelize('bullet_record/errors', false), 'bulletRecord.Errors');
-        }
-      },
-      'underscore': {
-        'word': function(topic) {
-          var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
-          words = cases.CamelToUnderscore;
-          _ref = Object.keys(words);
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            assert.equal(topic.underscore(i), words[i]);
-          }
-          words = cases.CamelToUnderscoreWithoutReverse;
-          _ref2 = Object.keys(words);
-          _results = [];
-          for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-            i = _ref2[_j];
-            _results.push(assert.equal(topic.underscore(i), words[i]));
-          }
-          return _results;
-        },
-        'path': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.CamelWithModuleToUnderscoreWithSlash;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.underscore(i), words[i]));
-          }
-          return _results;
-        },
-        'from dasherize': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.UnderscoresToDashes;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.underscore(topic.dasherize(i)), i));
-          }
-          return _results;
-        }
-      },
-      'dasherize': {
-        'underscored_word': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.UnderscoresToDashes;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.dasherize(i), words[i]));
-          }
-          return _results;
-        }
-      },
-      'demodulize': {
-        'module name': function(topic) {
-          return assert.equal(topic.demodulize('BulletRecord.CoreExtensions.Inflections'), 'Inflections');
-        },
-        'isolated module name': function(topic) {
-          return assert.equal(topic.demodulize('Inflections'), 'Inflections');
-        }
-      },
-      'foreign_key': {
-        'normal': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.ClassNameToForeignKeyWithoutUnderscore;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.foreign_key(i, false), words[i]));
-          }
-          return _results;
-        },
-        'with_underscore': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.ClassNameToForeignKeyWithUnderscore;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.foreign_key(i), words[i]));
-          }
-          return _results;
-        }
-      },
-      'ordinalize': function(topic) {
-        var i, words, _i, _len, _ref, _results;
-        words = cases.OrdinalNumbers;
-        _ref = Object.keys(words);
-        _results = [];
-        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-          i = _ref[_i];
-          _results.push(assert.equal(topic.ordinalize(i), words[i]));
-        }
-        return _results;
-      }
-    }
-  }).addBatch({
-    'Test inflector inflection methods': {
-      topic: function() {
-        var Inflector;
-        Inflector = require('../../lib/methods');
-        Inflector.inflections["default"]();
-        return Inflector;
-      },
-      'pluralize': {
-        'empty': function(topic) {
-          return assert.equal(topic.pluralize(''), '');
-        },
-        'uncountable': function(topic) {
-          return assert.equal(topic.pluralize('money'), 'money');
-        },
-        'normal': function(topic) {
-          topic.inflections.irregular('octopus', 'octopi');
-          return assert.equal(topic.pluralize('octopus'), 'octopi');
-        },
-        'cases': function(topic) {
-          var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
-          words = cases.SingularToPlural;
-          _ref = Object.keys(words);
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            assert.equal(topic.pluralize(i), words[i]);
-          }
-          _ref2 = Object.keys(words);
-          _results = [];
-          for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-            i = _ref2[_j];
-            _results.push(assert.equal(topic.pluralize(util.string.capitalize(i)), util.string.capitalize(words[i])));
-          }
-          return _results;
-        },
-        'cases plural': function(topic) {
-          var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
-          words = cases.SingularToPlural;
-          _ref = Object.keys(words);
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            assert.equal(topic.pluralize(words[i]), words[i]);
-          }
-          _ref2 = Object.keys(words);
-          _results = [];
-          for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-            i = _ref2[_j];
-            _results.push(assert.equal(topic.pluralize(util.string.capitalize(words[i])), util.string.capitalize(words[i])));
-          }
-          return _results;
-        }
-      },
-      'singuralize': {
-        'empty': function(topic) {
-          return assert.equal(topic.singularize(''), '');
-        },
-        'uncountable': function(topic) {
-          return assert.equal(topic.singularize('money'), 'money');
-        },
-        'normal': function(topic) {
-          topic.inflections.irregular('octopus', 'octopi');
-          return assert.equal(topic.singularize('octopi'), 'octopus');
-        },
-        'cases': function(topic) {
-          var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
-          words = cases.SingularToPlural;
-          _ref = Object.keys(words);
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            assert.equal(topic.singularize(words[i]), i);
-          }
-          _ref2 = Object.keys(words);
-          _results = [];
-          for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-            i = _ref2[_j];
-            _results.push(assert.equal(topic.singularize(util.string.capitalize(words[i])), util.string.capitalize(i)));
-          }
-          return _results;
-        }
-      },
-      'uncountablility': {
-        'normal': function(topic) {
-          var i, words, _i, _j, _k, _len, _len2, _len3, _results;
-          words = topic.inflections.uncountables;
-          for (_i = 0, _len = words.length; _i < _len; _i++) {
-            i = words[_i];
-            assert.equal(topic.singularize(i), i);
-          }
-          for (_j = 0, _len2 = words.length; _j < _len2; _j++) {
-            i = words[_j];
-            assert.equal(topic.pluralize(i), i);
-          }
-          _results = [];
-          for (_k = 0, _len3 = words.length; _k < _len3; _k++) {
-            i = words[_k];
-            _results.push(assert.equal(topic.singularize(i), topic.pluralize(i)));
-          }
-          return _results;
-        },
-        'greedy': function(topic) {
-          var countable_word, uncountable_word;
-          uncountable_word = "ors";
-          countable_word = "sponsor";
-          topic.inflections.uncountable(uncountable_word);
-          assert.equal(topic.singularize(uncountable_word), uncountable_word);
-          assert.equal(topic.pluralize(uncountable_word), uncountable_word);
-          assert.equal(topic.pluralize(uncountable_word), topic.singularize(uncountable_word));
-          assert.equal(topic.singularize(countable_word), 'sponsor');
-          assert.equal(topic.pluralize(countable_word), 'sponsors');
-          return assert.equal(topic.singularize(topic.pluralize(countable_word)), 'sponsor');
-        }
-      },
-      'humanize': {
-        'normal': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.UnderscoreToHuman;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.humanize(i), words[i]));
-          }
-          return _results;
-        },
-        'with rule': function(topic) {
-          topic.inflections.human(/^(.*)_cnt$/i, '$1_count');
-          topic.inflections.human(/^prefix_(.*)$/i, '$1');
-          assert.equal(topic.humanize('jargon_cnt'), 'Jargon count');
-          return assert.equal(topic.humanize('prefix_request'), 'Request');
-        },
-        'with string': function(topic) {
-          topic.inflections.human('col_rpted_bugs', 'Reported bugs');
-          assert.equal(topic.humanize('col_rpted_bugs'), 'Reported bugs');
-          return assert.equal(topic.humanize('COL_rpted_bugs'), 'Col rpted bugs');
-        },
-        'with _id': function(topic) {
-          return assert.equal(topic.humanize('author_id'), 'Author');
-        }
-      },
-      'titleize': {
-        'normal': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.MixtureToTitleCase;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.titleize(i), words[i]));
-          }
-          return _results;
-        },
-        'with hyphens': function(topic) {
-          return assert.equal(topic.titleize('x-men: the last stand'), 'X Men: The Last Stand');
-        }
-      },
-      'tableize': function(topic) {
-        var i, words, _i, _len, _ref, _results;
-        words = cases.ClassNameToTableName;
-        _ref = Object.keys(words);
-        _results = [];
-        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-          i = _ref[_i];
-          _results.push(assert.equal(topic.tableize(i), words[i]));
-        }
-        return _results;
-      },
-      'classify': {
-        'underscore': function(topic) {
-          var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
-          words = cases.ClassNameToTableName;
-          _ref = Object.keys(words);
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            assert.equal(topic.classify(words[i]), i);
-          }
-          _ref2 = Object.keys(words);
-          _results = [];
-          for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-            i = _ref2[_j];
-            _results.push(assert.equal(topic.classify('table_prefix.' + words[i]), i));
-          }
-          return _results;
-        },
-        'normal': function(topic) {
-          topic.inflections.irregular('octopus', 'octopi');
-          return assert.equal(topic.classify('octopi'), 'Octopus');
-        }
-      }
-    }
-  })["export"](module);
-
-}).call(this);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/utils/array-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/utils/array-test.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/utils/array-test.js
deleted file mode 100644
index 95ba2bc..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/utils/array-test.js
+++ /dev/null
@@ -1,39 +0,0 @@
-(function() {
-  var assert, vows, util;
-
-  vows = require('vows');
-
-  assert = require('assert');
-
-  util = require('../../lib/util');
-
-  vows.describe('Module core extension Array').addBatch({
-    'Testing del': {
-      topic: ['a', 'b', 'c'],
-      'element exists': {
-        'first element': function(topic) {
-          return assert.deepEqual(util.array.del(topic, 'a'), ['b', 'c']);
-        },
-        'middle element': function(topic) {
-          return assert.deepEqual(util.array.del(topic, 'b'), ['a', 'c']);
-        },
-        'last element': function(topic) {
-          return assert.deepEqual(util.array.del(topic, 'c'), ['a', 'b']);
-        }
-      },
-      'element does not exist': function(topic) {
-        return assert.deepEqual(util.array.del(topic, 'd'), ['a', 'b', 'c']);
-      }
-    },
-    'Testing utils': {
-      topic: ['a', 'b', 'c'],
-      'first': function(topic) {
-        return assert.equal(util.array.first(topic), 'a');
-      },
-      'last': function(topic) {
-        return assert.equal(util.array.last(topic), 'c');
-      }
-    }
-  })["export"](module);
-
-}).call(this);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/utils/string-test.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/utils/string-test.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/utils/string-test.js
deleted file mode 100644
index e932233..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/i/test/utils/string-test.js
+++ /dev/null
@@ -1,88 +0,0 @@
-(function() {
-  var assert, vows, util;
-
-  vows = require('vows');
-
-  assert = require('assert');
-
-  util = require('../../lib/util');
-
-  vows.describe('Module core extension String').addBatch({
-    'Testing value': {
-      topic: 'bullet',
-      'join the keys': function(topic) {
-        return assert.equal(util.string.value(topic), 'bullet');
-      }
-    },
-    'Testing gsub': {
-      topic: 'bullet',
-      'when no args': function(topic) {
-        return assert.equal(util.string.gsub(topic), 'bullet');
-      },
-      'when only 1 arg': function(topic) {
-        return assert.equal(util.string.gsub(topic, /./), 'bullet');
-      },
-      'when given proper args': function(topic) {
-        return assert.equal(util.string.gsub(topic, /[aeiou]/, '*'), 'b*ll*t');
-      },
-      'when replacement is a function': {
-        'with many groups': function(topic) {
-          var str;
-          str = util.string.gsub(topic, /([aeiou])(.)/, function($) {
-            return "<" + $[1] + ">" + $[2];
-          });
-          return assert.equal(str, 'b<u>ll<e>t');
-        },
-        'with no groups': function(topic) {
-          var str;
-          str = util.string.gsub(topic, /[aeiou]/, function($) {
-            return "<" + $[1] + ">";
-          });
-          return assert.equal(str, 'b<u>ll<e>t');
-        }
-      },
-      'when replacement is special': {
-        'with many groups': function(topic) {
-          return assert.equal(util.string.gsub(topic, /([aeiou])(.)/, '<$1>$2'), 'b<u>ll<e>t');
-        },
-        'with no groups': function(topic) {
-          return assert.equal(util.string.gsub(topic, /[aeiou]/, '<$1>'), 'b<u>ll<e>t');
-        }
-      }
-    },
-    'Testing capitalize': {
-      topic: 'employee salary',
-      'normal': function(topic) {
-        return assert.equal(util.string.capitalize(topic), 'Employee Salary');
-      }
-    },
-    'Testing upcase': {
-      topic: 'bullet',
-      'only first letter should be upcase': function(topic) {
-        return assert.equal(util.string.upcase(topic), 'Bullet');
-      },
-      'letter after underscore': function(topic) {
-        return assert.equal(util.string.upcase('bullet_record'), 'Bullet_Record');
-      },
-      'letter after slash': function(topic) {
-        return assert.equal(util.string.upcase('bullet_record/errors'), 'Bullet_Record/Errors');
-      },
-      'no letter after space': function(topic) {
-        return assert.equal(util.string.upcase('employee salary'), 'Employee salary');
-      }
-    },
-    'Testing downcase': {
-      topic: 'BULLET',
-      'only first letter should be downcase': function(topic) {
-        return assert.equal(util.string.downcase(topic), 'bULLET');
-      },
-      'letter after underscore': function(topic) {
-        return assert.equal(util.string.downcase('BULLET_RECORD'), 'bULLET_rECORD');
-      },
-      'letter after slash': function(topic) {
-        return assert.equal(util.string.downcase('BULLET_RECORD/ERRORS'), 'bULLET_rECORD/eRRORS');
-      }
-    }
-  })["export"](module);
-
-}).call(this);

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/.npmignore
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/.npmignore b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/.npmignore
deleted file mode 100644
index 9303c34..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules/
-npm-debug.log
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/.travis.yml
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/.travis.yml b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/.travis.yml
deleted file mode 100644
index 84fd7ca..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
-  - 0.6
-  - 0.8
-  - 0.9

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/LICENSE
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/LICENSE b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/LICENSE
deleted file mode 100644
index 432d1ae..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright 2010 James Halliday (mail@substack.net)
-
-This project is free software released under the MIT/X11 license:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/examples/pow.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/examples/pow.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/examples/pow.js
deleted file mode 100644
index e692421..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/examples/pow.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var mkdirp = require('mkdirp');
-
-mkdirp('/tmp/foo/bar/baz', function (err) {
-    if (err) console.error(err)
-    else console.log('pow!')
-});

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/index.js
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/index.js b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/index.js
deleted file mode 100644
index fda6de8..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-var path = require('path');
-var fs = require('fs');
-
-module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
-
-function mkdirP (p, mode, f, made) {
-    if (typeof mode === 'function' || mode === undefined) {
-        f = mode;
-        mode = 0777 & (~process.umask());
-    }
-    if (!made) made = null;
-
-    var cb = f || function () {};
-    if (typeof mode === 'string') mode = parseInt(mode, 8);
-    p = path.resolve(p);
-
-    fs.mkdir(p, mode, function (er) {
-        if (!er) {
-            made = made || p;
-            return cb(null, made);
-        }
-        switch (er.code) {
-            case 'ENOENT':
-                mkdirP(path.dirname(p), mode, function (er, made) {
-                    if (er) cb(er, made);
-                    else mkdirP(p, mode, cb, made);
-                });
-                break;
-
-            // In the case of any other error, just see if there's a dir
-            // there already.  If so, then hooray!  If not, then something
-            // is borked.
-            default:
-                fs.stat(p, function (er2, stat) {
-                    // if the stat fails, then that's super weird.
-                    // let the original error be the failure reason.
-                    if (er2 || !stat.isDirectory()) cb(er, made)
-                    else cb(null, made);
-                });
-                break;
-        }
-    });
-}
-
-mkdirP.sync = function sync (p, mode, made) {
-    if (mode === undefined) {
-        mode = 0777 & (~process.umask());
-    }
-    if (!made) made = null;
-
-    if (typeof mode === 'string') mode = parseInt(mode, 8);
-    p = path.resolve(p);
-
-    try {
-        fs.mkdirSync(p, mode);
-        made = made || p;
-    }
-    catch (err0) {
-        switch (err0.code) {
-            case 'ENOENT' :
-                made = sync(path.dirname(p), mode, made);
-                sync(p, mode, made);
-                break;
-
-            // In the case of any other error, just see if there's a dir
-            // there already.  If so, then hooray!  If not, then something
-            // is borked.
-            default:
-                var stat;
-                try {
-                    stat = fs.statSync(p);
-                }
-                catch (err1) {
-                    throw err0;
-                }
-                if (!stat.isDirectory()) throw err0;
-                break;
-        }
-    }
-
-    return made;
-};

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/package.json
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/package.json b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/package.json
deleted file mode 100644
index 504acb6..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "name": "mkdirp",
-  "description": "Recursively mkdir, like `mkdir -p`",
-  "version": "0.3.5",
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
-  },
-  "main": "./index",
-  "keywords": [
-    "mkdir",
-    "directory"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/substack/node-mkdirp.git"
-  },
-  "scripts": {
-    "test": "tap test/*.js"
-  },
-  "devDependencies": {
-    "tap": "~0.4.0"
-  },
-  "license": "MIT",
-  "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n    \nmkdirp('/tmp/foo/bar/baz', function (err) {\n    if (err) console.error(err)\n    else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it def
 aults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n",
-  "readmeFilename": "readme.markdown",
-  "bugs": {
-    "url": "https://github.com/substack/node-mkdirp/issues"
-  },
-  "homepage": "https://github.com/substack/node-mkdirp",
-  "_id": "mkdirp@0.3.5",
-  "_from": "mkdirp@0.x.x"
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1a45507/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/readme.markdown
----------------------------------------------------------------------
diff --git a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/readme.markdown b/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/readme.markdown
deleted file mode 100644
index 83b0216..0000000
--- a/web/demos/package/node_modules/http-proxy/node_modules/utile/node_modules/mkdirp/readme.markdown
+++ /dev/null
@@ -1,63 +0,0 @@
-# mkdirp
-
-Like `mkdir -p`, but in node.js!
-
-[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)
-
-# example
-
-## pow.js
-
-```js
-var mkdirp = require('mkdirp');
-    
-mkdirp('/tmp/foo/bar/baz', function (err) {
-    if (err) console.error(err)
-    else console.log('pow!')
-});
-```
-
-Output
-
-```
-pow!
-```
-
-And now /tmp/foo/bar/baz exists, huzzah!
-
-# methods
-
-```js
-var mkdirp = require('mkdirp');
-```
-
-## mkdirp(dir, mode, cb)
-
-Create a new directory and any necessary subdirectories at `dir` with octal
-permission string `mode`.
-
-If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
-
-`cb(err, made)` fires with the error or the first directory `made`
-that had to be created, if any.
-
-## mkdirp.sync(dir, mode)
-
-Synchronously create a new directory and any necessary subdirectories at `dir`
-with octal permission string `mode`.
-
-If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
-
-Returns the first directory that had to be created, if any.
-
-# install
-
-With [npm](http://npmjs.org) do:
-
-```
-npm install mkdirp
-```
-
-# license
-
-MIT